Network Working Group D. Crocker (ISI)
Request for Comments: 720 Aug 1976
NIC #36337
References: RFC #680
Address Specification Syntax for Network Mail
- Experience with processing mail on the Arpanet has pointed up many
-
- addressing issues, including:
-
- 1. People's names are not the same as their addresses;
-
- 2. Mailing lists can get quite long;
-
- 3. To allow responding, messages often need to carry all of their
-
- mailing list with them;
-
- 4. It would be very useful to be able to send mail to files other
-
- than the person's primary mailbox.
-
- The current mail syntax, specified in RFC 680, does not provide a
-
- convenient mechanism for distinguishing between a person's name and
-
- their mailing address. In cases of shared directories, the ATTN: clause
-
- is marginally adequate; however it is completely inappropriate for
-
- single-user mailboxes in which the address specification is simply
-
- cryptic. CMU's identification tags are good examples of this problem,
-
- since they tend to appear to be random character sequences; the use of
-
- initials as tags also points up the problem. If you doubt the
-
- referential ambiguity of addresses, then try to use only the information
-
- presented, rather than random personal knowledge, to discern who
-
- Micro@ISI, JFH@ISI, or Greep@ISD are. By having a formal syntax for
-
- separately specifying names and addresses, mail display software can
-
- printout out name lists which only contain human names...makes things
-
- friendlier.
-
- The problem with long mailing lists is that, if included in the text of
-
- a message, they often are longer than the main part of the message.
-
- Group names are allowed in address fields primarily to circumvent this
-
- problem. However the advent of semi-automated message answering, in
-
- which a receiver's message system prepares address lists for reply
-
- messages by copying appropriate fields from the original message, makes
-
- the current mechanism deficient: having the group name means that the
-
- receiver does not have the names/addresses of the members of the group.
-
- A convention is generally followed, now, which has the group name be a
-
- pathname to the file containing the list. Though facilitative, this
-
- does not represent an adequate solution.
-
- And lastly is the issue of multiple mailboxes for a single user. This
-
- feature is probably has the largest potential for teleconferencing
-
- applications, with messages for an on-going discussion automatically
-
- placed into a separate mailbox. In the case of shared directories, this
-
- mechanism also would allow easy channeling into each person's own
-
- mailbox.
-
-1-
- With these needs in mind, and until a more robust mail syntax and
-
- protocol is specified, the following general syntax is proposed to
-
- augment the existing syntax specified in RFC 680, for address fields
-
- specified by the user:
-
- Name:(Person(User-Id(Mailbox) at Host),...),; ...
-
- Where
-
- "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 a secondary mailbox/file;
-
- and the rest conforms to RFC 680, although "@" may be used in
-
- place of " at " in the specification.
-
- Parentheses may be replaced by other bracketing pairs ([], {}, <>).
-
- Quotation marks must be used any time the string contains ambiquating
-
- characters, such as space or parentheses. The brackets after Name are
-
- used to request exclusion of the address list from the message, instead
-
- using text which gives the pathname to the source of the list.
-
- The formal syntax for address specification, within network mail
-
- actually sent, is included in the next section.
-
- Not all of a specification is required, so perhaps some examples will
-
- clarify things:.
-
- A normal specification, as used currently: Walker at ISI
-
- A named list, to be 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 will be replaced with a text string indicating the source
-
- of the list -- not very useful if the list is typed in by the
-
- user, rather than pulled from a file; therefore
-
- 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),...;
-
-2-
- Formal Specification
-
- --------------------
-
- The following modified BNF is to serve as a direct
-
- addition/replacement for specifications within 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 performed through use of the person's name
-
- and secondary file specification. Also, <Sender> should be modified
-
- to be::
-
- Sender = "SENDER: " Individual
-
- And the added fields are:
-
- 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
-
- Address Specification Syntax for Network Mail
-
- 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}
-
-3-
- 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 requirement for quotation marks has been made more
-
- severe than absolutely necessary in order to simplify software
-
- requirments. Note also that the above specified syntax is for
-
- inter-entity communications and is not necessarily indicative of what
-
- the user types.
-
-4-