Submitting mail via uux

Tim Evans tkevans at fallst.UUCP
Wed Jul 20 01:36:12 AEST 1988


For reasons unknown, the vendor at our site (also to be unknown) 
chose to process mail addressed outside our network (that is, uucp mail
containing 'bangs') with a shell script which parses the address using
the following, then submits the message via stdout to 'uux'.

"ARG" is the full mail address; "HOST" is the first system name in
the address; "NAME" is the user name to which the mail is finally
addressed (i.e., the last field in the address)

-----------------------------------------
	NAME=`echo "$ARG" | sed "s/.*!//g"`
	HOST=`echo "$ARG" | sed -e "s/![^!]*$//g"`
	[ some sed stuff placing "$ARG" in a temp file, with stdout piped 
	to 'uux' ]
		uux - "${HOST}!rmail ${NAME}"
----------------------------------------

This works fine as long as there is only ONE 'bang' in the address, but
when the address contains more than one 'bang' it creates malformed uucp
work files which are rejected by the first system in the address.
Assuming the address "system1!system2!system3!user" this script results
in a "X." file being sent to system1 containing the following line:

	C rmail!system2 system3!user
	
The proper line should, of course, be:

	C rmail system2!system3!user

Below is a rewrite which I did, hoping to fix up this problem.  Does 
anyone have comments or suggestions to improve it?

"ARG" "HOST" and "NAME" are the same as above; "HOPS" extracts the
intervening hops in the address (between "HOST" and "NAME")
----------------------------------------------------------
	HOST=`echo "$ARG" | awk -F"|" '{ print $1 }'`
	HOPS=`echo "$ARG" | awk -F"|" '
		BEGIN { ORS = "!" } {		# use bang as output separator
			for (i = 1; i <= NF - 1; i++) {	# no bang after last sysname
				if ($i != $1) {
					print $i } } }'`
	NAME=`echo "$ARG" | awk -F"|" '{ print $NF }'`
	# test for null string "HOPS" (only one bang in address)
	if [ -z "$HOPS" ]
	then ADDR="${NAME}"
	else ADDR="${HOPS}!${NAME}"		# last bang added here
	fi
	[ some sed stuff placing "$ARG" in a temp file, with stdout piped 
	to 'uux' ]
		uux - "${HOST}!rmail (${ADDR})"
-----------------------------------------

Thanks
-- 
...!{rutgers|ames|uunet}!mimsy!aplcen!{wb3ffv!fallst|woodb}!tkevans
...!attmail!fallst!tkevans
2201 Brookhaven Court, Fallston, MD  21047
(301) 965-3286



More information about the Comp.unix.wizards mailing list