Path: utzoo!utgpu!water!watmath!clyde!att!rutgers!gatech!utkcs2!moore
From: moore@utkcs2.cs.utk.edu (Keith Moore)
Newsgroups: comp.mail.uucp
Subject: Re: active rerouting
Message-ID: <567@utkcs2.cs.utk.edu>
Date: 28 Sep 88 00:21:24 GMT
References: <4740@b-tech.UUCP> <4747@b-tech.UUCP> <4748@b-tech.UUCP> <6581@chinet.UUCP> <2105@edsews.EDS.COM> <12604@ncoast.UUCP>
Reply-To: moore@utkcs2.cs.utk.edu (Keith Moore)
Organization: CS Dept - U of TN, Knoxville
Lines: 73

In article <12604@ncoast.UUCP> allbery@ncoast.UUCP (Brandon S. Allbery) writes:
>As quoted from <2105@edsews.EDS.COM> by roberts@edsews.EDS.COM (Ted Roberts):
>+---------------
>| In article <6581@chinet.UUCP>, les@chinet.UUCP (Leslie Mikesell) writes:
>| > 
>| > Suppose
>| > you want siteC to route  siteA!siteB!siteC!domain.dom!user or
>| > siteA!siteB!siteC!user@domain.dom.
>| 
>| These are not the same thing.  The first route would send to siteA, then
>| siteB, then siteC and siteC would route to user@domain.dom which they
>| would know how to do since they know how to resolve domain addresses
>| (you hope:-).  The second would attempt to send to domain.dom, then to
>| siteA, then to siteB, then to site C, then to user.  This is because the
>| "@" syntax takes precedence over the "!" syntax.
>+---------------
>
>WRONG!!!  "@" and "!" are used by different networks -- there is NO defined
>precedence between them!  (You're comparing apples to oranges.)  UUCP sites
>give "!" precedence, Internet domain mailers give "@" precedence.

The example quoted assumes an RFC 976 compliant mailer.  One must recognize
that not all uucp-based mail systems are RFC 976 compliant (this is probably
the exception rather than the rule), which is (I think) the point Brandon was
trying to make.

>On ncoast (a UUCP system) "!" has precedence.  Our neighbor "hal" gives "@"
>precedence because they are on the Internet.  This can be quite useful; if I
>want to send mail across the Internet I can mail to hal!foo@bar.COM, thus
>overriding the UUCP route (which may well be slower) that smail would give
>me from a straight "foo@bar.COM".  On your system, you would probably want
>to switch to UUCP only after you got as "close" to the recipient's system as
>possible, so you would want "@" to have higher precedence.  Thus, the
>current system is useful for both of us.  Just don't assume that everyone's
>mailer handles things the same way, as we *are* on different networks.

The caveat here is that "hal" must be careful to ensure that any mixed
bang/@ paths that escape into Internet mail conform to RFC 976.  Also, if
"hal" accepts mixed bang/@ paths at all, it should interpret them according
to RFC 976.  Although you can get away with using hal!foo@bar.com, we
should probably be encouraging people to use hal!bar.com!foo instead,
which *should* work also and had the advantage of being unambiguous.

The ambiguity of the mixed syntax really causes problems with situations
like the following arise:  

I send mail to "node1!node2!node3!node4!user@node5.com" .
node1 has an old-style uucp mailer, so it just strips off its own name,
and sends the mail on to node2.  node2, however, has an RFC 976 compliant
mailer, and so sends the mail (perhaps via a gateway) to node5.com, rather
than to node3.  node5 will then try to send the mail to "node3!node4!user" .  
Surely this is not what I intended, and there is no guarantee that the mail 
will even arrive at node4, since node3 may not be visible to node5.
(Can anyone say how often things like this happen?)

>Things get even more interesting when you try to apply your rules to a
>DecNet network or to the Bitnet as well (on Decnet, does "::" have
>precedence above or below "@"?  How about "!"?  Does Decnet even *care* what
>the relative precedence of "!" and "@" is?)

I think the answer here is that it is undefined.  The safest thing to do seems
to be to rewrite all addresses so that the node::user syntax is never seen
in either the Internet or uucp worlds.  The *best* thing to do is to define 
an MX record for each DECnet node and translate addresses when crossing
a gateway.  The easy thing to do is to rewrite node::user into 
user%node.decnet@well.known.domain .  It's ugly but it does work.
(Of course, within the DECnet world, :: has precedence over anything else!
...and you usually have to put the rest of the address in double quotes.)
-- 
Keith Moore
UT Computer Science Dept.	Internet/CSnet: moore@utkcs2.cs.utk.edu
107 Ayres Hall, UT Campus	BITNET: moore@utkcs1
Knoxville Tennessee 37996-1301	Telephone: +1 615 974 0822