diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc780.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc780.txt')
-rw-r--r-- | doc/rfc/rfc780.txt | 2599 |
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] + |