[net.mail.headers] Quiz - Parse this From line

jordan@ucb-arpa.ARPA (Jordan Hayes) (12/19/85)

	From: hpcnou!dat@hplabsd (Dave Taylor)

 >> From noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd

Simple.

If there's a leading '@', use source-routing. If not, look for
the right-most '@' ... so, send the return message to "hplabsd" ...

Ah, they say -- "but that's not the truth ..."

Humbug.

You can't parse it correctly unless you make some assumptions about
where that address showed up at. If it showed up at a dumb UUCP host
connected to noscvax, you may not have a problem returning it to
there and having noscvax send to mit-mc which would send to hplabsd
which would send to hpfcla!hpcnoe!veeger!hpcnou!dat ... *ugh* !!

However, if the site it came from recieved the message *via* uucp,
but is also an arpanet host (can you say "seismo" "ucbvax" "topaz"
"sdcsvax" "harvard" + a cast of thousands ...), you have a problem,
since it will try to do the "correct" thing I mentioned above about
sending it to hplabsd (BTW: how about your own return address, Dave?)

Such a silly question to ask ... the answer is clear: you can't parse
addresses with multiple (conflicting) syntaxes ... I thought we cleared
this question up a few years ago ... *sigh*

Now: how about the solution? As simple as the answer to Dave's
Question ... uucp needs to use 822 addresses if they expect to get
decent service when getting gatewayed into/out of the Arpanet.

They can do whatever they want between themselves, but when in Rome ...

/jordan

dat@hplabs.ARPA (12/19/85)

Ken Stone of HP-SDD sent me his copy of my recent note and the return
address is the strangest I've seen yet on this network...

 >From noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd Tue Dec 17 13:35:41 1985

The question is - how does one parse this?  There are a LOT of
ambiguities here ... including two '@' addresses and such.  It
seems to me that a decent return address would be parsable in
a unique fashion, rather than this "if the destination machine is
an ARPA gateway then it'll send to (?) hplabsd, if not, then if
it's a BITNET gateway it'll send to MIT-MC.ARPA (through an ARPA
gateway?) else it'll just send it to noscvax and let THEM deal
with it...

Anyone have any pearls of wisdom about all this?

----- for further amusement, the modified From line too...(now wrong) ----

 From: noscvax!hpcnou!dat@hplabsd.ARPA (Dave Taylor)

-----

Are we having fun yet?
					-- Dave

mcgregor@HPLABS.ARPA (12/20/85)

Hey, I can answer this one (sort of).

**Warning** **Warning** **Warning** **Warning** **Warning** **Warning**
**                                                                   **
** Lengthy reply follows, Cognoscenti may wish to trash message now! **
**                                                                   **
**Warning** **Warning** **Warning** **Warning** **Warning** **Warning**

First let me explain how it can be correctly parsed, and then go over
the assumptions.

There are three basic forms here:

RFC 822 simple address:   user@host
RFC 822 explicit routing: @relay:user@host
UUCP routing:             host1!host2!...!user

Lets build up the address from its parts:

       hpfcla!hpcnoe!veeger!hpcnou!dat

is a legal UUCP routing address. Since RFC 822 doesn't describe
any substructure for the "user" field, this can be treated as the
"user" portion of a RFC 822 address (user@hplabsd).

       hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd

At this point, we can go from an RFC 822 simple address to
an explicit routing address where MIT-MC.ARPA is the relay.

       @MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd

Now, UUCP routing doesn't break up user parts either. So we
can treat the above as the user part ofnoscvax!user.

       noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd

This address will work as a TO address IF the following are true:

 - The machine originating the message only talks UUCP syntax.
 - noscvax can receive UUCP traffic from the machine sending the mail.
 - noscvax can send RFC822 mail to MIT-MC.ARPA
 - MIT-MC.ARPA either ONLY understands RFC-822, or
   MIT-MC.ARPA always gives RFC822 precedence over UUCP, or
   MIT-MC.ARPA talks to hplabsd using RFC822, but not to hpfcla using UUCP
 - hplabsd must be able to receive RFC822 mail form MIT-MC.ARPA
 - hplabsd must be able to send UUCP mail to hpfcla.
 - hpfcla must be able to send UUCP mail to hpcnoe.
 - hpcnoe must be able to send UUCP mail to veeger.
 - veeger must be able to send UUCP mail to hpcnou.
 - hpcnou must have a local user named dat.
 - no machine tries to short-cut or parse the "user" portion of the
   address when they have it.

The interesting problem of course is what if one or more of the
sites does support both RFC822 and UUCP syntax, without the
explicit precedence rules.

In particular, confusion can arise if:

- MIT-MC.ARPA can talk RFC 822 to hplabsd, *and* UUCP to hpfcla.

