RFC 720 UNKNOWN EMAIL · STANDARDS

Address Specification Syntax for Network Mail

A richer syntax for specifying email addresses and mailing lists.

On rfc-editor.org ↗
PUBLISHED
August 1976
AUTHORS
D. Crocker
STREAM
Legacy
PRIMARY ISSUE
Conflation of names and addresses
LIST MECHANISMS
Inline expansion or pathname reference
BRACKET TYPES
(), [], {}, <>
COMPONENTS PER ADDRESS
Name, User-ID, Secondary-File, Host
DOI
10.17487/RFC0720

RFC text

Original text · RFC Editor View on rfc-editor.org ↗
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.

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),...;

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}

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-

AI ELI5

On this page
PROBLEMRFC 680's mail syntax conflated a person's name with their address, could not easily handle mailing lists that should be carried in messages, and offered no way to send mail to secondary mailboxes.
MECHANISMRFC 720 proposes a syntax that separately specifies a person's name, their user ID (login name), an optional secondary mailbox or file, and the host. Mailing lists can be given a group name and either expanded inline or referenced by pathname.
FOUNDATION FOR MODERN EMAILThe proposal was a stepping stone toward more complete email addressing. Modern email standards use variations of this approach, with clear separation between display names and mailbox specifications.

§1Email Addressing Problems

RFC 720 identifies four limitations of the existing RFC 680 mail syntax. First, people's names and their computer addresses are not the same thing but the syntax did not distinguish them. Second, mailing lists could become longer than the messages they carried, and there was no good way to include expanded lists in messages. Third, mail systems often needed to include the full list of recipients in messages to enable replies to all members. Finally, the syntax provided no way to direct mail to secondary mailboxes or files beyond a user's primary inbox.

Email systems needed better ways to show names, handle big lists, and send mail to different places.

§2The New Address Format

The proposed syntax separates four components: a person's name, their user ID (online directory name or login), an optional secondary mailbox, and the host machine. For mailing lists, a group name precedes the member list. Lists can be either expanded inline in the address field or referenced by a file pathname. The syntax uses parentheses, brackets, braces or angle brackets for nesting, with quotation marks allowed for names containing ambiguous characters like spaces.

Instead of squishing everything together, the new format lets you write a human name separately from the computer address.

§3Examples and Formal Definition

The RFC provides examples ranging from simple addresses like "Walker at ISI" to complex mailing lists with personal names like "Steve Walker"[Walker at ISI]. Teleconferencing addresses can direct messages to special mailboxes per conversation. A formal BNF specification defines the complete syntax, replacing and simplifying the complex field definitions in RFC 680. The syntax is designed for inter-system communication; user-facing interfaces could use simpler representations.

The format is described in a way computers can parse precisely, so mail systems from different companies can all understand each other.

§4References