[comp.mail.uucp] smail doesn't like UUCP hostnames containing periods

riddle@woton.UUCP (Prentiss Riddle ) (05/27/88)

I've just been informed that woton's principal UUCP partner is about to
change its UUCP name from "im4u" to "cs.utexas.edu".  Apparently this
will break smail: in experiments I've tried so far, addresses in the
form "cs.utexas.edu!user" fail to resolve properly and smail attempts a
delivery to "user" on my local system. 

Unless I'm mistaken this happens because smail considers anything
containing a period to be a domain rather than a proper UUCP host and
refuses to resolve to a UUCP address that starts with it. 

Here's the pertinent portion of our old "paths" file:

		im4u	im4u!%s
		smart-host	im4u!%s
		woton	%s

Here's what I've tried to replace it with, without success:

		cs.utexas.edu	cs.utexas.edu!%s
		im4u	cs.utexas.edu!%s
		smart-host	cs.utexas.edu!%s
		woton	%s

Short of persuading our UUCP partner to go by something without periods
(such as a simple "cs"), can anyone suggest a fix or workaround for this
problem?  Thanks.

-- Prentiss Riddle ("Aprendiz de todo, maestro de nada.")
-- Opinions expressed are not necessarily those of my employer.
-- riddle%woton.uucp@cs.utexas.edu  uunet!ut-sally!cs.utexas.edu!woton!riddle

brian@natinst.UUCP (Brian H. Powell) (05/28/88)

In article <1066@woton.UUCP>, riddle@woton.UUCP (Prentiss Riddle ) writes:
> I've just been informed that woton's principal UUCP partner is about to
> change its UUCP name from "im4u" to "cs.utexas.edu".  Apparently this
> will break smail: in experiments I've tried so far, addresses in the
> form "cs.utexas.edu!user" fail to resolve properly and smail attempts a
> delivery to "user" on my local system. 
> 
> Unless I'm mistaken this happens because smail considers anything
> containing a period to be a domain rather than a proper UUCP host and
> refuses to resolve to a UUCP address that starts with it. 

     Im4u's one of my connections also, so I've got the same problem.

     Perhaps the most relevant document is RFC976, which describes the UUCP
Mail Interchange Format Standard.  It basically describes the proper way for
a uucp site to interpret internet-style domain addresses.
     It's not clear that "cs.utexas.edu" is a valid UUCP site name; RFC976
distinguishes "domain" addresses from "uucp" addresses by looking for a
period in the name.  Smail implements RFC976, and it wants all domain
addresses to resolve to a uucp address.  "cs.utexas.edu" is really a uucp
address, but since smail looks for periods, it's unable to resolve it.

     So, I modified the smail sources.  Somebody should probably find
an RFC that says whether my mods are kosher.

     Normally, smail tells the difference between "domain!user" and
"host!user" by looking for a period in the word preceding the first bang.
     My mod is
	If the first word has no periods in it, it's considered a host.
	If the first word contains a period (e.g., cs.utexas.edu), and if
		that word is in the uucpmap, it's considered a host.
	Else it's considered a domain.

     You have to change the parse routine in the file headers.c in the
standard smail distribution.  Here's a patch, wrapped in a shar file for
safety.  Like I said, I'm not sure it's kosher.
     (Also, I haven't run it on too many rigorous tests, especially in the more
bizarre ways that you can send mail to domains, so I'm not positive it works.
It did seem to work okay on about a dozen tests that I've run.)

	THIS IS AN UNOFFICIAL PATCH.  DON'T APPLY IT UNLESS YOU THINK YOU
NEED IT.  Maybe "cs.utexas.edu" won't be the final name, in which case you
probably don't want this patch.

# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by natinst!brian on Fri May 27 10:50:49 CDT 1988
# Contents:  new.patch
 
echo x - new.patch
sed 's/^@//' > "new.patch" <<'@//E*O*F new.patch//'
*** headers.c.old	Fri May 27 09:19:59 1988
--- headers.c	Fri May 27 09:27:50 1988
***************
*** 148,153 ****
--- 148,161 ----
  			return(UUCP);
  		}
  
+ 		{
+ 		char path[SMLBUF];
+ 		int *cost;
+ 
+ 		if(getpath(domain, path, cost) == EX_OK)
+ 			return(UUCP);
+ 		}
+ 
  		if(partv[parts-1][0] == '\0') {
  			partv[parts-1][-1] = '\0'; /* strip trailing . */
  		}
@//E*O*F new.patch//
chmod u=rw,g=r,o=r new.patch
 
echo Inspecting for damage in transit...
temp=/tmp/shar$$; dtemp=/tmp/.shar$$
trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
cat > $temp <<\!!!
      19      56     377 new.patch
!!!
wc  new.patch | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
if [ -s $dtemp ]
then echo "Ouch [diff of wc output]:" ; cat $dtemp
else echo "No problems found."
fi
exit 0


Brian H. Powell				National Instruments Corp.
	brian@natinst.uucp		12109 Technology Blvd.
	ut-sally!im4u!natinst!brian	Austin, Texas 78727-6204
	AppleLink:D0351			(512) 250-9119 x832

or if that doesn't work, you can use brian@sally.utexas.edu.