[comp.unix.questions] Compress Mail via sendmail.cf + rmail script

joe@auspyr.UUCP (01/24/87)

I'm sure I'm not the first to come up with this idea, but I'm planning
on implementing compressed mail between two BSD sites and would like
to know what kind of problems I can expect.


Here is the basic idea:

	1) Defined a string in sendmail.cf that contains site names that
	allow execution of "uncomprmail".

	2) When someone sends mail to one of the above sites, sendmail will
	locally run "comprmail" and ship the file to site!uncomprmail
	via uux. "comprmail" will compress the mail.

	3) recieving end ("uncomprmail") decompresses the mail and runs
	rmail locally with same args.


Sendmail.cf has the following modifications:

	# define sites that uncompress mail
	CC test1 test2 test3

	#
	# someplace in ruleset 0 ...
	# if site name is a site name in $C macro, then run "compress" mailer
	# with host and user set.
	R$=C!$+			$#compress$@$1$:$2		compressed rmail

	#
	# someplace after ruleset 5 (or does it matter?)
	# define the "compress" mailer ...
	Mcompress, P=/bin/sh, F=sDFMhuU, S=13, R=23, M=100000,
		A=/bin/sh /usr/local/uubin/comprmail $h!uncomprmail ($u)


/usr/local/uubin/comprmail contains the following:

	# compress mail and ship to uux
	# sendmail will send args:  site!uncomprmail user
	exec compress | uux $*

/usr/local/uubin/uncomprmail contains the following:

	# uncompress standard in and send to rmail
	# typically, uuxqt will run this with args: user
	exec compress -d | rmail $*

AT the moment, I don't have two BSD 4.2 systems ready to test this.
Can anyone think of any problems that might occure?

-- 
"No matter      Joe Angelo, Sr. Sys. Engineer @ Austec, Inc., San Jose, CA.
where you go,   ARPA: aussjo!joe@lll-tis-b.arpa       PHONE: [408] 279-5533
there you       UUCP: {sdencore,necntc,cbosgd,amdahl,ptsfa,dana}!aussjo!joe
are ..."        UUCP: {styx,imagen,dlb,gould,sci,altnet}!auspyr!joe

meissner@dg_rtp.UUCP (01/25/87)

In article <297@auspyr.UUCP> joe@auspyr.UUCP (Joe Angelo) writes:
>
>	/* Removed stuff about sendmail.cf mods */
> 
> /usr/local/uubin/uncomprmail contains the following:
> 
> 	# uncompress standard in and send to rmail
> 	# typically, uuxqt will run this with args: user
> 	exec compress -d | rmail $*
> 
> AT the moment, I don't have two BSD 4.2 systems ready to test this.
> Can anyone think of any problems that might occure?

    I think the main problem with this, is compress uses full 8-bit bytes
including nulls, etc.  The sendmail I'm familar with (Data General's AOS/VS
version, and probably DG/UX by inference) restricts itself to 7-bit ASCII.
Also various will mailers choke on NULL's (System V's mailx does, and since
it's based on BSD's Mail, that probably does too).  In general when using
mail, it's is best to use some binary -> ascii converter between compress
and the mailer.  Uuencode/uudecode are the best known.  Note, I just learned
by hard experience that atob that comes with compress will add 0-3 null
bytes to the end of the file.
-- 
	Michael Meissner, Data General
	...mcnc!rti-sel!dg_rtp!meissner

guy@gorodish.UUCP (01/29/87)

>In general when using mail, it's is best to use some binary -> ascii
>converter between compress and the mailer.

To quote from RFC 821, "Simple Mail Transfer Protocol":

	DATA (DATA)

	    The receiver treates the lines following the command as
	    mail data from the sender.  This command causes the mail
	    data from the command to be appended to the mail data
	    buffer.  The mail data may contain any of the 128 ASCII
	    character codes.

	    The mail data is terminated by a line containing only a
	    period, that is the character sequence "<CRLF>.<CRLF>".

and

	text line

	    The maximum total length of a text line including the
	    <CRLF> is 1000 characters....

In short, there are plenty of mail *transport* systems out there that
don't support 8-bit transparent data paths, in addition to the mail
user agents that don't.  Michael is completely correct here - with
current mail software, mail messages are ASCII text files; think of
them as such.

joe@auspyr.UUCP (01/30/87)

in article <12296@sun.uucp>, guy%gorodish@Sun.COM (Guy Harris) says:
> 
>>In general when using mail, it's is best to use some binary -> ascii
>>converter between compress and the mailer.
> 
> To quote from RFC 821, "Simple Mail Transfer Protocol":

Somebody has gotten confused here.  My orginal message said nothing
about sending the compressed data via a mailer. It would go threw
a UUX command to a shell script, de-compressed, then mailed in ascii form.

Eg:

	local!mail remote!person 
	|
	|
	sendmail.cf
		|
		|--- remote site is a compressed mail site?
			|(y)
			|
			compress mail | uux - remote!uncompressmail args

	( uucp transfer )
				
	remote!uuxqt
	|
	remote!uncompressmail
		|
		compress -d stdin | rmail args


This would create a compressed transport layer.	
I don't know how to implement this via arpa, perhaps using ftp or
something. But I'm not worried about arpa. Only the UUX and UUXQT
commands would be dealing with the compressed (binary) data in
stdin and stdout, respectively.

Anyways, I have shown that the theory works and will soon post
instructions/scripts for setting up a compressed mail transport
mechanism (within the BSD/sendmail domain of systems); I'm also
working on a batched form that would work similar to batched news.

-- 
"No matter      Joe Angelo, Sr. Sys. Engineer @ Austec, Inc., San Jose, CA.
where you go,   ARPA: aussjo!joe@lll-tis-b.arpa       PHONE: [408] 279-5533
there you       UUCP: {sdencore,necntc,cbosgd,amdahl,ptsfa,dana}!aussjo!joe
are ..."        UUCP: {styx,imagen,dlb,gould,sci,altnet}!auspyr!joe