RFC 720

Address Specification Syntax for Network Mail

πŸ“… published August 1976, from ietf

Address Specification Syntax for Network Mail ✨

Okay bestie, this is RFC 720 πŸŽ€ by D. Crocker (ISI), dated Aug 1976, NIC #36337. The header doesn't list a category, and it doesn't say what it obsoletes or updates. What it does say is that it's a proposal that augments the existing syntax in RFC 680 (that's the References line). πŸ“¬


Experience with mail on the Arpanet has spotlighted a few addressing problems πŸ‘€:

  1. People's names aren't the same as their addresses;
  2. Mailing lists can get quite long;
  3. To allow responding, messages often need to carry their whole mailing list with them;
  4. It would be super useful to send mail to files other than a person's main mailbox.

The name vs. address mess πŸ™ˆ

The current mail syntax from RFC 680 doesn't give you a neat way to separate a person's name from their mailing address. With shared directories, the ATTN: clause is kinda okay, but for single-user mailboxes it's totally useless, because the address is just cryptic. CMU's identification tags are a perfect example, since they look like random character strings, and using initials as tags has the same problem. Try figuring out who Micro@ISI, JFH@ISI, or Greep@ISD are using only what's written there, without personal knowledge. Not possible, bestie πŸ’€. A formal syntax that specifies names and addresses separately means mail display software can print name lists with only human names in them. Way friendlier ✨.

Long lists and reply-all chaos πŸ“œ

The problem with long mailing lists is that when they're included in the message text, they're often longer than the actual message. Group names were allowed in address fields mainly to dodge this. But semi-automated replying changes things. A receiver's system builds the reply address list by copying fields from the original message, and if the list is just a group name, the receiver doesn't have the names or addresses of the group members. The workaround that's commonly used now is making the group name a pathname to the file holding the list. It helps, but it isn't a real fix 😀.

Multiple mailboxes 🧚

Last but not least, one user having multiple mailboxes. This has the biggest potential for teleconferencing, since messages for an ongoing discussion can be placed automatically into a separate mailbox. With shared directories, it would also make it easy to channel messages into each person's own mailbox πŸ’œ.


With all that in mind, and until a more robust mail syntax and protocol gets specified, this general syntax is proposed to augment RFC 680 for address fields specified by the user:

Name:(Person(User-Id(Mailbox) at Host),...),; ...

Here's what the pieces mean:

  • Name is the name of the mailing list.
  • Person presumably is the name of the person receiving the mail.
  • User-Id is their online reference name (usually their signon directory).
  • Mailbox is a secondary mailbox or file.
  • Everything else conforms to RFC 680, although @ may be used in place of at.

Parentheses can be swapped for other bracket pairs ([], {}, <>). Quotation marks must be used any time the string contains ambiguating characters, like spaces or parentheses. The brackets after Name are used to request that the address list be left out of the message, and instead use text giving the pathname to the source of the list πŸ“.

The formal syntax for address specification, inside network mail that's actually sent, is in the next section 🌸.

Not every part of a specification is required, so here are some examples to make it click πŸ¦‹:

A normal specification, as used currently:

Walker at ISI

A named list, carried with the message, with the last address not a member of the list:

List:Walker at
ISI,greep@rand-isd;Action@ISI

A named list, NOT to be carried with the message. The list contents get replaced with a text string showing the source of the list. This isn't very useful if the list is typed in by the user rather than pulled from a file, which is why:

List:(Walker@ISI,greep at rand); Action at ISi

will be changed to appear in the message as:

List:("/rnd/dcrocker/mail.list"); Action
at ISI

A list with personal names separate from addresses:

"Steve
Walker"[Walker at ISI], Bob<rha@isd>

A teleconferencing address list:

Talkers:"Dave C"(DCrocker(TC.msg)@isi),...;

Formal Specification πŸ“

The following modified BNF is meant to be a direct addition to or replacement for specifications in RFC 680. The fields eliminated from the existing specification are: <addressee item>, <address list>, <addressee>, <mailbox>, <host spec>, <attention spec>, <user list>, <mailbox group>, <group numbers>, and <mailbox list>.

<Attention spec> can be done by using the person's name plus a secondary file specification. Also, <Sender> should be modified to be:

Sender = "SENDER: " Individual

The added fields are below ✨:

Address-Field = Address-List / Address-List ,,:,
Address-Field

Address-List = Individual-List / Group-List

Group-List = Group-Name Group-Members

Group-Name = / Name ":"

Group-Members = Individual-List / L-Bracket Pathname
R-Bracket

Pathname = {A Name which can at least provide a
human with enough information to find
the file containing the Group-List}

Individual-List = Individual / Individual
Individual-List

Individual = Mailbox / Name L-Bracket Mailbox
R-Bracket

L-Bracket = "(" / "[" / "{" / "<"

R-Bracket = ")" / "]" / "}" / ">"

Mailbox = Id Secondary-File At Host

Id = Name

At = "" at "" / "@"

Host = {An acceptable host name}

Secondary-File = / L-Bracket Filename R-Bracket

Filename = Name

Name = {An Ascii string without carriage
return, line feed, space, '"', ",",
";", or any L-Bracket or R-Bracket} /
'"' {An Ascii string with any double
quotation marks doubled} '"'

The particular L-Bracket and R-Bracket characters used must match each other. The quotation mark requirement is stricter than strictly necessary, so that software requirements stay simple 🫢. Also, this syntax is for inter-entity communication and isn't necessarily what the user types πŸ’….

Bestie, that's the whole spec. Mail that works with names, long lists, and multiple mailboxes, all sorted out. Iconic behaviour from 1976 πŸ”₯πŸ‘‘.
πŸ“¦ where this page comes from