RFC 754
Out-of-net host addresses for mail
RFC 754: Out-of-Net Host Addresses for Mail ๐
okay bestie, title block check ๐ this one is by J. Postel from ISI, dated 6 April 1979. The header doesn't list a category or status, and it doesn't say it obsoletes or updates anything. clean slate energy โจ
There is now real interest in seriously expanding the computer mail system on the ARPANET so people can send voice, fax, graphics, and text to each other across different networks and inside the ARPANET too ๐ฌ๐๏ธ main character mail era, no cap.
Moving from the current ARPANET sndmsg setup to a more general internet environment with richer mechanisms has to think about how stuff keeps working during the transition ๐ Also, there's a current need for a way to let the several NSW-like message environments that already exist talk to the ARPANET message environment ๐ซถ
This memo looks at some possible options for mail addressing to hosts outside the ARPANET in the short term. full honesty: it's hopelessly Tenex oriented in its descriptions and examples ๐
Goals โจ
Keep a few goals in mind while you compare the options:
- Minimum Change to Existing Software.
- Maximum User Acceptance.
- Maximum Compatibility with the future Internet Message Environment.
- Minimum Special Transition Software.
These goals are kinda incompatible with each other, so evaluating the options is gonna be a trade off ๐คทโโ๏ธโ๏ธ
At this point it would be good to have a model of how the current ARPANET message environment works. I'm assuming you understand it well enough that I can skip the long explanation of how a message gets from A to B ๐ The important thing is knowing the types of players in the picture:
- message composition (or sending) programs (e.g., Hermes, SNDMSG). Generally there are several of these for each type of operating system or host in the network.
- mailers.
- mail servers (i.e., FTP servers) that receive the mail coming into a host and deposit it in mailboxes.
- message processing (or reading) programs (e.g., Hermes, MSG, RD). Generally there are several of these for each type of operating system or host in the network. Also, the more developed mail programs do both reading and sending ๐ง
Messages go out as a character string to an address that's specified outside the message ๐ฆ The destination host (YYY) gets handed to the sending (or user) FTP as the argument of the open connection command. The destination user (XXX) gets handed to the receiving (or server) FTP as the argument of the MAIL (or MLFL) command. In Tenex, when mail gets queued, that outside info is saved in the file name [---].XXX@YYY ๐๏ธ
Proposed Solutions โจ
This first pass at the solutions is pretty brief. It's meant to set the scene for a later discussion based on examples ๐ฌ
A) SINGLE MAILBOX ๐ฌ
This solution says all mail for another network gets routed to a single mailbox on a forwarding host on the ARPANET. The FTP server would naturally put all the mail for that mailbox into a single file, which then gets examined by a routing daemon process. The routing daemon uses info in new header lines to figure out the actual destination.
Format:
Outside: [---].NSW-MAIL@FWDR
Inside: To: NSW-MAIL@FWDR
From: Sam@ISIB
NSW-User: Joe
B) GLOBAL NAMES INSIDE ๐
This one says all mail for users in another network gets sent to a single mailbox on a forwarding host. Same deal: the FTP server naturally puts all the mail for that mailbox into a single file for a routing daemon process to examine. The difference is the daemon uses info in existing header lines to find the actual destination.
Format:
Outside: [---].NSW-MAIL@FWDR
Inside: To: Joe@NSW
From: Sam@ISIB
C) GLOBAL NAMES OUTSIDE ๐
This proposal says mail for users in another network gets sent to distinct per-user mailbox names on a forwarding host. The FTP server would somehow put all the mail for these mailboxes into a single file for a routing daemon process to examine. The daemon uses info in existing header lines to find the actual destination ๐ค
Format:
Outside: [---].Joe@FWDR or [---].Joe@NSW
Inside: To: Joe@NSW
From: Sam@ISIB
D) STRUCTURED NAMES ๐งฉ
This one is like C, with distinct per-user mailbox names on a forwarding host, except these names have a common "network" part and a unique "user" part. The FTP server recognizes the common part, then puts the mail and the mailbox name into a single file for a routing daemon process to examine. The daemon uses the mailbox name info to find the actual destination ๐
Format:
Outside: [---].NSW-Joe@FWDR
Inside: To: NSW-Joe@FWDR
From: Sam@ISIB
Criteria โจ
Before we get into the pros and cons of these proposals, it'd be smart to have some more detailed criteria in mind. They'll help show how well each goal gets met ๐
- What changes are needed?
- How many instances of the change need to be implemented?
- What information does the routing daemon use?
- How does the "answer" command work?
- How is the name space used?
It's especially instructive to work through examples with a mix of mailbox destinations, some on the ARPANET and some on other networks, in each of the "To:" and "CC:" fields. Then see what happens when you want to send an answer to all, to just the "To:", to just the "CC:", or to just the "From:" or "Sender:" mailboxes ๐โจ
Solutions Reconsidered โจ
Okay so let's talk about these with examples, bestie, because it's way easier to get it that way ๐ In the following, "NSW" is an example of a network name. "FWDR" is a host name, or nickname for the forwarding host. Also, for all of these solutions it's assumed that host tables can have alternate or nicknames for hosts, e.g., FWDR could map to 86 while ISI also maps to 86, although this is not essential ๐ฆ
In addition, all these solutions provide a single forwarding point from the ARPANET into the destination net ๐ธ
All forwarded messages are handled by a routing daemon that lives in the FWDR host ๐ง
Also, the "outside" information is the Tenex representation. The key thing is that the mailbox argument passed to the FTP server is the one in the string [---].XXX@YYY, not anything from the header. Only the string XXX gets passed to the FTP server ๐
A) SINGLE MAILBOX ๐ฌ
Example:
Outside: [---].NSW-MAIL@FWDR
Inside: To: NSW-MAIL@FWDR,Bill@ISIA
CC: Jeff@ISIB
From: Joe@ISIB
NSW-User-To: SAM,Fred
NSW-User-CC: Bob,Mike
or
Outside: [---].NSW-MAIL@FWDR
Inside: To: NSW-MAIL@FWDR,Bill@ISIA
CC: Jeff@ISIB
From: NSW-MAIL@FWDR
NSW-User-To: SAM,Fred
NSW-User-CC: Bob,Mike
NSW-User-From: Paul
Every mail composition program has to change so it's easy for users to put the NSW-User: line in the header ๐ญ Every mail reading program has to change too, so it notices and uses that line. In an "answer" command, the mail processing program has to know to copy this line into the answer message. The daemon has to look at the inside message header, find the NSW-User: line, and forward the message to the users listed there.
If a message has both NSW and ARPANET mailboxes in both the To: and CC: lines, then it seems there must be both an NSW-Users-To: line and an NSW-Users-CC: line, so it's possible to send an answer to just the users in the To: lines ๐
If there's another network, e.g. PRNET, then another set of header lines has to be introduced, e.g. PRNET-USER-To: etc. That's up to four new lines per network (To, CC, From, Sender) ๐
This solution has the advantage of saving some transmissions. When several of the destination mailboxes are in NSW, the sending program sends just one copy to the FWDR and routing daemon, and the routing daemon sends copies to all the NSW users it finds. If this isn't done, the daemon would have difficulty avoiding sending multiple copies to each destination user โจ
A problem pops up around acknowledgements of mail receipt ๐ฌ First, the normal ARPANET message delivery mechanisms will say the mail is delivered when the FTP server puts it in the file for the routing daemon to examine. Second, if the routing daemon discovers that a message is to be forwarded to a nonexistent user, care must be taken to notify the original sender unambiguously.
Changes:
- all composition programs
B) GLOBAL NAMES INSIDE ๐
Example:
Outside: [---].NSW-MAIL@FWDR
Inside: To: Joe@NSW, Bill@ISIA, Fred@NSW
CC: Mike@NSW, Paul@NSW, John@ISIB
From: Sam@ISIB
Every mail composition program has to know that NSW is a very special host name, one for which it uses a different mailbox argument and sends to the FWDR host ๐ The FTP server naturally puts all the NSW mail into a single mailbox file, which the routing daemon examines. The "answer" command works fine. The routing daemon has to look at the inside header to decide where to forward the messages, and it has to check the To: and CC: lines.
The sending programs must also send just one copy to the FWDR and routing daemon, and the routing daemon will send copies to all the NSW users it finds. If this isn't done, the daemon would have difficulty avoiding sending multiple copies to each destination user. This is an advantage in terms of the number of transmissions ๐ฆ
The same acknowledgement problem shows up here too ๐ First, the normal ARPANET message delivery mechanisms will say the mail is delivered when the FTP server puts it in the file for the routing daemon to examine. Second, if the routing daemon discovers that a message is to be forwarded to a nonexistent user, care must be taken to notify the original sender unambiguously.
Changes:
- all sending programs
C) GLOBAL NAMES OUTSIDE ๐ง
Example:
Outside: [---].Joe@NSW
Inside: To: Joe@NSW, Bill@ISIA, Fred@NSW
CC: Mike@NSW, Paul@NSW, John@ISIB
From: Sam@ISIB
No changes to mail composition or processing programs are needed ๐ The FTP server has to put all the NSW users' mail into a single mailbox file, which the routing daemon examines. The cheapest way to do this is to put all the names of the NSW users in the ARPANET user forwarding file, all with the same destination ARPANET mailbox. This means the local users of the FWDR host and the users in the destination networks share the name space for user names. The routing daemon has to look at the inside header to decide where to forward the messages, and it has to check the To: and CC: lines.
This appears to be the solution with the minimum change to existing software. The "answer" command works fine ๐
Now for the tea โ There's a problem with the name space. For example, if ISIA serves as the FWDR host, then Fred@ISI and Fred@NSW cannot co-exist. There's also the database update problem: every time a new user is added to NSW or to any of the hosts in any of the nets that the FWDR host serves, the forwarding file at the FWDR host has to be updated. The names added have to be unique, so all user names assigned in NSW and on all the hosts on all the networks served by the same FWDR host have to be okayed by the "forwarding file data base administrator" before they can actually be used. Also note that Fred@NSW and Fred@PRNET cannot be routed through the same FWDR host ๐
This doesn't work too well either. If the sending programs aren't changed, they will send one copy of the message for each NSW user, and all these copies will end up in the file to be examined by the routing daemon. If the FTP server code isn't changed, the outside information will be lost, and the routing daemon will have no idea which NSW user each copy is for. To do the job right with the information available, the routing daemon would have to keep a substantial record about each message it handles, checking whether it has received for, and sent a copy to, each intended destination user ๐ตโ๐ซ
The acknowledgement problem is here as well. First, the normal ARPANET message delivery mechanisms will say the mail is delivered when the FTP server puts it in the file for the routing daemon to examine. Second, if the routing daemon discovers that a message is to be forwarded to a nonexistent user, care must be taken to notify the original sender unambiguously.
Changes:
- ARPANET user forwarding file at FWDR host
D) STRUCTURED NAMES ๐
Example:
Outside: [---].NSW-Joe@NSW
Inside: To: NSW-Joe@NSW, Bill@ISIA, NSW-Fred@NSW
CC: NSW-Mike@NSW, NSW-Paul@NSW, John@ISIB
From: Sam@ISIB
No changes to mail composition or processing programs are needed ๐ธ The FTP server has to put all the NSW-x users' mail into a single file, which the routing daemon examines. The FTP server can do this just by recognizing the NSW- prefix, without needing to know all the legal individual users. On top of that, the FTP server puts the mailbox argument into the file with the message. This is necessary to avoid losing the "outside" information. The routing daemon can then look at the mailbox argument to decide where to forward the messages. It doesn't need to look at the inside of the message at all. The "answer" command works fine ๐
The acknowledgement problem still exists here, but with a twist โจ First, the normal ARPANET message delivery mechanisms will say the mail is delivered when the FTP server puts it in the file for the routing daemon to examine. However, if the routing daemon discovers that a message is to be forwarded to a nonexistent user, the daemon can easily tell the original sender the exact destination user that is unreachable ๐
Changes:
- FTP server at FWDR host
Summary ๐
A B C D
Single Global Global Structured
Mailbox Names Names Names
Inside Outside
Criteria ๐
Criteria:
1) What changes? Composer Composer None FTP server
2) How many? 100 100 0 1
3) Routing information? New Old Old Old
Inside Inside Inside Outside
4) "Answer" command? Changes Same Same Same
5) ARPANET name space 1 per 1 per 1 per 1 per
use? FWDR FWDR user user
Goals ๐ฏ
Goals:
1) Software Change Bad Bad Good Good
2) User Acceptance Bad Good Good Poor
3) Future Compatibility Bad Poor Poor Fair
4) Transition Software Fair Good Bad Good
Conclusions ๐
Solution D is recommended. ๐๐
Only solution D is based on the use of strictly "outside" information. Please note that the existing ARPANET message DELIVERY system is based strictly on the use of "outside" information only ๐ฎ Also, the problems that keep coming up in ARPANET message processing and composition programs have to do with the different possibilities for syntax (and semantics) of the "inside" information. This is a major advantage of solution D ๐
Please note that the syntax NET-USER@FWDR in the examples is not the only form that could be used. Any of the following (or even others) would be fine ๐ฆ
Net-User@FWDR User-Net@FWDR
Net/User@FWDR User/Net@FWDR
Net.User@FWDR User.Net@FWDR
Net.and.User@FWDR User.on.Net@FWDR
๐ฆ where this page comes from
- ietf: rfc754 1979-04
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms