RFC 680
Message Transmission Protocol
RFC 680: Message Transmission Protocol โจ
Okay bestie, this is RFC 680 ๐ It was published on April 30, 1975 by the Network Working Group, with NIC 32116. The authors are Theodore H. Myer and D. Austin Henderson, both from BBN-TENEX ๐ The title block doesn't list a category, and it doesn't say this doc obsoletes or updates anything ๐
This doc defines a bunch of message fields that go beyond the ones covered in RFC 561 ๐ฆ The overall message format is compatible with RFC 561, and it leans super hard on the miscellaneous fields RFC 561 already set up ๐ The goal is to create ARPANET standards for the syntax and semantics of these extra fields. Not every Message Server is expected to automatically process all of them ๐ But sites that want to use these fields need a standard to work with ๐ซถ
This doc tries to walk the line between stuff that's useful for humans and stuff that's useful for machines ๐ง The general vibe is that these fields are helpful to people even when nothing processes them automatically. Most machine-readable bits are wrapped in angle brackets (<>), so automatic processes can tell easily and unambiguously whether to look in a field and where ๐ The whole spec is made excessively general so people can experiment ๐ Future docs based on experience will get more specific. This is just the next step after <RFC 561> โญ
The doc has two sections ๐ Section I covers the relevant parts of RFC 561 that define the basic message syntax. Section II lists the new (and existing) header fields along with their proposed uses.
SECTION I: BASIC MESSAGE SYNTAX ๐
Here's the grammar, copied exactly as it is in the original ๐
<message> ::= <header><crlf><body>
<header> ::= <required header><optional header>
<required header> ::= <date item><sender item>
<date item> ::= DATE:<sp><date><sp>AT<sp>
<time>-<zone><crlf>
<date> ::= <vdate> ! <tdate>
<vdate> ::= <dayofmonth><SP><vmonth><SP><vyear>
<tdate> ::= <tmonth>/<dayofmonth>/<tyear>
<dayofmonth> ::= one or two decimal digits
<vmonth> ::= JAN ! FEB ! MAR ! APR ! MAY ! JUN !
JUL ! AUG ! SEP ! OCT ! NOV ! DEC
<tmonth> ::= one or two decimal digits
<vyear> ::= four decimal digits
<tyear> ::= two decimal digits
<zone> ::= EST ! EDT ! CST ! CDT ! MST ! MDT !
PST ! PDT ! GMT ! GDT
<time> ::= four decimal digits
<sender item := SENDER: <sp><user><sp>AT<sp><host>
<crlf>
<optional header> ::= <subjects><optional items>
<subjects> ::= !<subject item> !
<subject item><subjects>
<subject item> ::= SUBJECT:<sp><line><crlf>
<optional items> ::= <optional item> ! <optional item>
<optional items>
<optional item> ::= <messid> ! <addressee item> !
<other item>
<addressee item> ::= <addressee keyword>:<sp><addressee
list><crlf>
<addressee keywork> ::= TO:! CC:! BCC:!
<messid> ::= Message-ID:<sp>[<Net
Address>}]<line>
<crlf>
<other item> ::= <other keyword>:<sp><line><crlf>
<other keyword> ::= FROM ! IN-REPLY-TO! REFERENCES!
KEYWORD ! PRECEDENCE !
MESSAGE-CLASS!
SPECIAL-HANDLING! AUTHENTICATION!
ACCESSION-KEY
<address list> ::= <addressee> ! <addressee><addressee
list>
<addressee> ::= <mailbox> ! <mailbox group>
<mailbox> ::= <user><host spec><attention spec>
<host spec> ::= !@<host>
<attention spec> ::= (ATTN:<sp><user list>)
<user list> ::= <user> ! <user><user list>
<mailbox group> ::= <group name>:(<group numbers>)
<group numbers> ::= ! (<mailbox list>)
<mailbox list> ::= <mailbox> ! <mailbox>,<mailboxlist>
<body> ::= <line><CRLF> ! <line><CRLF><body>
<user> ::= <word>
<host> ::= a standard host name
<group name> ::= ! <word>
<line> ::= a string containing any of the 128
ASCII
characters except CR and LF
<word> ::= a string containing any of the 128
ASCII
characters except CR, LF, and SP
<CRLF> ::= CR LF
<SP> ::= space
Notes, bestie ๐
- A message can have at most one MESSAGE-ID item.
- All items with the same keyword must be grasped together.
Please note the following ๐
(1) The case (upper or lower) of keywords doesn't matter. That covers 'FROM', 'DATE', 'SUBJECT', 'AT', <host>, <zone>, <vmonth> and <keyword>. Even though 'FROM' is written in uppercase in the formal syntax above, it can show up in an actual message header as 'FROM', 'from', 'From', or whatever else ๐
(2) Nobody's legislated the format of <user> beyond banning spaces from it ๐
(3) The time has no internal punctuation โฐ
SECTION II: MESSAGE HEADER FIELDS ๐
A. ORIGINATOR SPECIFICATION FIELDS ๐ฆ
FROM
This field holds the identity of the person who wanted this message sent ๐ It's expected to be the originator field the user specifies when one person enters a message on behalf of another. The message-creation process should default this field to the user entering the message. [The usage for FROM and SENDER differs from that of RFC 561.]
SENDER
This field holds the identity of the person who sends the message ๐ฎ It's expected that the message-creation process sets this automatically. Some sites might not include this field in external communications ๐
AUTHENTICATION
This field describes which originator fields have been authenticated, and which operating systems did the authenticating ๐ It should be created by the message transmission and/or reception processes (FTP/Operating System level).
It's expected that current systems will only be able to authenticate the SENDER field ๐ญ Later systems might have ways to verify that the FROM actually authorized the SENDER to act for them ๐ Once the FROM is authenticated, the SENDER won't be necessary for external distribution anymore ๐ซถ
B. REFERENCE SPECIFICATION FIELDS ๐ธ
MESSAGE-ID
This field holds a unique identifier that refers to this message ๐ชช The format is:
[Net Address]Text String CRLF
Examples:
[ISIB]7-DEC-74.14:23:45
[ARC]QLOURNAL 39274a3
Uniqueness is guaranteed when each net-address message processor makes the text after the net-address unique for that net-address. Note that it says net-address and not site name ๐ That would let BBN, for instance, allocate unique identifiers across all four machines, which can be addressed as BBN within the message system. Users get a more integrated service out of that โจ
The text after the net-address isn't defined here, because the problems with that spec are too big right now ๐ญ The net-address should still let automatic processes figure out if they can handle the text after it intelligently. That opens up a few kinds of automatic processing for the local message reader ๐ง
- If the site uses a filing mechanism the reader knows, the reader can retrieve the message.
- If the site supports remote message access (a protocol not currently defined), the message id can be passed to the remote site. The message has been filed in the Datacomputer, using the entire message id (including the net-address) as the handle, so the reader can retrieve it from the Datacomputer ๐พ
IN-REPLY-TO
This field identifies previous correspondence that this message answers ๐ฌ If message identifiers are used in this field, they should be enclosed in angle brackets (<>).
REFERENCES
This field identifies other correspondence that this message references ๐ If message identifiers are used, they should be enclosed in angle brackets (<>).
KEYWORDS
This field holds keywords or phrases from the message, separated by commas ๐ท๏ธ
C. RECEIVER SPECIFICATION FIELDS ๐
TO
This field holds the identity of the primary receivers of the message ๐
CC
This field holds the identity of the secondary receivers of the message ๐ฉท
BCC
This field holds the identity of the tertiary receivers of the message ๐คซ It should not be made available to the primary and secondary receivers, but it may be recorded to provide information for access control ๐
D. MESSAGE-TYPE SPECIFICATION FIELDS ๐
PRECEDENCE
This field describes how important and urgent the message is ๐จ Machine-readable notations go in angle brackets (<>). <PRIORITY> means the message should be delivered as soon as possible. <ROUTINE> means priority processing isn't necessary. Plain text can also go in this field ๐
MESSAGE-CLASS
This field describes the "legal" status of the message โ๏ธ Examples include Official, Unofficial, Record, Off the Record, and Junk Mail. No automatic processing of this field is immediately expected ๐ Some message creation processes might, for example, always insert:
MESSAGE CLASS: Unofficial ARPANET Message
SPECIAL-HANDLING
This field holds any special instructions for how the receiver's end should handle the message ๐ซฃ Machine-readable notations go in angle brackets (<>). <PRIVATE> means the message reception process should not help the user pass copies around to others ๐ค Plain text can also go in this field ๐ฆ
๐ฆ where this page comes from
- ietf: rfc680 1975-04
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms