summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc780.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc780.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc780.txt')
-rw-r--r--doc/rfc/rfc780.txt2599
1 files changed, 2599 insertions, 0 deletions
diff --git a/doc/rfc/rfc780.txt b/doc/rfc/rfc780.txt
new file mode 100644
index 0000000..29dddde
--- /dev/null
+++ b/doc/rfc/rfc780.txt
@@ -0,0 +1,2599 @@
+
+
+
+
+
+
+
+
+ MAIL TRANSFER PROTOCOL
+
+
+
+ Suzanne Sluizer
+
+ and
+
+ Jonathan B. Postel
+
+
+
+
+
+
+
+
+
+ RFC 780
+
+
+
+
+
+
+
+
+
+
+
+ May 1981
+
+
+
+ Information Sciences Institute
+ University of Southern California
+ 4676 Admiralty Way
+ Marina del Rey, California 90291
+
+ (213) 822-1511
+
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ TABLE OF CONTENTS
+
+ 1. INTRODUCTION .................................................. 1
+
+ 2. THE MTP MODEL ................................................. 2
+
+ 3. BASIC MAIL .................................................... 4
+
+ 3.1. Forwarding ............................................... 5
+ 3.2. Source Routing ........................................... 6
+
+ 4. MULTI-RECIPIENT MAIL .......................................... 8
+
+ 4.1. Scheme Selection: MRSQ ................................... 8
+ 4.2. Message Text Specification: MAIL ......................... 9
+ 4.3. Recipient Specification: MRCP ........................... 10
+ 4.4. Scheme Mechanics: Recipients First ...................... 10
+ 4.5. Scheme Mechanics: Text First ............................ 12
+ 4.6. Discussion .............................................. 12
+
+ 5. SPECIFICATIONS ............................................... 16
+
+ 5.1. MTP Commands ............................................ 16
+ 5.1.1. Command Semantics ..................................... 16
+ 5.1.2. Command Syntax ........................................ 18
+ 5.2. MTP Replies ............................................. 22
+ 5.2.1. Reply Codes by Function Group ......................... 23
+ 5.2.2. Reply Codes in Numeric Order .......................... 24
+ 5.3. Sequencing of Commands and Replies ...................... 25
+ 5.4. State Diagrams .......................................... 28
+ 5.5. Details ................................................. 30
+ 5.5.1. Minimum Implementation ................................ 30
+ 5.5.2. Transparency .......................................... 30
+ 5.5.3. Sizes ................................................. 30
+
+ APPENDIX A: TCP ................................................. 32
+ APPENDIX B: NCP ................................................. 33
+ APPENDIX C: NITS ................................................ 34
+ APPENDIX D: X.25 ................................................ 35
+ APPENDIX E: Theory of Reply Codes ............................... 36
+
+ GLOSSARY ......................................................... 39
+
+ REFERENCES ....................................................... 42
+
+
+
+
+
+
+Network Working Group S. Sluizer
+Request for Comments: 780 J. Postel
+ ISI
+Replaces: RFC 772 May 1981
+
+ MAIL TRANSFER PROTOCOL
+
+
+1. INTRODUCTION
+
+ The objective of Mail Transfer Protocol (MTP) is to transfer mail
+ reliably and efficiently.
+
+ MTP is designed to be independent of the particular transmission
+ subsystem and requires only a reliable ordered data stream channel.
+ Appendices describe the use of MTP with various transport services.
+ A Glossary provides the definitions of terms as used in this
+ document.
+
+ An important feature of MTP is its capability to relay mail from one
+ transport environment to another. A transport service provides an
+ interprocess communication environment (IPCE). An IPCE may cover one
+ network, several networks, or a subset of a network. A process can
+ communicate directly with another process anywhere in its own IPCE.
+ Mail is a special case of interprocess communication. Mail can be
+ communicated between proceses in different IPCEs by relaying through
+ a process connected to two (or more) IPCEs. More specifically, mail
+ can be relayed between hosts on different transport systems by a host
+ on both transport systems. It is important to realize that transport
+ systems (or IPCEs) are not one-to-one with networks.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 1]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+2. THE MTP MODEL
+
+ The MTP design is based on the following model of communication: at
+ the initiation of the user, the sender-MTP establishes the
+ full-duplex transmission channel. MTP commands are generated by the
+ sender-MTP and sent to the receiver-MTP. MTP replies are sent from
+ the receiver-MTP to the sender-MTP in response to the commands.
+
+ In the simplest case, once the transmission channel is established
+ the MTP-sender sends a MAIL command indicating the sender and
+ receiver of the mail. If the MTP-receiver can accept the mail it
+ responds with a go ahead reply. Then the MTP-sender sends the mail
+ data, terminating with a special sequence. If the MTP-receiver
+ successfully processes the mail it responds with an OK reply.
+
+ -------------------------------------------------------------
+
+
+ +----------+ +----------+
+ +------+ | | | |
+ | User |<-->| | MTP | |
+ +------+ | Sender- |Commands/Replies| Receiver-|
+ +------+ | MTP |<-------------->| MTP | +------+
+ | File |<-->| | and Mail | |<-->| File |
+ |System| | | | | |System|
+ +------+ +----------+ +----------+ +------+
+
+
+ Sender-MTP Receiver-MTP
+
+ Model for MTP Use
+
+ Figure 1
+
+ -------------------------------------------------------------
+
+ The MTP provides mechanisms for the transmission of mail; directly
+ from the sending user's host to the receiving user's host when the
+ two host are connected to the same transport service, or via one or
+ more relay MTP-servers when the source and destination hosts are not
+ connected to the same transport service.
+
+ To be able to provide the relay capability the MTP-server must be
+ supplied with the name of the ultimate destination host as well as
+ the destination mailbox name.
+
+
+
+
+[Page 2] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ The arguments to the MAIL command are a FROM path and a TO path. The
+ TO path is a source route while the FROM path is a return route
+ (which may be used to return a message to the sender when an error
+ occurs with a relayed message).
+
+ The preceding discussion has outlined the transmission of one copy of
+ one message from a source to a destination host and the possibility
+ of relaying messages between different transport services. The MTP
+ additionally supports the transmission of one copy of a message
+ addressed to multiple recipients.
+
+ In order for mail to be successfully transmitted the destination
+ users must be known at the destination receiver-MTP and the mail data
+ must be correctly received and stored. In the single recipient case
+ discussed above the positive response to the MAIL command indicated
+ the recipient was known, and the final OK response indicated the mail
+ was received and stored.
+
+ To support multi-recipient mail, MTP provides two procedures:
+ Text-First, and Recipients-First. In the text-first scheme the mail
+ data is sent and acknowledged, then each recipient identification is
+ sent and acknowledged (or refused) separately. In the
+ recipients-first scheme the recipients are negotiated first, then the
+ text is sent and acknowledged (for all recipients at once). The
+ choice of scheme is up to the MTP-receiver, and depends on the way
+ mail is handled in the destination host.
+
+ The multi-recipient mail procedures are optional and the
+ determination of which scheme to use is negotiated. The use of the
+ multi-recipient schemes is strongly encouraged by the economy they
+ provide in transmission and processing.
+
+ The mail commands and replies have a rigid syntax. Replies also have
+ a numeric code. In the following, examples appear which use actual
+ commands and replies. The complete lists of commands and replies
+ appears in Section 5 on specifications.
+
+ Commands and replies are not case sensitive. That is, a command or
+ reply word may be upper case, lower case, or any mixture of upper and
+ lower case. Note that this is not true of mailbox user names. For
+ some hosts the user name is case sensitive, and MTP implementations
+ must take case to preserve the case of user names as they appear in
+ mailbox arguments.
+
+
+
+
+
+
+Sluizer & Postel [Page 3]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+3. BASIC MAIL
+
+ The basic command for transmitting mail is MAIL. This command causes
+ the transmitted data to be entered into the recipient's mailbox, or
+ accepted for relaying to the destination host.
+
+ The mail text is also sent on the transmission channel. This
+ requires that the end of the text be signalled so that the command
+ and reply dialog can be resumed. MTP signals the end of the mail
+ text by sending a line containing only a period. A transparency
+ procedure is used to prevent this interfering with the users text
+ (see Section 5.5.2).
+
+ MAIL <SP> FROM:<sender-path> <SP> TO:<receiver-path> <CRLF>
+
+ The <sender-path> contains the source mailbox; the
+ <receiver-path> contains the destination mailbox. If accepted,
+ the receiver-MTP returns a 354 reply and considers all
+ succeeding lines to be the message text. The message text is
+ terminated by a line containing only a period, upon which a 250
+ completion reply is returned. Various errors are possible.
+
+ Actually the <sender-path> and <receiver-path> are more than
+ just the mailboxes, they may be source routes. The
+ <receiver-path> is a source routing list of hosts and
+ destination mailbox; the <sender-path> is a reverse source
+ routing list of hosts and source mailbox.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 4] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ -------------------------------------------------------------
+
+ Example of MAIL (Basic Mail)
+
+ This MAIL command specifies the mail is sent by Waldo at host A,
+ and is to be delivered to Foo at host Y. Here we assume that host
+ A contacts host Y directly.
+
+ S: MAIL FROM:<waldo@A> TO:<Foo@Y> <CRLF>
+ R: 354 Start mail input; end with <CRLF>.<CRLF>
+ S: Blah blah blah blah....etc. etc. etc.
+ S: <CRLF>.<CRLF>
+ R: 250 Mail sent
+
+ The mail text has now been sent to "Foo".
+
+ Example 1
+
+ -------------------------------------------------------------
+
+ 3.1. FORWARDING
+
+ There are two possible preliminary replies that a receiver may use
+ to indicate that it is accepting mail for a user whose mailbox is
+ not at that host.
+
+ 151 User not local; will forward to <user>@<host>
+
+ This reply indicates that the receiver-MTP knows the user's
+ mailbox is on another host and will take responsibility for
+ forwarding the mail to that host. This reply is only sent
+ when the sender would not expect the mail to be forwarded.
+ That is, when <receiver-path> as given in the command
+ indicates mail relaying, this reply will not be used. This
+ reply could be used for an organization with several hosts
+ when each has a list of many of the users on the hosts. A
+ host can accept mail for any user on its list and forward it
+ to the correct host.
+
+ 152 User Unknown; mail will be forwarded by the operator
+
+ This reply indicates that the host does not recognize the
+ user name, but that it will accept the mail and have the
+ operator attempt to deliver it. This is useful if the user
+ name is misspelled, but may be a disservice if the mail is
+ really undeliverable.
+
+
+
+Sluizer & Postel [Page 5]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ If forwarding by the operator is unacceptable or if the
+ sending-user would prefer to send the mail directly to the
+ recipient's actual host, the action may be aborted.
+
+ The MTP-sender must accept or reject the proposal in the
+ preliminary reply by sending a continue (CONT) or abort (ABRT)
+ command. In the case of the continue, the next reply from the
+ MTP-receiver will be any of the replies expected for the MAIL
+ command, most likely "354 Start mail input, ...". In the case of
+ the abort, the next reply from the MTP-receiver will be "201
+ Command okay, action aborted".
+
+ 3.2. SOURCE ROUTING
+
+ The receiver-path may be a source route of the form
+ "@ONE,@TWO,JOE@THREE", where ONE, TWO, and THREE are hosts. This
+ form is used to emphasize the distinction between an address and a
+ route.
+
+ At some distant future time it might be necessary to expand the
+ mailbox format to include a region identifier, such as
+ "user@host@region". If this occured the MTP path convention
+ could be expanded to
+ "host@region,host@region,...user@host@region". For example,
+ "ONE@R1,TWO@R2,JOE@THREE@R3".
+
+ The mailbox is an absolute address, and the route is information
+ about how to get there. The two concepts should not be confused.
+
+ The elements of the receiver-path are to be moved to the
+ sender-path as the message is relayed from one MTP to another. The
+ sender-path is a reverse source route, that is, a source route to
+ the originator of the message. When an MTP deletes its identifier
+ from the receiver-path and inserts it into the sender-path, it
+ must use the name it is known by in the environment it is sending
+ into, not the environment the mail came from, in case the MTP is
+ known be different names in different environments.
+
+ When source routing is used the receiver-MTP will receive mail to
+ be relayed to another MTP. The receiver-MTP may accept the task
+ of relaying the mail or reject it in the same way it accepts or
+ reject mail for a local user. It does not use the 151 "User not
+ local" or 152 "User unknown" preliminary replies. Once the
+ receiver-MTP accepts the relaying task it receives the mail text
+ and transforms the command arguments by removing its own
+ identifier from the receiver-path and inserting it in the
+
+
+
+[Page 6] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ beginning of the sender-path. The receiver-MTP then becomes a
+ sender-MTP and establishes a transmission channel to the next MTP
+ in the receiver-path and sends it the mail.
+
+ If an MTP has accepted the task of relaying the mail and later
+ finds that the receiver-path is incorrect or that the mail cannot
+ be delivered for whatever reason, then it must construct a
+ notification message and send it to the originator of the
+ undeliverable mail as indicated by the sender-path. This
+ notification message must be from the MTP at this host. That is,
+ the sender-path of the notification message itself will be
+ "MTP@<host>", and in the notification message header the From
+ field will be "MTP at <host>". Of course, MTPs should not send
+ notification messages about problems with notification messages.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 7]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+4. MULTI-RECIPIENT MAIL
+
+ There are two MTP commands which allow the text of a message to be
+ mailed to several recipients simultaneously; such message
+ transmission is far more efficient than the practice of sending the
+ text again and again for each additional recipient at a host. In one
+ scheme, all recipients are specified first, and then the text is
+ sent. In the other scheme, the order is reversed and the text is
+ sent first, followed by the recipients. The sender-MTP suggests the
+ scheme it would prefer, but receiver-MTP controls which scheme is
+ actually used. To select a particular scheme, the MRSQ command is
+ used; to specify recipients after a scheme is chosen, MRCP commands
+ are given; and to furnish text, the MAIL command is used.
+
+ Both schemes are necessary because neither by itself is optimal for
+ all systems. MRSQ R allows more of a "bulk" mailing because
+ everything is saved up and then mailed simultaneously. This is very
+ useful for systems such as ITS where the MTP-receiver does not itself
+ write mail directly, but hands it on to a central mailer demon. The
+ more information (e.g., recipients) associated with a single
+ "hand-off", the more efficiently mail can be delivered.
+
+ By contrast, MRSQ T is geared to receiver-MTPs which want to deliver
+ mail directly, in one-by-one incremental fashion. For each given
+ recipient this scheme returns an individual success/failure reply
+ code which may depend on variable mail system factors such as
+ exceeding disk allocation, mailbox access conflicts, and so forth.
+ If these receiver-MTPs tried to emulate MRSQ Rs bulk mailing, they
+ would have to ensure that a success reply to the MAIL indeed meant
+ that it had been delivered to ALL recipients specified -- not just
+ some.
+
+ 4.1. SCHEME SELECTION: MRSQ
+
+ MRSQ is the means by which a sender-MTP can test for MRSQ/MRCP
+ implementation, select a particular scheme, reset its state, and
+ even do some rudimentary negotiation. Its format is as follows:
+
+ MRSQ [<SP> <scheme>] <CRLF>
+
+ <scheme> is a single character. The following are defined:
+ R Recipients first. If this is not implemented, T must be.
+ T Text first. If this is not implemented, R must be.
+ ? Request for preference. This must always be implemented.
+
+
+
+
+
+[Page 8] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ No argument means a "selection" of none of the schemes (the
+ default).
+
+ Possible replies are:
+ 200 OK, use the specified scheme
+ 215 <scheme> This is the scheme I prefer
+ 504 I understand MRSQ but can't use that scheme
+ 5xx Command unrecognized or unimplemented
+
+ There are three aspects of MRSQ. The first is that an MRSQ with
+ no argument must always return a 200 reply and restore the default
+ state of having no scheme selected. Any other reply implies that
+ MRSQ and hence MRCP are not understood or cannot be performed
+ correctly.
+
+ The second is that the use of "?" as a <scheme> asks the MTP
+ receiver to return a 215 reply in which the receiver specifies a
+ "preferred" scheme. The format of this reply is simple:
+
+ 215 <SP> <scheme> [<SP> <string>] <CRLF>
+
+ Any other reply (e.g., 4xx or 5xx) implies that MRSQ and MRCP
+ are not implemented, because "?" must always be implemented if
+ MRSQ is.
+
+ The third important point about MRSQ is that it always has the
+ side effect of reseting all schemes to their initial state. This
+ reset must be done no matter what the reply will be -- 200, 215,
+ or 504. The actions necessary for a reset will be explained when
+ discussing how each scheme actually works.
+
+ Note that the receiver gets to choose which scheme is used. The
+ sender must be prepared to do either.
+
+ 4.2. MESSAGE TEXT SPECIFICATION: MAIL
+
+ Regardless of which scheme (if any) has been selected, a MAIL
+ command with a non-null receiver-path argument will behave exactly
+ as before; the MRSQ/MRCP commands have no effect on it. However,
+ a normal MAIL command does have the same side effect as MRSQ; it
+ "resets" all schemes to their initial state.
+
+ It is only when the receiver-path argument is null that the
+ particular scheme chosen is important.
+
+ MAIL FROM:<sender-path> <CRLF>
+
+
+
+Sluizer & Postel [Page 9]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ Rather than producing an error, the receiver will accept message
+ text for this "null" recipient specification. What it does with
+ it depends on which scheme is in effect, and will be described in
+ the section on Scheme Mechanics.
+
+ 4.3. RECIPIENT SPECIFICATION: MRCP
+
+ In order to specify recipient names (i.e., mailboxes) and receive
+ some acknowledgment (or refusal) for each name, the following
+ command is used:
+
+ MRCP <SP> TO:<receiver-path> <CRLF>
+
+ Reply for no scheme:
+ 503 No scheme specified yet; use MRSQ
+ Replies for scheme T are identical to those for MAIL.
+ Replies for scheme R (recipients first):
+ 200 OK, name stored
+ 452 Recipient table full, this name not stored
+ 550 Recipient name rejected
+ 4xx Temporary error, try this name again later
+ 5xx Permanent error, report to sender
+
+ Note that use of this command is an error if no scheme has been
+ selected yet; an MRSQ <scheme> must have been given if MRCP is to
+ be used.
+
+ 4.4. SCHEME MECHANICS: MRSQ R (RECIPIENTS-FIRST)
+
+ In the recipients-first scheme, MRCP is used to specify names
+ which the MTP receiver stores in a list or table. Normally the
+ reply for each MRCP will be either a 200 for acceptance or a
+ 4xx/5xx rejection code. All 5xx codes are permanent rejections
+ (e.g., user not known) which should be reported to the human user,
+ whereas 4xx codes in general connote some temporary error that may
+ be rectified later. None of the 4xx/5xx replies impinge on
+ previous or succeeding MRCP commands, except for 452 which
+ indicates that no further MRCPs will succeed unless a message is
+ sent to the already stored recipients or a reset is done.
+
+ Sending message text to stored recipients is done by giving a MAIL
+ command with no receiver-path argument; that is, just MAIL <SP>
+ FROM: <sender-path> <CRLF>. Transmission of the message text is
+ exactly the same as for normal MAIL. However, a positive
+ acknowledgment at the end of transmission means the message has
+ been sent to ALL recipients that were remembered with MRCP, and a
+
+
+
+[Page 10] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ failure code means that it should be considered to have failed for
+ ALL of these specified recipients. This applies regardless of the
+ actual error code. Regardless of what the reply signifies, all
+ stored recipient names are flushed and forgotten -- in other
+ words, things are reset to their initial state. This purging of
+ the recipient name list must also be done as the reset side effect
+ of any use of MRSQ (or MAIL with a non-null receiver-path
+ argument).
+
+ A 452 reply (out of storage space) to an MRCP can be handled by
+ using MAIL to specify the message for currently stored recipients,
+ and then sending more MRCPs and another MAIL, as many times as
+ necessary. For example, if a receiver only had room for 10 names
+ this would result in a 50-recipient message being sent 5 times, to
+ 10 different recipients each time.
+
+ If a sender attempts to specify message text (MAIL with no
+ receiver-path argument) before any successful MRCPs have been
+ given, this should be treated exactly as a "normal" MAIL with a
+ null recipient would be; some receivers return an error, such as
+ "550 Null recipient".
+
+ -------------------------------------------------------------
+
+ Example of MRSQ R (Recipients First)
+
+ First the sender must establish that the receiver implements
+ MRSQ.
+
+ S: MRSQ <CRLF>
+ R: 200 OK, no scheme selected
+
+ An MRSQ with a null argument always returns a 200 if
+ implemented, selecting the default "scheme", i.e., none of
+ them. If MRSQ were not implemented, a code of 4xx or 5xx would
+ be returned.
+
+ S: MRSQ R <CRLF>
+ R: 200 OK, using that scheme
+
+ All is well; now the recipients can be specified.
+
+ S: MRCP TO:<Foo@Y> <CRLF>
+ R: 200 OK
+
+
+
+
+
+Sluizer & Postel [Page 11]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ S: MRCP TO:<Raboof@Y> <CRLF>
+ R: 550 No such user here
+
+ S: MRCP TO:<bar@Y> <CRLF>
+ R: 200 OK
+
+ S: MRCP TO:<@Y,@X,fubar@Z> <CRLF>
+ R: 200 OK
+
+ Note that the failure of "Raboof" has no effect on the storage
+ of mail for "Foo", "bar" or the mail to be relayed to "fubar@Z"
+ through host "X". Now the message text is furnished, by giving
+ a MAIL command with no receiver-path argument.
+
+ S: MAIL FROM:<waldo@A><CRLF>
+ R: 354 Start mail input; end with <CRLF>.<CRLF>
+ S: Blah blah blah blah....etc. etc. etc.
+ S: <CRLF>.<CRLF>
+ R: 250 Mail sent
+
+ The mail text has now been sent to "Foo" and "bar" as well as
+ relayed to "fubar@Z".
+
+ Example 2
+
+ -------------------------------------------------------------
+
+ 4.5. SCHEME MECHANICS: MRSQ T (TEXT-FIRST)
+
+ In the text-first scheme, MAIL with no receiver-path argument is
+ used to specify message text, which the receiver stores away.
+ Succeeding MRCPs are then treated as if they were MAIL commands,
+ except that none of the text transfer manipulations are done; the
+ stored message text is sent to the specified recipient, and a
+ reply code is returned identical to that which an actual MAIL
+ would invoke. (Note that any 2xx code indicates success.)
+
+ The stored message text is not forgotten until the next MAIL or
+ MRSQ, which will either replace it with new text or flush it
+ entirely. Any use of MRSQ will reset this scheme by flushing
+ stored text, as will any use of MAIL with a non-null receiver-path
+ argument.
+
+ If an MRCP is seen before any message text has been stored, the
+ sender in effect is trying to send a null message; some receivers
+ might allow this, others would return an error code.
+
+
+
+[Page 12] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ -------------------------------------------------------------
+
+ Example of MRSQ T (Text First)
+
+ First the sender must establish that the receiver implements
+ MRSQ.
+
+ S: MRSQ ? <CRLF>
+ R: 215 T Text first, please
+
+ MRSQ is indeed implemented, and the receiver says that it
+ prefers "T", but that needn't stop the sender from trying
+ something else.
+
+ S: MRSQ R <CRLF>
+ R: 504 Sorry, I really can't do that
+
+ It's possible that it could have understood "R" also, but in
+ general it's best to use the "preferred" scheme, since the
+ receiver knows which is most efficient for its particular site.
+
+ S: MRSQ T <CRLF>
+ R: 200 OK, using that scheme
+
+ Scheme "T" is now selected, and the message text is sent by
+ giving a mail command with no receiver-path argument.
+
+ S: MAIL FROM:<WALDO@A><CRLF>
+ R: 354 Start mail input; end with <CRLF>.<CRLF>
+ S: Blah blah blah blah....etc. etc. etc.
+ S: <CRLF>.<CRLF>
+ R: 250 Mail stored
+
+ Now recipients can be specified.
+
+ S: MRCP TO:<Foo@Y> <CRLF>
+ R: 250 Stored mail sent
+
+ S: MRCP TO:<Raboof@Y> <CRLF>
+ R: 550 No such user here
+
+ S: MRCP TO:<bar@Y> <CRLF>
+ R: 250 Stored mail sent
+
+ S: MRCP TO:<@Y,@X,fubar@Z> <CRLF>
+ R: 250 Mail accepted for relaying
+
+
+
+Sluizer & Postel [Page 13]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ The text has now been sent to "Foo" and "bar" at host "Y" and
+ will be relayed to "fubar@Z" through host "X", and still
+ remains stored. A new message can be sent with another
+ MAIL/MRCP ... sequence, but a careful sender would reset the
+ state using the exchange below.
+
+ S: MRSQ ? <CRLF>
+ R: 215 T Text first, please
+
+ Which resets the state without altering the scheme in effect.
+
+ Example 3
+
+ -------------------------------------------------------------
+
+ 4.6. DISCUSSION
+
+ Because these commands are not required in the minimum
+ implementation of MTP, one must be prepared to deal with sites
+ which don't recognize either MRSQ or MRCP. "MRSQ" and "MRSQ ?"
+ are explicitly designed as tests to see whether either scheme is
+ implemented. MRCP is not designed as a test, and a failure return
+ of the "unimplemented" variety could be confused with "No scheme
+ selected yet", or even with "Recipient unknown".
+
+ There is no way to indicate in a positive response to "MRSQ ?"
+ that the preferred "scheme" for a receiver is that of the default
+ state; i.e., none of the multi-recipient schemes. The rationale
+ is that in this case, it would be pointless to implement MRSQ/MRCP
+ at all, and the response would therefore be negative.
+
+ One reason that the use of MAIL is restricted to null
+ receiver-path arguments with this multi-recipient extension is the
+ ambiguity that would result if a non-null receiver-path argument
+ were allowed. For example, if MRSQ R was in effect and some MRCPs
+ had been given, and a MAIL FROM:<X@Y> TO:<FOO@Z><CRLF> was done,
+ there would be no way to distinguish a failure reply for mailbox
+ "FOO" from a global failure for all recipients specified. A
+ similar situation exists for MRSQ T; it would not be clear whether
+ the text was stored and the mailbox failed, or vice versa, or
+ both.
+
+ "Resets" of all schemes are done by all MRSQs and "normal" MAILs
+ to avoid confusion and overly complicated implementation. The
+ MRSQ command implies a change or uncertainty of status, and the
+ MAIL command would otherwise have to use some independent
+
+
+
+[Page 14] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ mechanisms to avoid clobbering the data bases (e.g., message text
+ storage area) used by the T/R schemes. However, once a scheme is
+ selected, it remains in effect. The recommended way for doing a
+ reset, without changing the current selection, is with "MRSQ ?".
+ Remember that "MRSQ" alone reverts to the no-scheme state.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 15]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+5. SPECIFICATIONS
+
+ 5.1. MTP COMMANDS
+
+ 5.1.1. COMMAND SEMANTICS
+
+ The MTP commands define the mail transfer or the mail system
+ function requested by the user. MTP commands are character
+ strings terminated by <CRLF>. The command codes themselves are
+ alphabetic characters terminated by <SP> if parameters follow
+ and <CRLF> otherwise. The syntax of mailboxes must conform to
+ receiver site conventions. The MTP commands are discussed
+ below. MTP replies are discussed in the Section 5.2.
+
+ MAIL (MAIL)
+
+ This command is used to send mail over the transmission
+ channel. The argument field contains a sender-path sequence
+ and optional receiver-path sequence.
+
+ The sender-path sequence consists of an optional list of
+ hosts and the sender mailbox. When the list of hosts is
+ present, it is "reverse" source routing information and
+ indicates that the mail was relayed through each host on the
+ list (the first host in the list was the most recent relay).
+ This list is used as source routing to return non-delivery
+ notices to the sender. As each relay host adds itself to
+ the beginning of the list, it must use its name as known in
+ the network to which it is relaying the mail rather than the
+ network from which the mail came (if they are different).
+
+ If the receiver-path sequence is present, it consists of an
+ optional list of hosts and a destination mailbox. When the
+ list of hosts is present, it is source routing information
+ and indicates that the mail must be relayed to the first
+ host on the list.
+
+ The receiver treats the lines following the command as mail
+ text from the sender. The mail text is terminated by the
+ character sequence "<CRLF>.<CRLF>", (see Section 5.5.2 on
+ Transparency).
+
+ As mail is relayed along the receiver-path sequence, each
+ relay host must remove itself from the path sequence and put
+ itself at the beginning of the sender-path sequence. When
+ mail reaches its ultimate destination (the receiver-path
+
+
+
+[Page 16] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ sequence has only a destination mailbox), the receiver-MTP
+ inserts it into the destination mailbox in accordance with
+ its host mail conventions. (For example, "MAIL FROM:<X@Y>
+ TO:<@A,@B,C@D> <CRLF>" will eventually be relayed as "MAIL
+ FROM:<@A,X@Y> TO:<@B,C@D> <CRLF>.)
+
+ If the receiver-path sequence is empty, the mail is destined
+ for a printer or other designated place for host general
+ delivery mail (if allowed at this host). The mail may be
+ marked as sent from the sender as specified in the
+ sender-path sequence field.
+
+ MAIL RECIPIENT SCHEME QUESTION (MRSQ)
+
+ This MTP command is used to select a scheme for the
+ transmission of mail to several users at the same host. The
+ schemes are recipients-first, or text-first.
+
+ MAIL RECIPIENT (MRCP)
+
+ This command is used to identify the individual recipients
+ of the mail in the transmission of mail for multiple users
+ at one host.
+
+ HELP (HELP)
+
+ This command causes the receiver to send helpful information
+ regarding its implementation status over the transmission
+ channel to the receiver. The command may take an argument
+ (e.g., any command name) and return more specific
+ information as a response.
+
+ QUIT (QUIT)
+
+ This command specifies that the receiver must close the
+ transmission channel.
+
+ NOOP (NOOP)
+
+ This command does not affect any parameters or previously
+ entered commands. It specifies no action other than that
+ the receiver send an OK reply.
+
+
+
+
+
+
+
+Sluizer & Postel [Page 17]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ CONTINUE (CONT)
+
+ This command specifies that the previously specified action
+ is to be continued. This is sent only following a
+ preliminary reply.
+
+ ABORT (ABRT)
+
+ This command specifies that the previously specified action
+ is to be aborted. This is sent only following a preliminary
+ reply. It specifies no further action other than that the
+ receiver send an OK reply.
+
+ 5.1.2. COMMAND SYNTAX
+
+ The commands begin with a command code followed by an argument
+ field. The command codes are four alphabetic characters.
+ Upper and lower case alphabetic characters are to be treated
+ identically. Thus any of the following may represent the mail
+ command:
+
+ MAIL Mail mail MaIl mAIl
+
+ This also applies to any symbols representing parameter values,
+ such as R or r for RECIPIENT first. The command codes and the
+ argument fields are separated by one or more spaces.
+
+ But, note that in the sender-path and receiver-path arguments
+ case is important. In particular, in some hosts the user "foo"
+ is different from the user "Foo".
+
+ The argument field consists of a variable length character
+ string ending with the character sequence <CRLF>. It should be
+ noted that the receiver is to take no action until the end of
+ the line is received.
+
+ Square brackets denote an optional argument field. If the
+ option is not taken, the appropriate default is implied. All
+ characters are in the ASCII characters set.
+
+
+
+
+
+
+
+
+
+
+[Page 18] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ The following are the MTP commands:
+
+ MAIL <SP> FROM:<sender-path> [<SP> TO:<receiver-path>] <CRLF>
+
+ MRSQ [<SP> <scheme>] <CRLF>
+
+ MRCP <SP> TO:<receiver-path> <CRLF>
+
+ HELP [<SP> <string>] <CRLF>
+
+ QUIT <CRLF>
+
+ NOOP <CRLF>
+
+ CONT <CRLF>
+
+ ABRT <CRLF>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 19]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ The syntax of the above argument fields (using BNF notation
+ where applicable) is given below. The "..." notation indicates
+ that a field may be repeated one or more times.
+
+ <sender-path> ::= <path>
+
+ <receiver-path> ::= <path>
+
+ <scheme> ::= "R" | "T" | "?"
+
+ <string> ::= <char> | <char> <string>
+
+ <path> ::= "<" ["@" <host> "," ...] <mailbox> ">"
+
+ <host> ::= <a> <string> | "#" <number> | "[" <dotnum> "]"
+
+ <mailbox> ::= <user> "@" <host>
+
+ <user> ::= <string>
+
+ <char> ::= <c> | '\' <c> | '\' <s>
+
+ <dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>
+
+ <number> ::= <d> | <d> <number>
+
+ <snum> ::= three digits representing an integer value in the
+ range 0 through 255
+
+ <specials> ::= '<', '>', '(', ')', '\', ',', ';', ':', '@',
+ '"', and the control characters (ASCII codes 0 through 37
+ octal inclusive and 177 octal)
+
+ <a> ::= any one of the 26 letters A through Z in either case
+
+ <c> ::= any one of the 128 ASCII characters except
+ <specials>
+
+ <d> ::= any one of the ten digits 0 through 9
+
+ <s> ::= any one of <specials>
+
+ Note that the backslash, '\', is a quote character, which is
+ used to indicate that the next character is to be used
+ literally instead of with its normal interpretation. For
+
+
+
+
+[Page 20] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ example, "Joe\,Smith" could be used to indicate a single
+ nine character user field with comma being the fourth
+ character of the field.
+
+ Hosts are generally known by names which are translated to
+ addresses in each host. Sometimes a host is not known to the
+ translation function and communication is blocked. To bypass
+ this barrier numeric forms are also allowed for host "names".
+ One form is a decimal integer prefixed by a pound sign, "#",
+ which indicates the number is the address of the host. Another
+ form is four small decimal integers separated by dots and
+ enclosed by brackets, e.g., "[123.255.37.321]", which indicates
+ a 32 bit ARPA Internet Address in four eight bit fields.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 21]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ 5.2. MTP REPLIES
+
+ Replies to MTP commands are devised to ensure the synchronization
+ of requests and actions in the process of mail transfer, and to
+ guarantee that the sender-MTP always knows the state of the
+ receiver-MTP. Every command must generate exactly one reply.
+ Additionally, some commands must occur sequentially, such as
+ MRSQ T->MAIL->MRCP or MRSQ R->MRCP->MAIL.
+
+ The details of the command-reply sequence are made explicit in
+ the Sections 5.3 and 5.4 on Sequencing and State Diagrams.
+
+ An MTP reply consists of a three digit number (transmitted as
+ three alphanumeric characters) followed by some text. The number
+ is intended for use by automata to determine what state to enter
+ next; the text is meant for the human user. It is intended that
+ the three digits contain enough encoded information that the
+ sender-MTP will not need to examine the text and may either
+ discard it or pass it on to the user, as appropriate. In
+ particular, the text may be receiver-dependent, so there are
+ likely to be varying texts for each reply code. Further
+ explanation of the assignment of reply codes is given in the
+ Appendix E on the Theory of Reply Codes. Formally, a reply is
+ defined to be the sequence: a three-digit code, <SP>, one line of
+ text, and <CRLF>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 22] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ 5.2.1. REPLY CODES BY FUNCTION GROUPS
+
+ 200 Command okay
+ 201 Command okay, action aborted
+ 500 Syntax error, command unrecognized
+ [This may include errors such as command line too long]
+ 501 Syntax error in parameters or arguments
+ 502 Command not implemented
+ 503 Bad sequence of commands
+ 504 Command parameter not implemented
+
+ 211 System status, or system help reply
+ 214 Help message
+ [Information on how to use the receiver or the meaning of a
+ particular non-standard command; this reply is useful only
+ to the human user]
+ 215 <scheme> is the preferred scheme
+
+ 120 <host> Service ready in nnn minutes
+ 220 <host> Service ready for new user
+ 221 <host> Service closing transmission channel
+ 421 <host> Service not available, closing transmission channel
+ [This may be a reply to any command if the service knows it
+ must shut down]
+
+ 151 User not local; will forward to <user>@<host>
+ 152 User unknown; mail will be forwarded by the operator
+ 250 Requested mail action okay, completed
+ 450 Requested mail action not taken: mailbox unavailable
+ [E.g., mailbox busy]
+ 550 Requested action not taken: mailbox unavailable
+ [E.g., mailbox not found, no access]
+ 451 Requested action aborted: local error in processing
+ 452 Requested action not taken: insufficient system storage
+ 552 Requested mail action aborted: exceeded storage allocation
+ [For current mailbox location]
+ 553 Requested action not taken: mailbox name not allowed
+ [E.g., mailbox syntax incorrect]
+ 354 Start mail input; end with <CRLF>.<CRLF>
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 23]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ 5.2.2. NUMERIC ORDER LIST OF REPLY CODES
+
+ 120 <host> Service ready in nnn minutes
+ 151 User not local; will forward to <user>@<host>
+ 152 User unknown; mail will be forwarded by the operator
+
+ 200 Command okay
+ 201 Command okay, action aborted
+ 211 System status, or system help reply
+ 214 Help message
+ [Information on how to use the receiver or the meaning of a
+ particular non-standard command; this reply is useful only
+ to the human user]
+ 215 <scheme> is the preferred scheme
+ 220 <host> Service ready for new user
+ 221 <host> Service closing transmission channel
+ 250 Requested mail action okay, completed
+
+ 354 Start mail input; end with <CRLF>.<CRLF>
+
+ 421 <host> Service not available, closing transmission channel
+ [This may be a reply to any command if the service knows it
+ must shut down]
+ 450 Requested mail action not taken: mailbox unavailable
+ [E.g., mailbox busy]
+ 451 Requested action aborted: local error in processing
+ 452 Requested action not taken: insufficient system storage
+
+ 500 Syntax error, command unrecognized
+ [This may include errors such as command line too long]
+ 501 Syntax error in parameters or arguments
+ 502 Command not implemented
+ 503 Bad sequence of commands
+ 504 Command parameter not implemented
+ 550 Requested action not taken: mailbox unavailable
+ [E.g., mailbox not found, no access]
+ 552 Requested mail action aborted: exceeded storage allocation
+ [For current mailbox location]
+ 553 Requested action not taken: mailbox name not allowed
+ [E.g., mailbox syntax incorrect]
+
+
+
+
+
+
+
+
+
+[Page 24] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ 5.3. SEQUENCING OF COMMANDS AND REPLIES
+
+ The communication between the sender and receiver is intended to
+ be an alternating dialogue. As such, the sender issues an MTP
+ command and the receiver responds with a prompt primary reply.
+ The sender should wait for this response before sending further
+ commands.
+
+ The preliminary (1xx) and intermediate (3xx) replies indicate that
+ further commands and information are required to complete the
+ required action. The preliminary replies require either a
+ continue or abort command to proceed; the intermediate replies
+ require action dependent further commands.
+
+ One important reply is the connection greetings. Under normal
+ circumstances, a receiver will send a 220 "Awaiting input" reply
+ when the connection is completed. The sender should wait for this
+ greeting message before sending any commands. If the receiver is
+ unable to accept input right away, it should send a 120 "Expected
+ delay" reply immediately. The sender can then indicate it is
+ willing to wait via a continue command, or not via the abort
+ command. The receiver will respond to the abort with a 201 reply,
+ and to the continue with the 220 reply when ready.
+
+ Note: all the greeting type replies have the official name of
+ the server host as the first word following the reply code.
+
+ For example,
+
+ 220 <SP> USC-ISIF <SP> Service ready <CRLF>
+
+ The table below lists alternative success and failure replies for
+ each command. These must be strictly adhered to; a receiver may
+ substitute text in the replies, but the meaning and action implied
+ by the code numbers and by the specific command reply sequence
+ cannot be altered.
+
+ COMMAND-REPLY SEQUENCES
+
+ Each command is listed with its possible replies. Preliminary
+ replies are listed first with their succeeding replies indented
+ under them, then success and failure completion, and finally
+ intermediary replies with the remaining commands from the
+ sequence following. The prefixes used before the possible
+ replies are "P" for preliminary, "I" for intermediate, "S" for
+ success, "F" for failure, and "E" for error. The 421 reply
+
+
+
+Sluizer & Postel [Page 25]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ (service not available, closing transmission channel) may be
+ given to any command if the MTP-receiver knows it must shut
+ down. This listing forms the basis for the State Diagrams, in
+ Section 5.4.
+
+ CONNECTION ESTABLISHMENT
+ P: 120 -> CONT -> S: 220
+ F: 421
+ ABRT S: 201
+ F: 421
+ S: 220
+ F: 421
+ MAIL
+ P: 151 -> CONT -> I: 354 -> text -> S: 250
+ 152 F: 451,552,450,
+ 550,452,553
+ ABRT -> S: 201
+ F: 451,552,450,550,452,553
+ I: 354 -> text -> S: 250
+ F: 451,552,450,550,452,553
+ F: 451, 552, 450, 550, 452, 553
+ E: 500, 501, 502, 421
+ MRSQ
+ S: 200, 215
+ E: 500, 501, 502, 504, 421
+ MRCP
+ P: 151 -> CONT -> S: 200, 215, 250
+ 152 F: 451,552,450,550,452,553
+ ABRT -> S: 201
+ F: 451,552,450,550,452,553
+ S: 200, 215, 250
+ F: 451, 552, 450, 550, 452, 553
+ E: 500, 501, 502, 503, 421
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 26] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ QUIT
+ S: 221
+ E: 500, 421
+ HELP
+ S: 211, 214
+ E: 500, 501, 502, 504, 421
+ NOOP
+ S: 200
+ E: 500, 421
+ CONT
+ S: depends on previous command
+ F: depends on previous command
+ E: 500, 501, 502, 504, 421
+ ABRT
+ S: 201,
+ E: 500, 501, 502, 504, 421
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 27]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ 5.4. STATE DIAGRAMS
+
+ Following are state diagrams for a very simple minded MTP
+ implementation. Only the first digit of the reply codes is used.
+ There is one state diagram for each group of MTP commands.
+
+ The command groupings were determined by constructing a model for
+ each command and then collecting together the commands with
+ structurally identical models.
+
+ For each command there are three possible outcomes: "success"
+ (S), "failure" (F), and "error" (E). In the state diagrams below
+ we use the symbol B for "begin", and the symbol W for "wait for
+ reply".
+
+ First, the diagram that represents most of the MTP commands:
+
+
+ 1,3 +---+
+ ----------->| E |
+ | +---+
+ |
+ +---+ cmd +---+ 2 +---+
+ | B |---------->| W |---------->| S |
+ +---+ +---+ +---+
+ |
+ | 4,5 +---+
+ ----------->| F |
+ +---+
+
+
+ This diagram models the commands:
+
+ HELP, MRCP, MRSQ, NOOP, QUIT, ABRT.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 28] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ A more complex diagram models the MAIL command:
+
+
+ ABRT +---+ 1,3
+ CONT ---- ------------->| W |-------
+ | | +---+ |
+ | |1 4,5| |2 V
+ +---+ cmd -->+---+ 2 | | +---+
+ | B |---------->| W |-------------------->| E |
+ +---+ +---+ ------------>+---+
+ 3| |4,5 | | |
+ | | | | |
+ -------------- ------ | | |
+ | | | | ---->+---+
+ | ----------------------->| S |
+ | | | | | +---+
+ | | -------- |
+ | | | | |
+ V 2| |1,3 | |
+ +---+ text +---+ | ------->+---+
+ | |---------->| W | --------------->| F |
+ +---+ +---+-------------------->+---+
+ 4,5
+
+
+ Note that the "text" here is a series of lines sent from the
+ sender to the receiver with no response expected until the last
+ line is sent.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 29]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ 5.5. DETAILS
+
+ 5.5.1. MINIMUM IMPLEMENTATION
+
+ In order to make MTP workable, the following minimum
+ implementation is required for all receivers:
+
+ COMMANDS -- MAIL
+ QUIT
+ NOOP
+
+ 5.5.2. TRANSPARENCY
+
+ Without some provision for data transparency the character
+ sequence "<CRLF>.<CRLF>" ends the the mail text and cannot be
+ sent by the user. In general, users are not aware of such
+ "forbidden" sequences. To allow all user composed text to be
+ transmitted transparently the following procedures are used.
+
+ 1. Before sending a line of mail text the sender-MTP checks the
+ first character of the line. If it is a period, one additional
+ period is inserted at the beginning of the line.
+
+ 2. When a line of mail text is received by the receiver-MTP it
+ checks the the line. If the line is composed of a single
+ period it is the end of mail. If the first character is a
+ period and there are other characters on the line, the first
+ character is deleted.
+
+ 5.5.3. SIZES
+
+ There are several objects that ought to have defined maximum
+ sizes.
+
+ user
+
+ The maximum total length of a user name is 40 characters.
+
+ host
+
+ The maximum total length of a host name or number is 20
+ characters.
+
+
+
+
+
+
+
+[Page 30] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ path
+
+ The maximum total length of a sender-path or
+ receiver-path is 100 characters.
+
+ command line
+
+ The maximum total length of a command line including the
+ command word and the <CRLF> is 200 characters.
+
+ reply line
+
+ The maximum total length of a reply line including the
+ reply code and the <CRLF> is 65 characters.
+
+ text line
+
+ The maximum total length of a text line including the the
+ <CRLF> is 1000 characters.
+
+ To the maximum extent possible implementation techniques which
+ impose no limits at all to the length of these objects should
+ be used.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 31]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+APPENDIX A
+
+ TCP Transport service
+
+ The Transmission Control Protocol [1] is used in the ARPA
+ Internet, and in any network following the US DoD standards for
+ internetwork protocols.
+
+ Connection Establishment
+
+ The MTP transmission channel is a TCP connection established
+ between the sender process port U and the receiver process port
+ L. This single full duplex connection is used as the
+ transmission channel. This protocol is assigned the service
+ port 57 (71 octal), that is L=57.
+
+ Data Transfer
+
+ The TCP connection supports the transmission of 8-bit bytes.
+ The MTP data is 7-bit ASCII characters. Each character is
+ transmitted as a 8-bit byte with the high-order bit cleared to
+ zero.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 32] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+APPENDIX B
+
+ NCP Transport service
+
+ The ARPANET Host-to-Host Protocol [2] (implemented by the Network
+ Control Program) may be used in the ARPANET.
+
+ Connection Establishment
+
+ The MTP transmission channel is established via NCP between the
+ the sender process socket U and receiver process socket L. The
+ Initial Connection Protocol [3] is followed resulting in a pair
+ of simplex connections. This pair of connections is used as
+ the transmission channel. This protocol is assigned the
+ contact socket 57 (71 octal), that is L=57.
+
+ Data Transfer
+
+ The NCP data connections are established in 8-bit byte mode.
+ The MTP data is 7-bit ASCII characters. Each character is
+ transmitted as a 8-bit byte with the high-order bit cleared to
+ zero.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 33]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+APPENDIX C
+
+ NITS
+
+ The Network Independent Transport Service [4] may be used.
+
+ Connection Establishment
+
+ The MTP transmission channel is established via NITS between
+ the the sender process and receiver process. The sender
+ process executes the CONNECT primitive, and the waiting
+ receiver process executes the ACCEPT primitive.
+
+ Data Transfer
+
+ The NITS connection supports the transmission of 8-bit bytes.
+ The MTP data is 7-bit ASCII characters. Each character is
+ transmitted as a 8-bit byte with the high-order bit cleared to
+ zero.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 34] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+APPENDIX D
+
+ X.25 Transport service
+
+ It may be possible to use the X.25 service [5] as provided by the
+ Public Data Networks directly, but there are indications that it
+ is too error prone to qualify as a reliable channel. It is
+ suggested that a reliable end-to-end protocol such as TCP be used
+ on top of X.25 connections.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 35]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+APPENDIX E
+
+ Theory of Reply Codes
+
+ The three digits of the reply each have a special significance.
+ The first digit denotes whether the response is good, bad or
+ incomplete. An unsophisticated sender-MTP will be able to
+ determine its next action (proceed as planned, redo, retrench,
+ etc.) by simply examining this first digit. A sender-MTP that
+ wants to know approximately what kind of error occurred (e.g.,
+ mail system error, command syntax error) may examine the second
+ digit, reserving the third digit for the finest gradation of
+ information.
+
+ There are five values for the first digit of the reply code:
+
+ 1yz Positive Preliminary reply
+
+ The command has been accepted, but the requested action
+ is being held in abeyance, pending confirmation of the
+ information in this reply. The sender-MTP should send
+ another command specifying whether to continue or abort
+ the action.
+
+ 2yz Positive Completion reply
+
+ The requested action has been successfully completed. A
+ new request may be initiated.
+
+ 3yz Positive Intermediate reply
+
+ The command has been accepted, but the requested action
+ is being held in abeyance, pending receipt of further
+ information. The sender-MTP should send another command
+ specifying this information. This reply is used in
+ command sequence groups.
+
+ 4yz Transient Negative Completion reply
+
+ The command was not accepted and the requested action did
+ not occur. However, the error condition is temporary and
+ the action may be requested again. The sender should
+ return to the beginning of the command sequence (if any).
+ It is difficult to assign a meaning to "transient" when
+ two different sites (receiver- and sender- MTPs) must
+ agree on the interpretation. Each reply in this category
+
+
+
+[Page 36] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ might have a different time value, but the sender-MTP is
+ encouraged to try again. A rule of thumb to determine if
+ a reply fits into the 4yz or the 5yz category (see below)
+ is that replies are 4yz if they can be repeated without
+ any change in command form or in properties of the sender
+ or receiver. (E.g., the command is repeated identically;
+ the receiver does not put up a new implementation).
+
+ 5yz Permanent Negative Completion reply
+
+ The command was not accepted and the requested action did
+ not occur. The sender-MTP is discouraged from repeating
+ the exact request (in the same sequence). Even some
+ "permanent" error conditions can be corrected, so the
+ human user may want to direct the sender-MTP to
+ reinitiate the command sequence by direct action at some
+ point in the future (e.g., after the spelling has been
+ changed, or the user has altered the account status.)
+
+ The second digit encodes responses in specific categories:
+
+ x0z Syntax -- These replies refer to syntax errors,
+ syntactically correct commands that don't fit any
+ functional category, and unimplemented or superfluous
+ commands.
+
+ x1z Information -- These are replies to requests for
+ information, such as status or help.
+
+ x2z Connections -- These are replies referring to the
+ transmission channel.
+
+ x3z Unspecified as yet.
+
+ x4z Unspecified as yet.
+
+ x5z Mail system -- These replies indicate the status of
+ the receiver mail system vis-a-vis the requested
+ transfer or other mail system action.
+
+ The third digit gives a finer gradation of meaning in each
+ category specified by the second digit. The list of replies
+ illustrates this. Each reply text is recommended rather than
+ mandatory, and may even change according to the command with
+ which it is associated. On the other hand, the reply codes
+ must strictly follow the specifications in this section.
+
+
+
+Sluizer & Postel [Page 37]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ Receiver implementations should not invent new codes for
+ slightly different situations from the ones described here, but
+ rather adapt codes already defined.
+
+ For example, a command such as NOOP whose successful execution
+ does not offer the sender-MTP any new information will return a
+ 200 reply. The response is 502 when the command requests an
+ unimplemented non-site-specific action. A refinement of that
+ is the 504 reply for a command that is implemented, but that
+ requests an unimplemented parameter.
+
+ The reply text may be longer than a single line; in these cases
+ the complete text must be marked so the sender-MTP knows when it
+ can stop reading the reply. This requires a special format to
+ indicate a multiple line reply.
+
+ The format for multi-line replies requires that every line,
+ except the last, begin with the reply code, followed
+ immediately by a hyphen, "-" (also known as minus), followed by
+ text. The last line will begin with the reply code, followed
+ immediately by <SP>, optionally some text, and <CRLF>.
+
+ For example:
+ 123-First line
+ 123-Second line
+ 123-234 text beginning with numbers
+ 123 The last line
+
+ The sender-MTP then simply needs to search for the reply code
+ followed by <SP> at the beginning of a line, and ignore all
+ preceding lines.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+[Page 38] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+GLOSSARY
+
+ ASCII
+
+ American Standard Code for Information Interchange [6].
+
+ command
+
+ A request for a mail service action sent by the sender-MTP to the
+ receiver-MTP.
+
+ host
+
+ A computer in the internetwork environment on which mailboxes or
+ MTP processes reside.
+
+ line
+
+ A line of text ending with a <CRLF>.
+
+ mail
+
+ A sequence of ASCII characters of arbitrary length, which conforms
+ to the standard set in RFC 733 (Standard for the Format of ARPA
+ Network Text Messages [7]).
+
+ mailbox
+
+ A character string (address) which identifies a user to whom mail
+ is to be sent. Mailbox normally consists of the host and user
+ specifications. The standard mailbox naming convention is defined
+ to be "user@host". Additionally, the "container" in which mail is
+ stored.
+
+ receiver-MTP process
+
+ A process which transfers mail in cooperation with a sender-MTP
+ process. It waits for a connection to be established via the
+ transport service. It receives MTP commands from the sender-MTP,
+ sends replies, and governs the transfer of mail.
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 39]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+ reply
+
+ A reply is an acknowledgment (positive or negative) sent from
+ receiver to sender via the transmission channel in response to a
+ MTP command. The general form of a reply is a completion code
+ (including error codes) followed by a text string. The codes are
+ for use by programs and the text is usually intended for human
+ users.
+
+ sender-MTP process
+
+ A process which transfers mail in cooperation with a receiver-MTP
+ process. A local language may be used in the user interface
+ command/reply dialogue. The sender-MTP initiates the transport
+ service connection. It initiates MTP commands, receives replies,
+ and governs the transfer of mail.
+
+ transmission channel
+
+ A full-duplex communication path between a sender-MTP and a
+ receiver-MTP for the exchange of commands, replies, and mail text.
+
+ transport service
+
+ Any reliable stream-oriented data communication services. For
+ example, NCP, TCP, NITS.
+
+ user
+
+ A human being (or a process on behalf of a human being) wishing to
+ obtain mail transfer service. In addition, a recipient of
+ computer mail.
+
+ word
+
+ A human being (or a process on behalf of a human being) wishing to
+ obtain mail transfer service. In addition, a recipient of
+ computer mail.
+
+ <CRLF>
+
+ The characters carriage return and line feed (in that order).
+
+
+
+
+
+
+
+[Page 40] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ <SP>
+
+ The space character.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 41]
+
+
+
+May 1981 RFC 780
+Mail Transfer Protocol
+
+
+
+REFERENCES
+
+ [1] TCP
+
+ Postel, J., ed., "DOD Standard Transmission Control Protocol",
+ IEN 129, RFC 761, USC/Information Sciences Institute,
+ NTIS ADA082609, January 1980. Appears in: Computer Communication
+ Review, Special Interest Group on Data Communications, ACM, V.10,
+ N.4, October 1980.
+
+ [2] NCP
+
+ McKenzie,A., "Host/Host Protocol for the ARPA Network", NIC 8246,
+ January 1972. Also in: Feinler, E. and J. Postel, eds., "ARPANET
+ Protocol Handbook", NIC 7104, for the Defense Communications
+ Agency by SRI International, Menlo Park, California, Revised
+ January 1978.
+
+ [3] Initial Connection Protocol
+
+ Postel, J., "Official Initial Connection Protocol", NIC 7101,
+ 11 June 1971. Also in: Feinler, E. and J. Postel, eds., "ARPANET
+ Protocol Handbook", NIC 7104, for the Defense Communications
+ Agency by SRI International, Menlo Park, California, Revised
+ January 1978.
+
+ [4] NITS
+
+ PSS/SG3, "A Network Independent Transport Service", Study Group 3,
+ The Post Office PSS Users Group, February 1980. Available from
+ the DCPU, National Physical Laboratory, Teddington, UK.
+
+ [5] X.25
+
+ CCITT, "Recommendation X.25 - Interface Between Data Terminal
+ Equipment (DTE) and Data Circuit-terminating Equipment (DCE) for
+ Terminals Operating in the Packet Mode on Public Data Networks,"
+ CCITT Orange Book, Vol. VIII.2, International Telephone and
+ Telegraph Consultative Committee, Geneva, 1976.
+
+
+
+
+
+
+
+
+
+
+[Page 42] Sluizer & Postel
+
+
+
+RFC 780 May 1981
+ Mail Transfer Protocol
+
+
+
+ [6] ASCII
+
+ ASCII, "USA Code for Information Interchange", United States of
+ America Standards Institute, X3.4, 1968. Also in: Feinler, E.
+ and J. Postel, eds., "ARPANET Protocol Handbook", NIC 7104, for
+ the Defense Communications Agency by SRI International, Menlo
+ Park, California, Revised January 1978.
+
+ [7] RFC 733
+
+ Crocker, D., J. Vittal, K. Pogran, and D. Henderson, "Standard for
+ the Format of ARPA Network Text Messages," RFC 733, NIC 41952,
+ November 1977. Also in: Feinler, E. and J. Postel, eds.,
+ "ARPANET Protocol Handbook", NIC 7104, for the Defense
+ Communications Agency by SRI International, Menlo Park,
+ California, Revised January 1978.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Sluizer & Postel [Page 43]
+