RFC 754

Out-of-net host addresses for mail

๐Ÿ“… published April 1979, from ietf

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:

  1. Minimum Change to Existing Software.
  2. Maximum User Acceptance.
  3. Maximum Compatibility with the future Internet Message Environment.
  4. 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 ๐Ÿ“‹

  1. What changes are needed?
  2. How many instances of the change need to be implemented?
  3. What information does the routing daemon use?
  4. How does the "answer" command work?
  5. 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