If the mail were accidentally UUCP mailed to hpfcla, then
hpcnoe would be told to deliver to dat@hplabsd. If hpcnoe
doesn't talk RFC 822 or doesn't talk to hplabsd then
the mail would fail.  If it does talk RFC 822 to hplabsd then
the mail could be successfully delivered to "dat" there if
that was a legal mail name there.  Obviously the dat@hplabsd
could be a different than the hpcnoe!dat.

It shouldn't matter to noscvax that there are two at-signs in the
address when it sees it, since they are in valid RFC 822 routing format,
so there should be no conflict in whether to send to hplabsd with
the rest being the user field vs. sending to MIT-MC.ARPA. By the rules
of 822 it MUST be sent to MIT-MC.ARPA. Of course, if the mailer is
not completely RFC 822 standard (and many are not) there could be
a problem and the mail could be acccidentally sent to hplabsd instead.
That of course would be disasterous, since the "user" field handed
to hplabsd would be neither valid RFC 822 nor UUCP routing form.

By the way, there is no indication of any BITNET syntax here at all.

The remaining question is left for the user, namely, why is

 >From noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd Tue Dec 17 13:35:41 1985

in an UUCP ">From" line rather than in a RFC 822 "From:" line?:

 From: noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd

            Scott McGregor
           {...!hplabs, ...!hpcea, ...!hpisla}!hpccc!mcgregor
            HP Corporate Computing Center

gds@SRI-SPAM.ARPA (Greg Skinner) (12/20/85)

 >> From noscvax!@MIT-MC.ARPA:hpfcla!hpcnoe!veeger!hpcnou!dat@hplabsd


Since Dave Taylor said that the message came from someone at hp-sdd,
whic is not on the ARPA Internet as far as I know, and is not
constructing 822 addresses, the From line can be read as such:

hp-sdd <-- noscvax
noscvax <-- mit-mc
mit-mc <-- hplabsd
hplabsd <-- hpcnou (though 4 hops)

The reply works in this case because MIT-MC saw fit to do source
routing, which is probably not a bad idea for mail coming from UUCP.

If the message came from someone on a smart UUCP site that did 822
header munging, or was on both ARPA and UUCP, the rightmost @ would be
favored, that's where the mess begins.

It is possible for UUCP sites to address outside of UUCP using bang
format.  For example, the above address could be folded into:

noscvax!hplabsd.arpa!....!hpcnou!dat

Note I left MIT-MC out of the picture.  MIT-MC just redistributed the
message -- it did not originate it, and has no right to be included in
reply text.  I suspect possible munging of From or From: lines.
However, if you insist on seeing MIT-MC in there,

noscvax!mc.mit.lcs.edu!hplabs.arpa!....!hpcnou!dat

Gateways/mail bridges *ought* to do the transformation between ! and 822
formats, that's what they're there for.  One of the purposes of a
gateway is to do protocol transformations on messages which is clearly
what is needed here.  No one in UUCP need know about @ or any other such
nonsense -- as long as they know the qualified names of the sites they
are sending to, they should be free to construct paths through the
gateways with legal UUCP syntax, with the gateways doing the appropriate
transformations.

--gregbo

jordan@ucb-arpa.ARPA (Jordan Hayes) (12/20/85)

	From: gds@sri-spam.ARPA (Greg Skinner)

	noscvax!hplabsd.arpa!....!hpcnou!dat

	Note I left MIT-MC out of the picture.  MIT-MC just
	redistributed the message -- it did not originate it, and has
	no right to be included in reply text.  I suspect possible
	munging of From or From: lines.  However, if you insist on
	seeing MIT-MC in there,

	noscvax!mc.mit.lcs.edu!hplabs.arpa!....!hpcnou!dat

Gregbo,

You clearly have shown your parsing skills, but I think what is missing
from this little point you made is the assumption that just because
noscvax is on the Internet that it will know about the hp site (by the
way, the original said "hplabsd" and you have "hplabsd.arpa" which does
not exist ... "hplabsd" is a nick-name for "hplabs.arpa" -- no "d" in
the .arpa-ized form. This is because the people running sendmail on
that machine have the local name go out on mail, instead of the
official name ... *sigh*)

Anyways, what i wanted to say was that the reference to mit-mc was in
fact necessary, and should indeed be included, unless you are
absolutely sure you can get to the hp site by yourself. When an
exploder is doing its work, it definately should put itself in the address.

What if I on a machine "foo" that is on a local ether with mit-mc send
to the list that redistributes to someone on a machine one UUCP hop
away from noscvax ... should the return be noscvax!foo!jordan ...? or
should it be noscvax!mit-mc.arpa!foo!jordan ...?

Although it certainly may be true that noscvax could theoretically have
an entry for foo in its /etc/hosts file (nosc, as you recall, is on
MILNET and does not need to have resolvers running yet ...) and *could*
make the smtp connection to foo itself, it should go back to mit-mc.

Manual editing of headers from list exploders is a mail wizards hobby.
Not for the children at home ...

/jordan