Annotation of 43BSD/usr.lib/sendmail/doc/rfc821.lpr, revision 1.1.1.1

1.1       root        1: 
                      2:                                                                         
                      3: 
                      4:    RFC 821
                      5:                                     
                      6:                                     
                      7:                                     
                      8:                                     
                      9:                                     
                     10:                      SIMPLE MAIL TRANSFER PROTOCOL
                     11:                                     
                     12:                                     
                     13:                                     
                     14:                            Jonathan B. Postel
                     15: 
                     16: 
                     17: 
                     18: 
                     19: 
                     20: 
                     21: 
                     22: 
                     23: 
                     24: 
                     25: 
                     26: 
                     27: 
                     28: 
                     29: 
                     30: 
                     31: 
                     32: 
                     33: 
                     34: 
                     35: 
                     36: 
                     37: 
                     38: 
                     39: 
                     40: 
                     41: 
                     42: 
                     43: 
                     44:                               August 1982
                     45:                                     
                     46:                                     
                     47:                                     
                     48:                      Information Sciences Institute
                     49:                    University of Southern California
                     50:                            4676 Admiralty Way
                     51:                    Marina del Rey, California  90291
                     52: 
                     53:                              (213) 822-1511
                     54: 
                     55: 
                     56: 
                     57:                                                                         
                     58: RFC 821                                                      August 1982
                     59:                                            Simple Mail Transfer Protocol
                     60: 
                     61: 
                     62: 
                     63:                            TABLE OF CONTENTS
                     64: 
                     65:    1.  INTRODUCTION .................................................. 1
                     66: 
                     67:    2.  THE SMTP MODEL ................................................ 2
                     68: 
                     69:    3.  THE SMTP PROCEDURE ............................................ 4
                     70: 
                     71:       3.1.  Mail ..................................................... 4
                     72:       3.2.  Forwarding ............................................... 7
                     73:       3.3.  Verifying and Expanding .................................. 8
                     74:       3.4.  Sending and Mailing ..................................... 11
                     75:       3.5.  Opening and Closing ..................................... 13
                     76:       3.6.  Relaying ................................................ 14
                     77:       3.7.  Domains ................................................. 17
                     78:       3.8.  Changing Roles .......................................... 18
                     79: 
                     80:    4.  THE SMTP SPECIFICATIONS ...................................... 19
                     81: 
                     82:       4.1.  SMTP Commands ........................................... 19
                     83:       4.1.1.  Command Semantics ..................................... 19
                     84:       4.1.2.  Command Syntax ........................................ 27
                     85:       4.2.  SMTP Replies ............................................ 34
                     86:       4.2.1.  Reply Codes by Function Group ......................... 35
                     87:       4.2.2.  Reply Codes in Numeric Order .......................... 36
                     88:       4.3.  Sequencing of Commands and Replies ...................... 37
                     89:       4.4.  State Diagrams .......................................... 39
                     90:       4.5.  Details ................................................. 41
                     91:       4.5.1.  Minimum Implementation ................................ 41
                     92:       4.5.2.  Transparency .......................................... 41
                     93:       4.5.3.  Sizes ................................................. 42
                     94: 
                     95:    APPENDIX A:  TCP ................................................. 44
                     96:    APPENDIX B:  NCP ................................................. 45
                     97:    APPENDIX C:  NITS ................................................ 46
                     98:    APPENDIX D:  X.25 ................................................ 47
                     99:    APPENDIX E:  Theory of Reply Codes ............................... 48
                    100:    APPENDIX F:  Scenarios ........................................... 51
                    101: 
                    102:    GLOSSARY ......................................................... 64
                    103: 
                    104:    REFERENCES ....................................................... 67
                    105: 
                    106: 
                    107: 
                    108: 
                    109: Network Working Group                                          J. Postel
                    110: Request for Comments: DRAFT                                          ISI
                    111: Replaces: RFC 788, 780, 772                                  August 1982
                    112: 
                    113:                      SIMPLE MAIL TRANSFER PROTOCOL
                    114: 
                    115: 
                    116: 1.  INTRODUCTION
                    117: 
                    118:    The objective of Simple Mail Transfer Protocol (SMTP) is to transfer
                    119:    mail reliably and efficiently.
                    120: 
                    121:    SMTP is independent of the particular transmission subsystem and
                    122:    requires only a reliable ordered data stream channel.  Appendices A,
                    123:    B, C, and D describe the use of SMTP with various transport services.
                    124:    A Glossary provides the definitions of terms as used in this
                    125:    document.
                    126: 
                    127:    An important feature of SMTP is its capability to relay mail across
                    128:    transport service environments.  A transport service provides an
                    129:    interprocess communication environment (IPCE).  An IPCE may cover one
                    130:    network, several networks, or a subset of a network.  It is important
                    131:    to realize that transport systems (or IPCEs) are not one-to-one with
                    132:    networks.  A process can communicate directly with another process
                    133:    through any mutually known IPCE.  Mail is an application or use of
                    134:    interprocess communication.  Mail can be communicated between
                    135:    processes in different IPCEs by relaying through a process connected
                    136:    to two (or more) IPCEs.  More specifically, mail can be relayed
                    137:    between hosts on different transport systems by a host on both
                    138:    transport systems.
                    139: 
                    140: 
                    141: 
                    142: 
                    143: 
                    144: 
                    145: 
                    146: 
                    147: 
                    148: 
                    149: 
                    150: 
                    151: 
                    152: 
                    153: 
                    154: 
                    155: 
                    156: 
                    157: 
                    158: 
                    159: 
                    160: 
                    161: 
                    162: 
                    163: Postel                                                          [Page 1]
                    164: 
                    165: 
                    166:                                                                         
                    167: August 1982                                                      RFC 821
                    168: Simple Mail Transfer Protocol                                           
                    169: 
                    170: 
                    171: 
                    172: 2.  THE SMTP MODEL
                    173: 
                    174:    The SMTP design is based on the following model of communication:  as
                    175:    the result of a user mail request, the sender-SMTP establishes a
                    176:    two-way transmission channel to a receiver-SMTP.  The receiver-SMTP
                    177:    may be either the ultimate destination or an intermediate.  SMTP
                    178:    commands are generated by the sender-SMTP and sent to the
                    179:    receiver-SMTP.  SMTP replies are sent from the receiver-SMTP to the
                    180:    sender-SMTP in response to the commands.
                    181: 
                    182:    Once the transmission channel is established, the SMTP-sender sends a
                    183:    MAIL command indicating the sender of the mail.  If the SMTP-receiver
                    184:    can accept mail it responds with an OK reply.  The SMTP-sender then
                    185:    sends a RCPT command identifying a recipient of the mail.  If the
                    186:    SMTP-receiver can accept mail for that recipient it responds with an
                    187:    OK reply; if not, it responds with a reply rejecting that recipient
                    188:    (but not the whole mail transaction).  The SMTP-sender and
                    189:    SMTP-receiver may negotiate several recipients.  When the recipients
                    190:    have been negotiated the SMTP-sender sends the mail data, terminating
                    191:    with a special sequence.  If the SMTP-receiver successfully processes
                    192:    the mail data it responds with an OK reply.  The dialog is purposely
                    193:    lock-step, one-at-a-time.
                    194: 
                    195:      -------------------------------------------------------------
                    196: 
                    197:    
                    198:                +----------+                +----------+
                    199:    +------+    |          |                |          |
                    200:    | User |<-->|          |      SMTP      |          |
                    201:    +------+    |  Sender- |Commands/Replies| Receiver-|
                    202:    +------+    |   SMTP   |<-------------->|    SMTP  |    +------+
                    203:    | File |<-->|          |    and Mail    |          |<-->| File |
                    204:    |System|    |          |                |          |    |System|
                    205:    +------+    +----------+                +----------+    +------+
                    206:    
                    207: 
                    208:                 Sender-SMTP                Receiver-SMTP
                    209: 
                    210:                            Model for SMTP Use
                    211: 
                    212:                                 Figure 1
                    213: 
                    214:      -------------------------------------------------------------
                    215: 
                    216:    The SMTP provides mechanisms for the transmission of mail; directly
                    217:    from the sending user's host to the receiving user's host when the
                    218: 
                    219: 
                    220: 
                    221: [Page 2]                                                          Postel
                    222: 
                    223: 
                    224:                                                                         
                    225: RFC 821                                                      August 1982
                    226:                                            Simple Mail Transfer Protocol
                    227: 
                    228: 
                    229: 
                    230:    two host are connected to the same transport service, or via one or
                    231:    more relay SMTP-servers when the source and destination hosts are not
                    232:    connected to the same transport service.
                    233: 
                    234:    To be able to provide the relay capability the SMTP-server must be
                    235:    supplied with the name of the ultimate destination host as well as
                    236:    the destination mailbox name.
                    237: 
                    238:    The argument to the MAIL command is a reverse-path, which specifies
                    239:    who the mail is from.  The argument to the RCPT command is a
                    240:    forward-path, which specifies who the mail is to.  The forward-path
                    241:    is a source route, while the reverse-path is a return route (which
                    242:    may be used to return a message to the sender when an error occurs
                    243:    with a relayed message).
                    244: 
                    245:    When the same message is sent to multiple recipients the SMTP
                    246:    encourages the transmission of only one copy of the data for all the
                    247:    recipients at the same destination host.
                    248: 
                    249:    The mail commands and replies have a rigid syntax.  Replies also have
                    250:    a numeric code.  In the following, examples appear which use actual
                    251:    commands and replies.  The complete lists of commands and replies
                    252:    appears in Section 4 on specifications.
                    253: 
                    254:    Commands and replies are not case sensitive.  That is, a command or
                    255:    reply word may be upper case, lower case, or any mixture of upper and
                    256:    lower case.  Note that this is not true of mailbox user names.  For
                    257:    some hosts the user name is case sensitive, and SMTP implementations
                    258:    must take case to preserve the case of user names as they appear in
                    259:    mailbox arguments.  Host names are not case sensitive.
                    260: 
                    261:    Commands and replies are composed of characters from the ASCII
                    262:    character set [1].  When the transport service provides an 8-bit byte
                    263:    (octet) transmission channel, each 7-bit character is transmitted
                    264:    right justified in an octet with the high order bit cleared to zero.
                    265: 
                    266:    When specifying the general form of a command or reply, an argument
                    267:    (or special symbol) will be denoted by a meta-linguistic variable (or
                    268:    constant), for example, "<string>" or "<reverse-path>".  Here the
                    269:    angle brackets indicate these are meta-linguistic variables.
                    270:    However, some arguments use the angle brackets literally.  For
                    271:    example, an actual reverse-path is enclosed in angle brackets, i.e.,
                    272:    "<[email protected]>" is an instance of <reverse-path> (the
                    273:    angle brackets are actually transmitted in the command or reply).
                    274: 
                    275: 
                    276: 
                    277: 
                    278: 
                    279: Postel                                                          [Page 3]
                    280: 
                    281: 
                    282:                                                                         
                    283: August 1982                                                      RFC 821
                    284: Simple Mail Transfer Protocol                                           
                    285: 
                    286: 
                    287: 
                    288: 3.  THE SMTP PROCEDURES
                    289: 
                    290:    This section presents the procedures used in SMTP in several parts.
                    291:    First comes the basic mail procedure defined as a mail transaction.
                    292:    Following this are descriptions of forwarding mail, verifying mailbox
                    293:    names and expanding mailing lists, sending to terminals instead of or
                    294:    in combination with mailboxes, and the opening and closing exchanges.
                    295:    At the end of this section are comments on relaying, a note on mail
                    296:    domains, and a discussion of changing roles.  Throughout this section
                    297:    are examples of partial command and reply sequences, several complete
                    298:    scenarios are presented in Appendix F.
                    299: 
                    300:    3.1.  MAIL
                    301: 
                    302:       There are three steps to SMTP mail transactions.  The transaction
                    303:       is started with a MAIL command which gives the sender
                    304:       identification.  A series of one or more RCPT commands follows
                    305:       giving the receiver information.  Then a DATA command gives the
                    306:       mail data.  And finally, the end of mail data indicator confirms
                    307:       the transaction.
                    308: 
                    309:          The first step in the procedure is the MAIL command.  The
                    310:          <reverse-path> contains the source mailbox.
                    311: 
                    312:             MAIL <SP> FROM:<reverse-path> <CRLF>
                    313: 
                    314:          This command tells the SMTP-receiver that a new mail
                    315:          transaction is starting and to reset all its state tables and
                    316:          buffers, including any recipients or mail data.  It gives the
                    317:          reverse-path which can be used to report errors.  If accepted,
                    318:          the receiver-SMTP returns a 250 OK reply.
                    319: 
                    320:          The <reverse-path> can contain more than just a mailbox.  The
                    321:          <reverse-path> is a reverse source routing list of hosts and
                    322:          source mailbox.  The first host in the <reverse-path> should be
                    323:          the host sending this command.
                    324: 
                    325:          The second step in the procedure is the RCPT command.
                    326: 
                    327:             RCPT <SP> TO:<forward-path> <CRLF>
                    328: 
                    329:          This command gives a forward-path identifying one recipient.
                    330:          If accepted, the receiver-SMTP returns a 250 OK reply, and
                    331:          stores the forward-path.  If the recipient is unknown the
                    332:          receiver-SMTP returns a 550 Failure reply.  This second step of
                    333:          the procedure can be repeated any number of times.
                    334: 
                    335: 
                    336: 
                    337: [Page 4]                                                          Postel
                    338: 
                    339: 
                    340:                                                                         
                    341: RFC 821                                                      August 1982
                    342:                                            Simple Mail Transfer Protocol
                    343: 
                    344: 
                    345: 
                    346:          The <forward-path> can contain more than just a mailbox.  The
                    347:          <forward-path> is a source routing list of hosts and the
                    348:          destination mailbox.  The first host in the <forward-path>
                    349:          should be the host receiving this command.
                    350: 
                    351:          The third step in the procedure is the DATA command.
                    352: 
                    353:             DATA <CRLF>
                    354: 
                    355:          If accepted, the receiver-SMTP returns a 354 Intermediate reply
                    356:          and considers all succeeding lines to be the message text.
                    357:          When the end of text is received and stored the SMTP-receiver
                    358:          sends a 250 OK reply.
                    359: 
                    360:          Since the mail data is sent on the transmission channel the end
                    361:          of the mail data must be indicated so that the command and
                    362:          reply dialog can be resumed.  SMTP indicates the end of the
                    363:          mail data by sending a line containing only a period.  A
                    364:          transparency procedure is used to prevent this from interfering
                    365:          with the user's text (see Section 4.5.2).
                    366: 
                    367:             Please note that the mail data includes the memo header
                    368:             items such as Date, Subject, To, Cc, From [2].
                    369: 
                    370:          The end of mail data indicator also confirms the mail
                    371:          transaction and tells the receiver-SMTP to now process the
                    372:          stored recipients and mail data.  If accepted, the
                    373:          receiver-SMTP returns a 250 OK reply.  The DATA command should
                    374:          fail only if the mail transaction was incomplete (for example,
                    375:          no recipients), or if resources are not available.
                    376: 
                    377:       The above procedure is an example of a mail transaction.  These
                    378:       commands must be used only in the order discussed above.
                    379:       Example 1 (below) illustrates the use of these commands in a mail
                    380:       transaction.
                    381: 
                    382: 
                    383: 
                    384: 
                    385: 
                    386: 
                    387: 
                    388: 
                    389: 
                    390: 
                    391: 
                    392: 
                    393: 
                    394: 
                    395: Postel                                                          [Page 5]
                    396: 
                    397: 
                    398:                                                                         
                    399: August 1982                                                      RFC 821
                    400: Simple Mail Transfer Protocol                                           
                    401: 
                    402: 
                    403: 
                    404:       -------------------------------------------------------------
                    405: 
                    406:                      Example of the SMTP Procedure
                    407: 
                    408:          This SMTP example shows mail sent by Smith at host Alpha.ARPA,
                    409:          to Jones, Green, and Brown at host Beta.ARPA.  Here we assume
                    410:          that host Alpha contacts host Beta directly.
                    411: 
                    412:             S: MAIL FROM:<[email protected]>
                    413:             R: 250 OK
                    414: 
                    415:             S: RCPT TO:<[email protected]>
                    416:             R: 250 OK
                    417: 
                    418:             S: RCPT TO:<[email protected]>
                    419:             R: 550 No such user here
                    420: 
                    421:             S: RCPT TO:<[email protected]>
                    422:             R: 250 OK
                    423: 
                    424:             S: DATA
                    425:             R: 354 Start mail input; end with <CRLF>.<CRLF>
                    426:             S: Blah blah blah...
                    427:             S: ...etc. etc. etc.
                    428:             S: <CRLF>.<CRLF>
                    429:             R: 250 OK
                    430: 
                    431:          The mail has now been accepted for Jones and Brown.  Green did
                    432:          not have a mailbox at host Beta.
                    433: 
                    434:                                Example 1
                    435: 
                    436:       -------------------------------------------------------------
                    437: 
                    438: 
                    439: 
                    440: 
                    441: 
                    442: 
                    443: 
                    444: 
                    445: 
                    446: 
                    447: 
                    448: 
                    449: 
                    450: 
                    451: 
                    452: 
                    453: [Page 6]                                                          Postel
                    454: 
                    455: 
                    456:                                                                         
                    457: RFC 821                                                      August 1982
                    458:                                            Simple Mail Transfer Protocol
                    459: 
                    460: 
                    461: 
                    462:    3.2.  FORWARDING
                    463: 
                    464:       There are some cases where the destination information in the
                    465:       <forward-path> is incorrect, but the receiver-SMTP knows the
                    466:       correct destination.  In such cases, one of the following replies
                    467:       should be used to allow the sender to contact the correct
                    468:       destination.
                    469: 
                    470:          251 User not local; will forward to <forward-path>
                    471: 
                    472:             This reply indicates that the receiver-SMTP knows the user's
                    473:             mailbox is on another host and indicates the correct
                    474:             forward-path to use in the future.  Note that either the
                    475:             host or user or both may be different.  The receiver takes
                    476:             responsibility for delivering the message.
                    477: 
                    478:          551 User not local; please try <forward-path>
                    479: 
                    480:             This reply indicates that the receiver-SMTP knows the user's
                    481:             mailbox is on another host and indicates the correct
                    482:             forward-path to use.  Note that either the host or user or
                    483:             both may be different.  The receiver refuses to accept mail
                    484:             for this user, and the sender must either redirect the mail
                    485:             according to the information provided or return an error
                    486:             response to the originating user.
                    487: 
                    488:       Example 2 illustrates the use of these responses.
                    489: 
                    490:       -------------------------------------------------------------
                    491: 
                    492:                          Example of Forwarding
                    493: 
                    494:       Either
                    495: 
                    496:       S: RCPT TO:<[email protected]>
                    497:       R: 251 User not local; will forward to <[email protected]>
                    498: 
                    499:       Or
                    500: 
                    501:       S: RCPT TO:<[email protected]>
                    502:       R: 551 User not local; please try <[email protected]>
                    503: 
                    504:                                Example 2
                    505: 
                    506:       -------------------------------------------------------------
                    507: 
                    508: 
                    509: 
                    510: 
                    511: Postel                                                          [Page 7]
                    512: 
                    513: 
                    514:                                                                         
                    515: August 1982                                                      RFC 821
                    516: Simple Mail Transfer Protocol                                           
                    517: 
                    518: 
                    519: 
                    520:    3.3.  VERIFYING AND EXPANDING
                    521: 
                    522:       SMTP provides as additional features, commands to verify a user
                    523:       name or expand a mailing list.  This is done with the VRFY and
                    524:       EXPN commands, which have character string arguments.  For the
                    525:       VRFY command, the string is a user name, and the response may
                    526:       include the full name of the user and must include the mailbox of
                    527:       the user.  For the EXPN command, the string identifies a mailing
                    528:       list, and the multiline response may include the full name of the
                    529:       users and must give the mailboxes on the mailing list.
                    530: 
                    531:       "User name" is a fuzzy term and used purposely.  If a host
                    532:       implements the VRFY or EXPN commands then at least local mailboxes
                    533:       must be recognized as "user names".  If a host chooses to
                    534:       recognize other strings as "user names" that is allowed.
                    535: 
                    536:       In some hosts the distinction between a mailing list and an alias
                    537:       for a single mailbox is a bit fuzzy, since a common data structure
                    538:       may hold both types of entries, and it is possible to have mailing
                    539:       lists of one mailbox.  If a request is made to verify a mailing
                    540:       list a positive response can be given if on receipt of a message
                    541:       so addressed it will be delivered to everyone on the list,
                    542:       otherwise an error should be reported (e.g., "550 That is a
                    543:       mailing list, not a user").  If a request is made to expand a user
                    544:       name a positive response can be formed by returning a list
                    545:       containing one name, or an error can be reported (e.g., "550 That
                    546:       is a user name, not a mailing list").
                    547: 
                    548:       In the case of a multiline reply (normal for EXPN) exactly one
                    549:       mailbox is to be specified on each line of the reply.  In the case
                    550:       of an ambiguous request, for example, "VRFY Smith", where there
                    551:       are two Smith's the response must be "553 User ambiguous".
                    552: 
                    553:       The case of verifying a user name is straightforward as shown in
                    554:       example 3.
                    555: 
                    556: 
                    557: 
                    558: 
                    559: 
                    560: 
                    561: 
                    562: 
                    563: 
                    564: 
                    565: 
                    566: 
                    567: 
                    568: 
                    569: [Page 8]                                                          Postel
                    570: 
                    571: 
                    572:                                                                         
                    573: RFC 821                                                      August 1982
                    574:                                            Simple Mail Transfer Protocol
                    575: 
                    576: 
                    577: 
                    578:       -------------------------------------------------------------
                    579: 
                    580:                     Example of Verifying a User Name
                    581: 
                    582:          Either
                    583: 
                    584:             S: VRFY Smith
                    585:             R: 250 Fred Smith <[email protected]>
                    586: 
                    587:          Or
                    588: 
                    589:             S: VRFY Smith
                    590:             R: 251 User not local; will forward to <[email protected]>
                    591: 
                    592:          Or
                    593: 
                    594:             S: VRFY Jones
                    595:             R: 550 String does not match anything.
                    596: 
                    597:          Or
                    598: 
                    599:             S: VRFY Jones
                    600:             R: 551 User not local; please try <[email protected]>
                    601: 
                    602:          Or
                    603: 
                    604:             S: VRFY Gourzenkyinplatz
                    605:             R: 553 User ambiguous.
                    606: 
                    607:                                Example 3
                    608: 
                    609:       -------------------------------------------------------------
                    610: 
                    611: 
                    612: 
                    613: 
                    614: 
                    615: 
                    616: 
                    617: 
                    618: 
                    619: 
                    620: 
                    621: 
                    622: 
                    623: 
                    624: 
                    625: 
                    626: 
                    627: Postel                                                          [Page 9]
                    628: 
                    629: 
                    630:                                                                         
                    631: August 1982                                                      RFC 821
                    632: Simple Mail Transfer Protocol                                           
                    633: 
                    634: 
                    635: 
                    636:       The case of expanding a mailbox list requires a multiline reply as
                    637:       shown in example 4.
                    638: 
                    639:       -------------------------------------------------------------
                    640: 
                    641:                   Example of Expanding a Mailing List
                    642: 
                    643:          Either
                    644: 
                    645:             S: EXPN Example-People
                    646:             R: 250-Jon Postel <[email protected]>
                    647:             R: 250-Fred Fonebone <[email protected]>
                    648:             R: 250-Sam Q. Smith <[email protected]>
                    649:             R: 250-Quincy Smith <@USC-ISIF.ARPA:[email protected]>
                    650:             R: 250-<[email protected]>
                    651:             R: 250 <[email protected]>
                    652: 
                    653:          Or
                    654: 
                    655:             S: EXPN Executive-Washroom-List
                    656:             R: 550 Access Denied to You.
                    657: 
                    658:                                Example 4
                    659: 
                    660:       -------------------------------------------------------------
                    661: 
                    662:       The character string arguments of the VRFY and EXPN commands
                    663:       cannot be further restricted due to the variety of implementations
                    664:       of the user name and mailbox list concepts.  On some systems it
                    665:       may be appropriate for the argument of the EXPN command to be a
                    666:       file name for a file containing a mailing list, but again there is
                    667:       a variety of file naming conventions in the Internet.
                    668: 
                    669:       The VRFY and EXPN commands are not included in the minimum
                    670:       implementation (Section 4.5.1), and are not required to work
                    671:       across relays when they are implemented.
                    672: 
                    673: 
                    674: 
                    675: 
                    676: 
                    677: 
                    678: 
                    679: 
                    680: 
                    681: 
                    682: 
                    683: 
                    684: 
                    685: [Page 10]                                                         Postel
                    686: 
                    687: 
                    688:                                                                         
                    689: RFC 821                                                      August 1982
                    690:                                            Simple Mail Transfer Protocol
                    691: 
                    692: 
                    693: 
                    694:    3.4.  SENDING AND MAILING
                    695: 
                    696:       The main purpose of SMTP is to deliver messages to user's
                    697:       mailboxes.  A very similar service provided by some hosts is to
                    698:       deliver messages to user's terminals (provided the user is active
                    699:       on the host).  The delivery to the user's mailbox is called
                    700:       "mailing", the delivery to the user's terminal is called
                    701:       "sending".  Because in many hosts the implementation of sending is
                    702:       nearly identical to the implementation of mailing these two
                    703:       functions are combined in SMTP.  However the sending commands are
                    704:       not included in the required minimum implementation
                    705:       (Section 4.5.1).  Users should have the ability to control the
                    706:       writing of messages on their terminals.  Most hosts permit the
                    707:       users to accept or refuse such messages.
                    708: 
                    709:       The following three command are defined to support the sending
                    710:       options.  These are used in the mail transaction instead of the
                    711:       MAIL command and inform the receiver-SMTP of the special semantics
                    712:       of this transaction:
                    713: 
                    714:          SEND <SP> FROM:<reverse-path> <CRLF>
                    715: 
                    716:             The SEND command requires that the mail data be delivered to
                    717:             the user's terminal.  If the user is not active (or not
                    718:             accepting terminal messages) on the host a 450 reply may
                    719:             returned to a RCPT command.  The mail transaction is
                    720:             successful if the message is delivered the terminal.
                    721: 
                    722:          SOML <SP> FROM:<reverse-path> <CRLF>
                    723: 
                    724:             The Send Or MaiL command requires that the mail data be
                    725:             delivered to the user's terminal if the user is active (and
                    726:             accepting terminal messages) on the host.  If the user is
                    727:             not active (or not accepting terminal messages) then the
                    728:             mail data is entered into the user's mailbox.  The mail
                    729:             transaction is successful if the message is delivered either
                    730:             to the terminal or the mailbox.
                    731: 
                    732:          SAML <SP> FROM:<reverse-path> <CRLF>
                    733: 
                    734:             The Send And MaiL command requires that the mail data be
                    735:             delivered to the user's terminal if the user is active (and
                    736:             accepting terminal messages) on the host.  In any case the
                    737:             mail data is entered into the user's mailbox.  The mail
                    738:             transaction is successful if the message is delivered the
                    739:             mailbox.
                    740: 
                    741: 
                    742: 
                    743: Postel                                                         [Page 11]
                    744: 
                    745: 
                    746:                                                                         
                    747: August 1982                                                      RFC 821
                    748: Simple Mail Transfer Protocol                                           
                    749: 
                    750: 
                    751: 
                    752:       The same reply codes that are used for the MAIL commands are used
                    753:       for these commands.
                    754: 
                    755: 
                    756: 
                    757: 
                    758: 
                    759: 
                    760: 
                    761: 
                    762: 
                    763: 
                    764: 
                    765: 
                    766: 
                    767: 
                    768: 
                    769: 
                    770: 
                    771: 
                    772: 
                    773: 
                    774: 
                    775: 
                    776: 
                    777: 
                    778: 
                    779: 
                    780: 
                    781: 
                    782: 
                    783: 
                    784: 
                    785: 
                    786: 
                    787: 
                    788: 
                    789: 
                    790: 
                    791: 
                    792: 
                    793: 
                    794: 
                    795: 
                    796: 
                    797: 
                    798: 
                    799: 
                    800: 
                    801: [Page 12]                                                         Postel
                    802: 
                    803: 
                    804:                                                                         
                    805: RFC 821                                                      August 1982
                    806:                                            Simple Mail Transfer Protocol
                    807: 
                    808: 
                    809: 
                    810:    3.5.  OPENING AND CLOSING
                    811: 
                    812:       At the time the transmission channel is opened there is an
                    813:       exchange to ensure that the hosts are communicating with the hosts
                    814:       they think they are.
                    815: 
                    816:       The following two commands are used in transmission channel
                    817:       opening and closing:
                    818: 
                    819:          HELO <SP> <domain> <CRLF>
                    820: 
                    821:          QUIT <CRLF>
                    822: 
                    823:       In the HELO command the host sending the command identifies
                    824:       itself; the command may be interpreted as saying "Hello, I am
                    825:       <domain>".
                    826: 
                    827:       -------------------------------------------------------------
                    828: 
                    829:                      Example of Connection Opening
                    830: 
                    831:          R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
                    832:          S: HELO USC-ISIF.ARPA
                    833:          R: 250 BBN-UNIX.ARPA
                    834: 
                    835:                                Example 5
                    836: 
                    837:       -------------------------------------------------------------
                    838: 
                    839:       -------------------------------------------------------------
                    840: 
                    841:                      Example of Connection Closing
                    842: 
                    843:          S: QUIT
                    844:          R: 221 BBN-UNIX.ARPA Service closing transmission channel
                    845: 
                    846:                                Example 6
                    847: 
                    848:       -------------------------------------------------------------
                    849: 
                    850: 
                    851: 
                    852: 
                    853: 
                    854: 
                    855: 
                    856: 
                    857: 
                    858: 
                    859: Postel                                                         [Page 13]
                    860: 
                    861: 
                    862:                                                                         
                    863: August 1982                                                      RFC 821
                    864: Simple Mail Transfer Protocol                                           
                    865: 
                    866: 
                    867: 
                    868:    3.6.  RELAYING
                    869: 
                    870:       The forward-path may be a source route of the form
                    871:       "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE are hosts.  This
                    872:       form is used to emphasize the distinction between an address and a
                    873:       route.  The mailbox is an absolute address, and the route is
                    874:       information about how to get there.  The two concepts should not
                    875:       be confused.
                    876: 
                    877:       Conceptually the elements of the forward-path are moved to the
                    878:       reverse-path as the message is relayed from one server-SMTP to
                    879:       another.  The reverse-path is a reverse source route, (i.e., a
                    880:       source route from the current location of the message to the
                    881:       originator of the message).  When a server-SMTP deletes its
                    882:       identifier from the forward-path and inserts it into the
                    883:       reverse-path, it must use the name it is known by in the
                    884:       environment it is sending into, not the environment the mail came
                    885:       from, in case the server-SMTP is known by different names in
                    886:       different environments.
                    887: 
                    888:       If when the message arrives at an SMTP the first element of the
                    889:       forward-path is not the identifier of that SMTP the element is not
                    890:       deleted from the forward-path and is used to determine the next
                    891:       SMTP to send the message to.  In any case, the SMTP adds its own
                    892:       identifier to the reverse-path.
                    893: 
                    894:       Using source routing the receiver-SMTP receives mail to be relayed
                    895:       to another server-SMTP  The receiver-SMTP may accept or reject the
                    896:       task of relaying the mail in the same way it accepts or rejects
                    897:       mail for a local user.  The receiver-SMTP transforms the command
                    898:       arguments by moving its own identifier from the forward-path to
                    899:       the beginning of the reverse-path.  The receiver-SMTP then becomes
                    900:       a sender-SMTP, establishes a transmission channel to the next SMTP
                    901:       in the forward-path, and sends it the mail.
                    902: 
                    903:       The first host in the reverse-path should be the host sending the
                    904:       SMTP commands, and the first host in the forward-path should be
                    905:       the host receiving the SMTP commands.
                    906: 
                    907:       Notice that the forward-path and reverse-path appear in the SMTP
                    908:       commands and replies, but not necessarily in the message.  That
                    909:       is, there is no need for these paths and especially this syntax to
                    910:       appear in the "To:" , "From:", "CC:", etc. fields of the message
                    911:       header.
                    912: 
                    913:       If a server-SMTP has accepted the task of relaying the mail and
                    914: 
                    915: 
                    916: 
                    917: [Page 14]                                                         Postel
                    918: 
                    919: 
                    920:                                                                         
                    921: RFC 821                                                      August 1982
                    922:                                            Simple Mail Transfer Protocol
                    923: 
                    924: 
                    925: 
                    926:       later finds that the forward-path is incorrect or that the mail
                    927:       cannot be delivered for whatever reason, then it must construct an
                    928:       "undeliverable mail" notification message and send it to the
                    929:       originator of the undeliverable mail (as indicated by the
                    930:       reverse-path).
                    931: 
                    932:       This notification message must be from the server-SMTP at this
                    933:       host.  Of course, server-SMTPs should not send notification
                    934:       messages about problems with notification messages.  One way to
                    935:       prevent loops in error reporting is to specify a null reverse-path
                    936:       in the MAIL command of a notification message.  When such a
                    937:       message is relayed it is permissible to leave the reverse-path
                    938:       null.  A MAIL command with a null reverse-path appears as follows:
                    939: 
                    940:          MAIL FROM:<>
                    941: 
                    942:       An undeliverable mail notification message is shown in example 7.
                    943:       This notification is in response to a message originated by JOE at
                    944:       HOSTW and sent via HOSTX to HOSTY with instructions to relay it on
                    945:       to HOSTZ.  What we see in the example is the transaction between
                    946:       HOSTY and HOSTX, which is the first step in the return of the
                    947:       notification message.
                    948: 
                    949: 
                    950: 
                    951: 
                    952: 
                    953: 
                    954: 
                    955: 
                    956: 
                    957: 
                    958: 
                    959: 
                    960: 
                    961: 
                    962: 
                    963: 
                    964: 
                    965: 
                    966: 
                    967: 
                    968: 
                    969: 
                    970: 
                    971: 
                    972: 
                    973: 
                    974: 
                    975: Postel                                                         [Page 15]
                    976: 
                    977: 
                    978:                                                                         
                    979: August 1982                                                      RFC 821
                    980: Simple Mail Transfer Protocol                                           
                    981: 
                    982: 
                    983: 
                    984:       -------------------------------------------------------------
                    985: 
                    986:             Example Undeliverable Mail Notification Message
                    987: 
                    988:          S: MAIL FROM:<>
                    989:          R: 250 ok
                    990:          S: RCPT TO:<@HOSTX.ARPA:[email protected]>
                    991:          R: 250 ok
                    992:          S: DATA
                    993:          R: 354 send the mail data, end with .
                    994:          S: Date: 23 Oct 81 11:22:33
                    995:          S: From: [email protected]
                    996:          S: To: [email protected]
                    997:          S: Subject: Mail System Problem
                    998:          S:
                    999:          S:   Sorry JOE, your message to [email protected] lost.
                   1000:          S:   HOSTZ.ARPA said this:
                   1001:          S:    "550 No Such User"
                   1002:          S: .
                   1003:          R: 250 ok
                   1004: 
                   1005:                                Example 7
                   1006: 
                   1007:       -------------------------------------------------------------
                   1008: 
                   1009: 
                   1010: 
                   1011: 
                   1012: 
                   1013: 
                   1014: 
                   1015: 
                   1016: 
                   1017: 
                   1018: 
                   1019: 
                   1020: 
                   1021: 
                   1022: 
                   1023: 
                   1024: 
                   1025: 
                   1026: 
                   1027: 
                   1028: 
                   1029: 
                   1030: 
                   1031: 
                   1032: 
                   1033: [Page 16]                                                         Postel
                   1034: 
                   1035: 
                   1036:                                                                         
                   1037: RFC 821                                                      August 1982
                   1038:                                            Simple Mail Transfer Protocol
                   1039: 
                   1040: 
                   1041: 
                   1042:    3.7.  DOMAINS
                   1043: 
                   1044:       Domains are a recently introduced concept in the ARPA Internet
                   1045:       mail system.  The use of domains changes the address space from a
                   1046:       flat global space of simple character string host names to a
                   1047:       hierarchically structured rooted tree of global addresses.  The
                   1048:       host name is replaced by a domain and host designator which is a
                   1049:       sequence of domain element strings separated by periods with the
                   1050:       understanding that the domain elements are ordered from the most
                   1051:       specific to the most general.
                   1052: 
                   1053:       For example, "USC-ISIF.ARPA", "Fred.Cambridge.UK", and
                   1054:       "PC7.LCS.MIT.ARPA" might be host-and-domain identifiers.
                   1055: 
                   1056:       Whenever domain names are used in SMTP only the official names are
                   1057:       used, the use of nicknames or aliases is not allowed.
                   1058: 
                   1059: 
                   1060: 
                   1061: 
                   1062: 
                   1063: 
                   1064: 
                   1065: 
                   1066: 
                   1067: 
                   1068: 
                   1069: 
                   1070: 
                   1071: 
                   1072: 
                   1073: 
                   1074: 
                   1075: 
                   1076: 
                   1077: 
                   1078: 
                   1079: 
                   1080: 
                   1081: 
                   1082: 
                   1083: 
                   1084: 
                   1085: 
                   1086: 
                   1087: 
                   1088: 
                   1089: 
                   1090: 
                   1091: Postel                                                         [Page 17]
                   1092: 
                   1093: 
                   1094:                                                                         
                   1095: August 1982                                                      RFC 821
                   1096: Simple Mail Transfer Protocol                                           
                   1097: 
                   1098: 
                   1099: 
                   1100:    3.8.  CHANGING ROLES
                   1101: 
                   1102:       The TURN command may be used to reverse the roles of the two
                   1103:       programs communicating over the transmission channel.
                   1104: 
                   1105:       If program-A is currently the sender-SMTP and it sends the TURN
                   1106:       command and receives an ok reply (250) then program-A becomes the
                   1107:       receiver-SMTP.
                   1108: 
                   1109:       If program-B is currently the receiver-SMTP and it receives the
                   1110:       TURN command and sends an ok reply (250) then program-B becomes
                   1111:       the sender-SMTP.
                   1112: 
                   1113:       To refuse to change roles the receiver sends the 502 reply.
                   1114: 
                   1115:       Please note that this command is optional.  It would not normally
                   1116:       be used in situations where the transmission channel is TCP.
                   1117:       However, when the cost of establishing the transmission channel is
                   1118:       high, this command may be quite useful.  For example, this command
                   1119:       may be useful in supporting be mail exchange using the public
                   1120:       switched telephone system as a transmission channel, especially if
                   1121:       some hosts poll other hosts for mail exchanges.
                   1122: 
                   1123: 
                   1124: 
                   1125: 
                   1126: 
                   1127: 
                   1128: 
                   1129: 
                   1130: 
                   1131: 
                   1132: 
                   1133: 
                   1134: 
                   1135: 
                   1136: 
                   1137: 
                   1138: 
                   1139: 
                   1140: 
                   1141: 
                   1142: 
                   1143: 
                   1144: 
                   1145: 
                   1146: 
                   1147: 
                   1148: 
                   1149: [Page 18]                                                         Postel
                   1150: 
                   1151: 
                   1152:                                                                         
                   1153: RFC 821                                                      August 1982
                   1154:                                            Simple Mail Transfer Protocol
                   1155: 
                   1156: 
                   1157: 
                   1158: 4.  THE SMTP SPECIFICATIONS
                   1159: 
                   1160:    4.1.  SMTP COMMANDS
                   1161: 
                   1162:       4.1.1.  COMMAND SEMANTICS
                   1163: 
                   1164:          The SMTP commands define the mail transfer or the mail system
                   1165:          function requested by the user.  SMTP commands are character
                   1166:          strings terminated by <CRLF>.  The command codes themselves are
                   1167:          alphabetic characters terminated by <SP> if parameters follow
                   1168:          and <CRLF> otherwise.  The syntax of mailboxes must conform to
                   1169:          receiver site conventions.  The SMTP commands are discussed
                   1170:          below.  The SMTP replies are discussed in the Section 4.2.
                   1171: 
                   1172:          A mail transaction involves several data objects which are
                   1173:          communicated as arguments to different commands.  The
                   1174:          reverse-path is the argument of the MAIL command, the
                   1175:          forward-path is the argument of the RCPT command, and the mail
                   1176:          data is the argument of the DATA command.  These arguments or
                   1177:          data objects must be transmitted and held pending the
                   1178:          confirmation communicated by the end of mail data indication
                   1179:          which finalizes the transaction.  The model for this is that
                   1180:          distinct buffers are provided to hold the types of data
                   1181:          objects, that is, there is a reverse-path buffer, a
                   1182:          forward-path buffer, and a mail data buffer.  Specific commands
                   1183:          cause information to be appended to a specific buffer, or cause
                   1184:          one or more buffers to be cleared.
                   1185: 
                   1186:          HELLO (HELO)
                   1187: 
                   1188:             This command is used to identify the sender-SMTP to the
                   1189:             receiver-SMTP.  The argument field contains the host name of
                   1190:             the sender-SMTP.
                   1191: 
                   1192:             The receiver-SMTP identifies itself to the sender-SMTP in
                   1193:             the connection greeting reply, and in the response to this
                   1194:             command.
                   1195: 
                   1196:             This command and an OK reply to it confirm that both the
                   1197:             sender-SMTP and the receiver-SMTP are in the initial state,
                   1198:             that is, there is no transaction in progress and all state
                   1199:             tables and buffers are cleared.
                   1200: 
                   1201: 
                   1202: 
                   1203: 
                   1204: 
                   1205: 
                   1206: 
                   1207: Postel                                                         [Page 19]
                   1208: 
                   1209: 
                   1210:                                                                         
                   1211: August 1982                                                      RFC 821
                   1212: Simple Mail Transfer Protocol                                           
                   1213: 
                   1214: 
                   1215: 
                   1216:          MAIL (MAIL)
                   1217: 
                   1218:             This command is used to initiate a mail transaction in which
                   1219:             the mail data is delivered to one or more mailboxes.  The
                   1220:             argument field contains a reverse-path.
                   1221: 
                   1222:             The reverse-path consists of an optional list of hosts and
                   1223:             the sender mailbox.  When the list of hosts is present, it
                   1224:             is a "reverse" source route and indicates that the mail was
                   1225:             relayed through each host on the list (the first host in the
                   1226:             list was the most recent relay).  This list is used as a
                   1227:             source route to return non-delivery notices to the sender.
                   1228:             As each relay host adds itself to the beginning of the list,
                   1229:             it must use its name as known in the IPCE to which it is
                   1230:             relaying the mail rather than the IPCE from which the mail
                   1231:             came (if they are different).  In some types of error
                   1232:             reporting messages (for example, undeliverable mail
                   1233:             notifications) the reverse-path may be null (see Example 7).
                   1234: 
                   1235:             This command clears the reverse-path buffer, the
                   1236:             forward-path buffer, and the mail data buffer; and inserts
                   1237:             the reverse-path information from this command into the
                   1238:             reverse-path buffer.
                   1239: 
                   1240:          RECIPIENT (RCPT)
                   1241: 
                   1242:             This command is used to identify an individual recipient of
                   1243:             the mail data; multiple recipients are specified by multiple
                   1244:             use of this command.
                   1245: 
                   1246:             The forward-path consists of an optional list of hosts and a
                   1247:             required destination mailbox.  When the list of hosts is
                   1248:             present, it is a source route and indicates that the mail
                   1249:             must be relayed to the next host on the list.  If the
                   1250:             receiver-SMTP does not implement the relay function it may
                   1251:             user the same reply it would for an unknown local user
                   1252:             (550).
                   1253: 
                   1254:             When mail is relayed, the relay host must remove itself from
                   1255:             the beginning forward-path and put itself at the beginning
                   1256:             of the reverse-path.  When mail reaches its ultimate
                   1257:             destination (the forward-path contains only a destination
                   1258:             mailbox), the receiver-SMTP inserts it into the destination
                   1259:             mailbox in accordance with its host mail conventions.
                   1260: 
                   1261: 
                   1262: 
                   1263: 
                   1264: 
                   1265: [Page 20]                                                         Postel
                   1266: 
                   1267: 
                   1268:                                                                         
                   1269: RFC 821                                                      August 1982
                   1270:                                            Simple Mail Transfer Protocol
                   1271: 
                   1272: 
                   1273: 
                   1274:                For example, mail received at relay host A with arguments
                   1275: 
                   1276:                   FROM:<[email protected]>
                   1277:                   TO:<@HOSTA.ARPA,@HOSTB.ARPA:[email protected]>
                   1278: 
                   1279:                will be relayed on to host B with arguments
                   1280: 
                   1281:                   FROM:<@HOSTA.ARPA:[email protected]>
                   1282:                   TO:<@HOSTB.ARPA:[email protected]>.
                   1283: 
                   1284:             This command causes its forward-path argument to be appended
                   1285:             to the forward-path buffer.
                   1286: 
                   1287:          DATA (DATA)
                   1288: 
                   1289:             The receiver treats the lines following the command as mail
                   1290:             data from the sender.  This command causes the mail data
                   1291:             from this command to be appended to the mail data buffer.
                   1292:             The mail data may contain any of the 128 ASCII character
                   1293:             codes.
                   1294: 
                   1295:             The mail data is terminated by a line containing only a
                   1296:             period, that is the character sequence "<CRLF>.<CRLF>" (see
                   1297:             Section 4.5.2 on Transparency).  This is the end of mail
                   1298:             data indication.
                   1299: 
                   1300:             The end of mail data indication requires that the receiver
                   1301:             must now process the stored mail transaction information.
                   1302:             This processing consumes the information in the reverse-path
                   1303:             buffer, the forward-path buffer, and the mail data buffer,
                   1304:             and on the completion of this command these buffers are
                   1305:             cleared.  If the processing is successful the receiver must
                   1306:             send an OK reply.  If the processing fails completely the
                   1307:             receiver must send a failure reply.
                   1308: 
                   1309:             When the receiver-SMTP accepts a message either for relaying
                   1310:             or for final delivery it inserts at the beginning of the
                   1311:             mail data a time stamp line.  The time stamp line indicates
                   1312:             the identity of the host that sent the message, and the
                   1313:             identity of the host that received the message (and is
                   1314:             inserting this time stamp), and the date and time the
                   1315:             message was received.  Relayed messages will have multiple
                   1316:             time stamp lines.
                   1317: 
                   1318:             When the receiver-SMTP makes the "final delivery" of a
                   1319:             message it inserts at the beginning of the mail data a
                   1320: 
                   1321: 
                   1322: 
                   1323: Postel                                                         [Page 21]
                   1324: 
                   1325: 
                   1326:                                                                         
                   1327: August 1982                                                      RFC 821
                   1328: Simple Mail Transfer Protocol                                           
                   1329: 
                   1330: 
                   1331: 
                   1332:             return path line.  The return path line preserves the
                   1333:             information in the <reverse-path> from the MAIL command.
                   1334:             Here, final delivery means the message leaves the SMTP
                   1335:             world.  Normally, this would mean it has been delivered to
                   1336:             the destination user, but in some cases it may be further
                   1337:             processed and transmitted by another mail system.
                   1338: 
                   1339:                It is possible for the mailbox in the return path be
                   1340:                different from the actual sender's mailbox, for example,
                   1341:                if error responses are to be delivered a special error
                   1342:                handling mailbox rather than the message senders.
                   1343: 
                   1344:             The preceding two paragraphs imply that the final mail data
                   1345:             will begin with a  return path line, followed by one or more
                   1346:             time stamp lines.  These lines will be followed by the mail
                   1347:             data header and body [2].  See Example 8.
                   1348: 
                   1349:             Special mention is needed of the response and further action
                   1350:             required when the processing following the end of mail data
                   1351:             indication is partially successful.  This could arise if
                   1352:             after accepting several recipients and the mail data, the
                   1353:             receiver-SMTP finds that the mail data can be successfully
                   1354:             delivered to some of the recipients, but it cannot be to
                   1355:             others (for example, due to mailbox space allocation
                   1356:             problems).  In such a situation, the response to the DATA
                   1357:             command must be an OK reply.  But, the receiver-SMTP must
                   1358:             compose and send an "undeliverable mail" notification
                   1359:             message to the originator of the message.  Either a single
                   1360:             notification which lists all of the recipients that failed
                   1361:             to get the message, or separate notification messages must
                   1362:             be sent for each failed recipient (see Example 7).  All
                   1363:             undeliverable mail notification messages are sent using the
                   1364:             MAIL command (even if they result from processing a SEND,
                   1365:             SOML, or SAML command).
                   1366: 
                   1367: 
                   1368: 
                   1369: 
                   1370: 
                   1371: 
                   1372: 
                   1373: 
                   1374: 
                   1375: 
                   1376: 
                   1377: 
                   1378: 
                   1379: 
                   1380: 
                   1381: [Page 22]                                                         Postel
                   1382: 
                   1383: 
                   1384:                                                                         
                   1385: RFC 821                                                      August 1982
                   1386:                                            Simple Mail Transfer Protocol
                   1387: 
                   1388: 
                   1389: 
                   1390:      -------------------------------------------------------------
                   1391: 
                   1392:             Example of Return Path and Received Time Stamps
                   1393: 
                   1394:       Return-Path: <@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:[email protected]>   
                   1395:       Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST
                   1396:       Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST
                   1397:       Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST
                   1398:       Date: 27 Oct 81 15:01:01 PST                                
                   1399:       From: [email protected]                                          
                   1400:       Subject: Improved Mailing System Installed                  
                   1401:       To: [email protected]                                            
                   1402:                                     
                   1403:       This is to inform you that ...                              
                   1404: 
                   1405:                                Example 8
                   1406: 
                   1407:      -------------------------------------------------------------
                   1408: 
                   1409:          SEND (SEND)
                   1410: 
                   1411:             This command is used to initiate a mail transaction in which
                   1412:             the mail data is delivered to one or more terminals.  The
                   1413:             argument field contains a reverse-path.  This command is
                   1414:             successful if the message is delivered to a terminal.
                   1415: 
                   1416:             The reverse-path consists of an optional list of hosts and
                   1417:             the sender mailbox.  When the list of hosts is present, it
                   1418:             is a "reverse" source route and indicates that the mail was
                   1419:             relayed through each host on the list (the first host in the
                   1420:             list was the most recent relay).  This list is used as a
                   1421:             source route to return non-delivery notices to the sender.
                   1422:             As each relay host adds itself to the beginning of the list,
                   1423:             it must use its name as known in the IPCE to which it is
                   1424:             relaying the mail rather than the IPCE from which the mail
                   1425:             came (if they are different).
                   1426: 
                   1427:             This command clears the reverse-path buffer, the
                   1428:             forward-path buffer, and the mail data buffer; and inserts
                   1429:             the reverse-path information from this command into the
                   1430:             reverse-path buffer.
                   1431: 
                   1432:          SEND OR MAIL (SOML)
                   1433: 
                   1434:             This command is used to initiate a mail transaction in which
                   1435:             the mail data is delivered to one or more terminals or
                   1436: 
                   1437: 
                   1438: 
                   1439: Postel                                                         [Page 23]
                   1440: 
                   1441: 
                   1442:                                                                         
                   1443: August 1982                                                      RFC 821
                   1444: Simple Mail Transfer Protocol                                           
                   1445: 
                   1446: 
                   1447: 
                   1448:             mailboxes. For each recipient the mail data is delivered to
                   1449:             the recipient's terminal if the recipient is active on the
                   1450:             host (and accepting terminal messages), otherwise to the
                   1451:             recipient's mailbox.  The argument field contains a
                   1452:             reverse-path.  This command is successful if the message is
                   1453:             delivered to a terminal or the mailbox.
                   1454: 
                   1455:             The reverse-path consists of an optional list of hosts and
                   1456:             the sender mailbox.  When the list of hosts is present, it
                   1457:             is a "reverse" source route and indicates that the mail was
                   1458:             relayed through each host on the list (the first host in the
                   1459:             list was the most recent relay).  This list is used as a
                   1460:             source route to return non-delivery notices to the sender.
                   1461:             As each relay host adds itself to the beginning of the list,
                   1462:             it must use its name as known in the IPCE to which it is
                   1463:             relaying the mail rather than the IPCE from which the mail
                   1464:             came (if they are different).
                   1465: 
                   1466:             This command clears the reverse-path buffer, the
                   1467:             forward-path buffer, and the mail data buffer; and inserts
                   1468:             the reverse-path information from this command into the
                   1469:             reverse-path buffer.
                   1470: 
                   1471:          SEND AND MAIL (SAML)
                   1472: 
                   1473:             This command is used to initiate a mail transaction in which
                   1474:             the mail data is delivered to one or more terminals and
                   1475:             mailboxes. For each recipient the mail data is delivered to
                   1476:             the recipient's terminal if the recipient is active on the
                   1477:             host (and accepting terminal messages), and for all
                   1478:             recipients to the recipient's mailbox.  The argument field
                   1479:             contains a reverse-path.  This command is successful if the
                   1480:             message is delivered to the mailbox.
                   1481: 
                   1482:             The reverse-path consists of an optional list of hosts and
                   1483:             the sender mailbox.  When the list of hosts is present, it
                   1484:             is a "reverse" source route and indicates that the mail was
                   1485:             relayed through each host on the list (the first host in the
                   1486:             list was the most recent relay).  This list is used as a
                   1487:             source route to return non-delivery notices to the sender.
                   1488:             As each relay host adds itself to the beginning of the list,
                   1489:             it must use its name as known in the IPCE to which it is
                   1490:             relaying the mail rather than the IPCE from which the mail
                   1491:             came (if they are different).
                   1492: 
                   1493:             This command clears the reverse-path buffer, the
                   1494: 
                   1495: 
                   1496: 
                   1497: [Page 24]                                                         Postel
                   1498: 
                   1499: 
                   1500:                                                                         
                   1501: RFC 821                                                      August 1982
                   1502:                                            Simple Mail Transfer Protocol
                   1503: 
                   1504: 
                   1505: 
                   1506:             forward-path buffer, and the mail data buffer; and inserts
                   1507:             the reverse-path information from this command into the
                   1508:             reverse-path buffer.
                   1509: 
                   1510:          RESET (RSET)
                   1511: 
                   1512:             This command specifies that the current mail transaction is
                   1513:             to be aborted.  Any stored sender, recipients, and mail data
                   1514:             must be discarded, and all buffers and state tables cleared.
                   1515:             The receiver must send an OK reply.
                   1516: 
                   1517:          VERIFY (VRFY)
                   1518: 
                   1519:             This command asks the receiver to confirm that the argument
                   1520:             identifies a user.  If it is a user name, the full name of
                   1521:             the user (if known) and the fully specified mailbox are
                   1522:             returned.
                   1523: 
                   1524:             This command has no effect on any of the reverse-path
                   1525:             buffer, the forward-path buffer, or the mail data buffer.
                   1526: 
                   1527:          EXPAND (EXPN)
                   1528: 
                   1529:             This command asks the receiver to confirm that the argument
                   1530:             identifies a mailing list, and if so, to return the
                   1531:             membership of that list.  The full name of the users (if
                   1532:             known) and the fully specified mailboxes are returned in a
                   1533:             multiline reply.
                   1534: 
                   1535:             This command has no effect on any of the reverse-path
                   1536:             buffer, the forward-path buffer, or the mail data buffer.
                   1537: 
                   1538:          HELP (HELP)
                   1539: 
                   1540:             This command causes the receiver to send helpful information
                   1541:             to the sender of the HELP command.  The command may take an
                   1542:             argument (e.g., any command name) and return more specific
                   1543:             information as a response.
                   1544: 
                   1545:             This command has no effect on any of the reverse-path
                   1546:             buffer, the forward-path buffer, or the mail data buffer.
                   1547: 
                   1548: 
                   1549: 
                   1550: 
                   1551: 
                   1552: 
                   1553: 
                   1554: 
                   1555: Postel                                                         [Page 25]
                   1556: 
                   1557: 
                   1558:                                                                         
                   1559: August 1982                                                      RFC 821
                   1560: Simple Mail Transfer Protocol                                           
                   1561: 
                   1562: 
                   1563: 
                   1564:          NOOP (NOOP)
                   1565: 
                   1566:             This command does not affect any parameters or previously
                   1567:             entered commands.  It specifies no action other than that
                   1568:             the receiver send an OK reply.
                   1569: 
                   1570:             This command has no effect on any of the reverse-path
                   1571:             buffer, the forward-path buffer, or the mail data buffer.
                   1572: 
                   1573:          QUIT (QUIT)
                   1574: 
                   1575:             This command specifies that the receiver must send an OK
                   1576:             reply, and then close the transmission channel.
                   1577: 
                   1578:             The receiver should not close the transmission channel until
                   1579:             it receives and replies to a QUIT command (even if there was
                   1580:             an error).  The sender should not close the transmission
                   1581:             channel until it send a QUIT command and receives the reply
                   1582:             (even if there was an error response to a previous command).
                   1583:             If the connection is closed prematurely the receiver should
                   1584:             act as if a RSET command had been received (canceling any
                   1585:             pending transaction, but not undoing any previously
                   1586:             completed transaction), the sender should act as if the
                   1587:             command or transaction in progress had received a temporary
                   1588:             error (4xx).
                   1589: 
                   1590:          TURN (TURN)
                   1591: 
                   1592:             This command specifies that the receiver must either (1)
                   1593:             send an OK reply and then take on the role of the
                   1594:             sender-SMTP, or (2) send a refusal reply and retain the role
                   1595:             of the receiver-SMTP.
                   1596: 
                   1597:             If program-A is currently the sender-SMTP and it sends the
                   1598:             TURN command and receives an OK reply (250) then program-A
                   1599:             becomes the receiver-SMTP.  Program-A is then in the initial
                   1600:             state as if the transmission channel just opened, and it
                   1601:             then sends the 220 service ready greeting.
                   1602: 
                   1603:             If program-B is currently the receiver-SMTP and it receives
                   1604:             the TURN command and sends an OK reply (250) then program-B
                   1605:             becomes the sender-SMTP.  Program-B is then in the initial
                   1606:             state as if the transmission channel just opened, and it
                   1607:             then expects to receive the 220 service ready greeting.
                   1608: 
                   1609:             To refuse to change roles the receiver sends the 502 reply.
                   1610: 
                   1611: 
                   1612: 
                   1613: [Page 26]                                                         Postel
                   1614: 
                   1615: 
                   1616:                                                                         
                   1617: RFC 821                                                      August 1982
                   1618:                                            Simple Mail Transfer Protocol
                   1619: 
                   1620: 
                   1621: 
                   1622:          There are restrictions on the order in which these command may
                   1623:          be used.
                   1624: 
                   1625:             The first command in a session must be the HELO command.
                   1626:             The HELO command may be used later in a session as well.  If
                   1627:             the HELO command argument is not acceptable a 501 failure
                   1628:             reply must be returned and the receiver-SMTP must stay in
                   1629:             the same state.
                   1630: 
                   1631:             The NOOP, HELP, EXPN, and VRFY commands can be used at any
                   1632:             time during a session.
                   1633: 
                   1634:             The MAIL, SEND, SOML, or SAML commands begin a mail
                   1635:             transaction.  Once started a mail transaction consists of
                   1636:             one of the transaction beginning commands, one or more RCPT
                   1637:             commands, and a DATA command, in that order.  A mail
                   1638:             transaction may be aborted by the RSET command.  There may
                   1639:             be zero or more transactions in a session.
                   1640: 
                   1641:             If the transaction beginning command argument is not
                   1642:             acceptable a 501 failure reply must be returned and the
                   1643:             receiver-SMTP must stay in the same state.  If the commands
                   1644:             in a transaction are out of order a 503 failure reply must
                   1645:             be returned and the receiver-SMTP must stay in the same
                   1646:             state.
                   1647: 
                   1648:             The last command in a session must be the QUIT command.  The
                   1649:             QUIT command can not be used at any other time in a session.
                   1650: 
                   1651:       4.1.2.  COMMAND SYNTAX
                   1652: 
                   1653:          The commands consist of a command code followed by an argument
                   1654:          field.  Command codes are four alphabetic characters.  Upper
                   1655:          and lower case alphabetic characters are to be treated
                   1656:          identically.  Thus, any of the following may represent the mail
                   1657:          command:
                   1658: 
                   1659:             MAIL    Mail    mail    MaIl    mAIl
                   1660: 
                   1661:          This also applies to any symbols representing parameter values,
                   1662:          such as "TO" or "to" for the forward-path.  Command codes and
                   1663:          the argument fields are separated by one or more spaces.
                   1664:          However, within the reverse-path and forward-path arguments
                   1665:          case is important.  In particular, in some hosts the user
                   1666:          "smith" is different from the user "Smith".
                   1667: 
                   1668: 
                   1669: 
                   1670: 
                   1671: Postel                                                         [Page 27]
                   1672: 
                   1673: 
                   1674:                                                                         
                   1675: August 1982                                                      RFC 821
                   1676: Simple Mail Transfer Protocol                                           
                   1677: 
                   1678: 
                   1679: 
                   1680:          The argument field consists of a variable length character
                   1681:          string ending with the character sequence <CRLF>.  The receiver
                   1682:          is to take no action until this sequence is received.
                   1683: 
                   1684:          Square brackets denote an optional argument field.  If the
                   1685:          option is not taken, the appropriate default is implied.
                   1686: 
                   1687: 
                   1688: 
                   1689: 
                   1690: 
                   1691: 
                   1692: 
                   1693: 
                   1694: 
                   1695: 
                   1696: 
                   1697: 
                   1698: 
                   1699: 
                   1700: 
                   1701: 
                   1702: 
                   1703: 
                   1704: 
                   1705: 
                   1706: 
                   1707: 
                   1708: 
                   1709: 
                   1710: 
                   1711: 
                   1712: 
                   1713: 
                   1714: 
                   1715: 
                   1716: 
                   1717: 
                   1718: 
                   1719: 
                   1720: 
                   1721: 
                   1722: 
                   1723: 
                   1724: 
                   1725: 
                   1726: 
                   1727: 
                   1728: 
                   1729: [Page 28]                                                         Postel
                   1730: 
                   1731: 
                   1732:                                                                         
                   1733: RFC 821                                                      August 1982
                   1734:                                            Simple Mail Transfer Protocol
                   1735: 
                   1736: 
                   1737: 
                   1738:          The following are the SMTP commands:
                   1739: 
                   1740:             HELO <SP> <domain> <CRLF>
                   1741: 
                   1742:             MAIL <SP> FROM:<reverse-path> <CRLF>
                   1743: 
                   1744:             RCPT <SP> TO:<forward-path> <CRLF>
                   1745: 
                   1746:             DATA <CRLF>
                   1747: 
                   1748:             RSET <CRLF>
                   1749: 
                   1750:             SEND <SP> FROM:<reverse-path> <CRLF>
                   1751: 
                   1752:             SOML <SP> FROM:<reverse-path> <CRLF>
                   1753: 
                   1754:             SAML <SP> FROM:<reverse-path> <CRLF>
                   1755: 
                   1756:             VRFY <SP> <string> <CRLF>
                   1757: 
                   1758:             EXPN <SP> <string> <CRLF>
                   1759: 
                   1760:             HELP [<SP> <string>] <CRLF>
                   1761: 
                   1762:             NOOP <CRLF>
                   1763: 
                   1764:             QUIT <CRLF>
                   1765: 
                   1766:             TURN <CRLF>
                   1767: 
                   1768: 
                   1769: 
                   1770: 
                   1771: 
                   1772: 
                   1773: 
                   1774: 
                   1775: 
                   1776: 
                   1777: 
                   1778: 
                   1779: 
                   1780: 
                   1781: 
                   1782: 
                   1783: 
                   1784: 
                   1785: 
                   1786: 
                   1787: Postel                                                         [Page 29]
                   1788: 
                   1789: 
                   1790:                                                                         
                   1791: August 1982                                                      RFC 821
                   1792: Simple Mail Transfer Protocol                                           
                   1793: 
                   1794: 
                   1795: 
                   1796:          The syntax of the above argument fields (using BNF notation
                   1797:          where applicable) is given below.  The "..." notation indicates
                   1798:          that a field may be repeated one or more times.
                   1799: 
                   1800:             <reverse-path> ::= <path>
                   1801: 
                   1802:             <forward-path> ::= <path>
                   1803: 
                   1804:             <path> ::= "<" [ <a-d-l> ":" ] <mailbox> ">"
                   1805: 
                   1806:             <a-d-l> ::= <at-domain> | <at-domain> "," <a-d-l>
                   1807: 
                   1808:             <at-domain> ::= "@" <domain>
                   1809: 
                   1810:             <domain> ::=  <element> | <element> "." <domain>
                   1811: 
                   1812:             <element> ::= <name> | "#" <number> | "[" <dotnum> "]"
                   1813: 
                   1814:             <mailbox> ::= <local-part> "@" <domain>
                   1815: 
                   1816:             <local-part> ::= <dot-string> | <quoted-string>
                   1817: 
                   1818:             <name> ::= <a> <ldh-str> <let-dig>
                   1819: 
                   1820:             <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
                   1821: 
                   1822:             <let-dig> ::= <a> | <d>
                   1823: 
                   1824:             <let-dig-hyp> ::= <a> | <d> | "-"
                   1825: 
                   1826:             <dot-string> ::= <string> | <string> "." <dot-string>
                   1827: 
                   1828:             <string> ::= <char> | <char> <string>
                   1829: 
                   1830:             <quoted-string> ::=  """ <qtext> """
                   1831: 
                   1832:             <qtext> ::=  "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>
                   1833: 
                   1834:             <char> ::= <c> | "\" <x>
                   1835: 
                   1836:             <dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>
                   1837: 
                   1838:             <number> ::= <d> | <d> <number>
                   1839: 
                   1840:             <CRLF> ::= <CR> <LF>
                   1841: 
                   1842: 
                   1843: 
                   1844: 
                   1845: [Page 30]                                                         Postel
                   1846: 
                   1847: 
                   1848:                                                                         
                   1849: RFC 821                                                      August 1982
                   1850:                                            Simple Mail Transfer Protocol
                   1851: 
                   1852: 
                   1853: 
                   1854:             <CR> ::= the carriage return character (ASCII code 13)
                   1855: 
                   1856:             <LF> ::= the line feed character (ASCII code 10)
                   1857: 
                   1858:             <SP> ::= the space character (ASCII code 32)
                   1859: 
                   1860:             <snum> ::= one, two, or three digits representing a decimal
                   1861:                       integer value in the range 0 through 255
                   1862: 
                   1863:             <a> ::= any one of the 52 alphabetic characters A through Z
                   1864:                       in upper case and a through z in lower case
                   1865: 
                   1866:             <c> ::= any one of the 128 ASCII characters, but not any
                   1867:                       <special> or <SP>
                   1868: 
                   1869:             <d> ::= any one of the ten digits 0 through 9
                   1870: 
                   1871:             <q> ::= any one of the 128 ASCII characters except <CR>,
                   1872:                       <LF>, quote ("), or backslash (\)
                   1873: 
                   1874:             <x> ::= any one of the 128 ASCII characters (no exceptions)
                   1875: 
                   1876:             <special> ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "."
                   1877:                       | "," | ";" | ":" | "@"  """ | the control
                   1878:                       characters (ASCII codes 0 through 31 inclusive and
                   1879:                       127)
                   1880: 
                   1881:          Note that the backslash, "\", is a quote character, which is
                   1882:          used to indicate that the next character is to be used
                   1883:          literally (instead of its normal interpretation).  For example,
                   1884:          "Joe\,Smith" could be used to indicate a single nine character
                   1885:          user field with comma being the fourth character of the field.
                   1886: 
                   1887:          Hosts are generally known by names which are translated to
                   1888:          addresses in each host.  Note that the name elements of domains
                   1889:          are the official names -- no use of nicknames or aliases is
                   1890:          allowed.
                   1891: 
                   1892:          Sometimes a host is not known to the translation function and
                   1893:          communication is blocked.  To bypass this barrier two numeric
                   1894:          forms are also allowed for host "names".  One form is a decimal
                   1895:          integer prefixed by a pound sign, "#", which indicates the
                   1896:          number is the address of the host.  Another form is four small
                   1897:          decimal integers separated by dots and enclosed by brackets,
                   1898:          e.g., "[123.255.37.2]", which indicates a 32-bit ARPA Internet
                   1899:          Address in four 8-bit fields.
                   1900: 
                   1901: 
                   1902: 
                   1903: Postel                                                         [Page 31]
                   1904: 
                   1905: 
                   1906:                                                                         
                   1907: August 1982                                                      RFC 821
                   1908: Simple Mail Transfer Protocol                                           
                   1909: 
                   1910: 
                   1911: 
                   1912:          The time stamp line and the return path line are formally
                   1913:          defined as follows:
                   1914: 
                   1915:          <return-path-line> ::= "Return-Path:" <SP><reverse-path><CRLF>
                   1916: 
                   1917:          <time-stamp-line> ::= "Received:" <SP> <stamp> <CRLF>
                   1918: 
                   1919:             <stamp> ::= <from-domain> <by-domain> <opt-info> ";"
                   1920:                       <daytime>
                   1921: 
                   1922:             <from-domain> ::= "FROM" <SP> <domain> <SP>
                   1923: 
                   1924:             <by-domain> ::= "BY" <SP> <domain> <SP>
                   1925: 
                   1926:             <opt-info> ::= [<via>] [<with>] [<id>] [<for>]
                   1927: 
                   1928:             <via> ::= "VIA" <SP> <link> <SP>
                   1929: 
                   1930:             <with> ::= "WITH" <SP> <protocol> <SP>
                   1931: 
                   1932:             <id> ::= "ID" <SP> <string> <SP>
                   1933: 
                   1934:             <for> ::= "FOR" <SP> <path> <SP>
                   1935: 
                   1936:             <link> ::= The standard names for links are registered with
                   1937:                       the Network Information Center.
                   1938: 
                   1939:             <protocol> ::= The standard names for protocols are
                   1940:                       registered with the Network Information Center.
                   1941: 
                   1942:             <daytime> ::= <SP> <date> <SP> <time>
                   1943: 
                   1944:             <date> ::= <dd> <SP> <mon> <SP> <yy>
                   1945: 
                   1946:             <time> ::= <hh> ":" <mm> ":" <ss> <SP> <zone>
                   1947: 
                   1948:             <dd> ::= the one or two decimal integer day of the month in
                   1949:                       the range 1 to 31.
                   1950: 
                   1951:             <mon> ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" |
                   1952:                       "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"
                   1953: 
                   1954:             <yy> ::= the two decimal integer year of the century in the
                   1955:                       range 00 to 99.
                   1956: 
                   1957: 
                   1958: 
                   1959: 
                   1960: 
                   1961: [Page 32]                                                         Postel
                   1962: 
                   1963: 
                   1964:                                                                         
                   1965: RFC 821                                                      August 1982
                   1966:                                            Simple Mail Transfer Protocol
                   1967: 
                   1968: 
                   1969: 
                   1970:             <hh> ::= the two decimal integer hour of the day in the
                   1971:                       range 00 to 24.
                   1972: 
                   1973:             <mm> ::= the two decimal integer minute of the hour in the
                   1974:                       range 00 to 59.
                   1975: 
                   1976:             <ss> ::= the two decimal integer second of the minute in the
                   1977:                       range 00 to 59.
                   1978: 
                   1979:             <zone> ::= "UT" for Universal Time (the default) or other
                   1980:                       time zone designator (as in [2]).
                   1981: 
                   1982:             
                   1983: 
                   1984:      -------------------------------------------------------------
                   1985: 
                   1986:                           Return Path Example
                   1987: 
                   1988:          Return-Path: <@CHARLIE.ARPA,@BAKER.ARPA:[email protected]>
                   1989: 
                   1990:                                Example 9
                   1991: 
                   1992:      -------------------------------------------------------------
                   1993: 
                   1994:      -------------------------------------------------------------
                   1995: 
                   1996:                         Time Stamp Line Example
                   1997: 
                   1998:       Received: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59 PDT
                   1999: 
                   2000:          Received: from ABC.ARPA by XYZ.ARPA via TELENET with X25
                   2001:                    id M12345 for [email protected] ; 22 OCT 81 09:23:59 PDT
                   2002: 
                   2003:                                Example 10
                   2004: 
                   2005:       -------------------------------------------------------------
                   2006: 
                   2007: 
                   2008: 
                   2009: 
                   2010: 
                   2011: 
                   2012: 
                   2013: 
                   2014: 
                   2015: 
                   2016: 
                   2017: 
                   2018: 
                   2019: Postel                                                         [Page 33]
                   2020: 
                   2021: 
                   2022:                                                                         
                   2023: August 1982                                                      RFC 821
                   2024: Simple Mail Transfer Protocol                                           
                   2025: 
                   2026: 
                   2027: 
                   2028:    4.2.  SMTP REPLIES
                   2029: 
                   2030:       Replies to SMTP commands are devised to ensure the synchronization
                   2031:       of requests and actions in the process of mail transfer, and to
                   2032:       guarantee that the sender-SMTP always knows the state of the
                   2033:       receiver-SMTP.  Every command must generate exactly one reply.
                   2034: 
                   2035:          The details of the command-reply sequence are made explicit in
                   2036:          Section 5.3 on Sequencing and Section 5.4 State Diagrams.
                   2037: 
                   2038:       An SMTP reply consists of a three digit number (transmitted as
                   2039:       three alphanumeric characters) followed by some text.  The number
                   2040:       is intended for use by automata to determine what state to enter
                   2041:       next; the text is meant for the human user.  It is intended that
                   2042:       the three digits contain enough encoded information that the
                   2043:       sender-SMTP need not examine the text and may either discard it or
                   2044:       pass it on to the user, as appropriate.  In particular, the text
                   2045:       may be receiver-dependent and context dependent, so there are
                   2046:       likely to be varying texts for each reply code.  A discussion of
                   2047:       the theory of reply codes is given in Appendix E.  Formally, a
                   2048:       reply is defined to be the sequence:  a three-digit code, <SP>,
                   2049:       one line of text, and <CRLF>, or a multiline reply (as defined in
                   2050:       Appendix E).  Only the EXPN and HELP commands are expected to
                   2051:       result in multiline replies in normal circumstances, however
                   2052:       multiline replies are allowed for any command.
                   2053: 
                   2054: 
                   2055: 
                   2056: 
                   2057: 
                   2058: 
                   2059: 
                   2060: 
                   2061: 
                   2062: 
                   2063: 
                   2064: 
                   2065: 
                   2066: 
                   2067: 
                   2068: 
                   2069: 
                   2070: 
                   2071: 
                   2072: 
                   2073: 
                   2074: 
                   2075: 
                   2076: 
                   2077: [Page 34]                                                         Postel
                   2078: 
                   2079: 
                   2080:                                                                         
                   2081: RFC 821                                                      August 1982
                   2082:                                            Simple Mail Transfer Protocol
                   2083: 
                   2084: 
                   2085: 
                   2086:       4.2.1.  REPLY CODES BY FUNCTION GROUPS
                   2087: 
                   2088:          500 Syntax error, command unrecognized
                   2089:             [This may include errors such as command line too long]
                   2090:          501 Syntax error in parameters or arguments
                   2091:          502 Command not implemented
                   2092:          503 Bad sequence of commands
                   2093:          504 Command parameter not implemented
                   2094:           
                   2095:          211 System status, or system help reply
                   2096:          214 Help message
                   2097:             [Information on how to use the receiver or the meaning of a
                   2098:             particular non-standard command; this reply is useful only
                   2099:             to the human user]
                   2100:           
                   2101:          220 <domain> Service ready
                   2102:          221 <domain> Service closing transmission channel
                   2103:          421 <domain> Service not available,
                   2104:              closing transmission channel
                   2105:             [This may be a reply to any command if the service knows it
                   2106:             must shut down]
                   2107:           
                   2108:          250 Requested mail action okay, completed
                   2109:          251 User not local; will forward to <forward-path>
                   2110:          450 Requested mail action not taken: mailbox unavailable
                   2111:             [E.g., mailbox busy]
                   2112:          550 Requested action not taken: mailbox unavailable
                   2113:             [E.g., mailbox not found, no access]
                   2114:          451 Requested action aborted: error in processing
                   2115:          551 User not local; please try <forward-path>
                   2116:          452 Requested action not taken: insufficient system storage
                   2117:          552 Requested mail action aborted: exceeded storage allocation
                   2118:          553 Requested action not taken: mailbox name not allowed
                   2119:             [E.g., mailbox syntax incorrect]
                   2120:          354 Start mail input; end with <CRLF>.<CRLF>
                   2121:          554 Transaction failed
                   2122:          
                   2123: 
                   2124: 
                   2125: 
                   2126: 
                   2127: 
                   2128: 
                   2129: 
                   2130: 
                   2131: 
                   2132: 
                   2133: 
                   2134: 
                   2135: Postel                                                         [Page 35]
                   2136: 
                   2137: 
                   2138:                                                                         
                   2139: August 1982                                                      RFC 821
                   2140: Simple Mail Transfer Protocol                                           
                   2141: 
                   2142: 
                   2143: 
                   2144:       4.2.2.  NUMERIC ORDER LIST OF REPLY CODES
                   2145: 
                   2146:          211 System status, or system help reply
                   2147:          214 Help message
                   2148:             [Information on how to use the receiver or the meaning of a
                   2149:             particular non-standard command; this reply is useful only
                   2150:             to the human user]
                   2151:          220 <domain> Service ready
                   2152:          221 <domain> Service closing transmission channel
                   2153:          250 Requested mail action okay, completed
                   2154:          251 User not local; will forward to <forward-path>
                   2155:           
                   2156:          354 Start mail input; end with <CRLF>.<CRLF>
                   2157:           
                   2158:          421 <domain> Service not available,
                   2159:              closing transmission channel
                   2160:             [This may be a reply to any command if the service knows it
                   2161:             must shut down]
                   2162:          450 Requested mail action not taken: mailbox unavailable
                   2163:             [E.g., mailbox busy]
                   2164:          451 Requested action aborted: local error in processing
                   2165:          452 Requested action not taken: insufficient system storage
                   2166:           
                   2167:          500 Syntax error, command unrecognized
                   2168:             [This may include errors such as command line too long]
                   2169:          501 Syntax error in parameters or arguments
                   2170:          502 Command not implemented
                   2171:          503 Bad sequence of commands
                   2172:          504 Command parameter not implemented
                   2173:          550 Requested action not taken: mailbox unavailable
                   2174:             [E.g., mailbox not found, no access]
                   2175:          551 User not local; please try <forward-path>
                   2176:          552 Requested mail action aborted: exceeded storage allocation
                   2177:          553 Requested action not taken: mailbox name not allowed
                   2178:             [E.g., mailbox syntax incorrect]
                   2179:          554 Transaction failed
                   2180:          
                   2181: 
                   2182: 
                   2183: 
                   2184: 
                   2185: 
                   2186: 
                   2187: 
                   2188: 
                   2189: 
                   2190: 
                   2191: 
                   2192: 
                   2193: [Page 36]                                                         Postel
                   2194: 
                   2195: 
                   2196:                                                                         
                   2197: RFC 821                                                      August 1982
                   2198:                                            Simple Mail Transfer Protocol
                   2199: 
                   2200: 
                   2201: 
                   2202:    4.3.  SEQUENCING OF COMMANDS AND REPLIES
                   2203: 
                   2204:       The communication between the sender and receiver is intended to
                   2205:       be an alternating dialogue, controlled by the sender.  As such,
                   2206:       the sender issues a command and the receiver responds with a
                   2207:       reply.  The sender must wait for this response before sending
                   2208:       further commands.
                   2209: 
                   2210:       One important reply is the connection greeting.  Normally, a
                   2211:       receiver will send a 220 "Service ready" reply when the connection
                   2212:       is completed.  The sender should wait for this greeting message
                   2213:       before sending any commands.
                   2214: 
                   2215:          Note: all the greeting type replies have the official name of
                   2216:          the server host as the first word following the reply code.
                   2217: 
                   2218:             For example,
                   2219: 
                   2220:                220 <SP> USC-ISIF.ARPA <SP> Service ready <CRLF>
                   2221: 
                   2222:       The table below lists alternative success and failure replies for
                   2223:       each command.  These must be strictly adhered to; a receiver may
                   2224:       substitute text in the replies, but the meaning and action implied
                   2225:       by the code numbers and by the specific command reply sequence
                   2226:       cannot be altered.
                   2227: 
                   2228:       COMMAND-REPLY SEQUENCES
                   2229: 
                   2230:          Each command is listed with its possible replies.  The prefixes
                   2231:          used before the possible replies are "P" for preliminary (not
                   2232:          used in SMTP), "I" for intermediate, "S" for success, "F" for
                   2233:          failure, and "E" for error.  The 421 reply (service not
                   2234:          available, closing transmission channel) may be given to any
                   2235:          command if the SMTP-receiver knows it must shut down.  This
                   2236:          listing forms the basis for the State Diagrams in Section 4.4.
                   2237: 
                   2238:             CONNECTION ESTABLISHMENT
                   2239:                S: 220
                   2240:                F: 421
                   2241:             HELO
                   2242:                S: 250
                   2243:                E: 500, 501, 504, 421
                   2244:             MAIL
                   2245:                S: 250
                   2246:                F: 552, 451, 452
                   2247:                E: 500, 501, 421
                   2248: 
                   2249: 
                   2250: 
                   2251: Postel                                                         [Page 37]
                   2252: 
                   2253: 
                   2254:                                                                         
                   2255: August 1982                                                      RFC 821
                   2256: Simple Mail Transfer Protocol                                           
                   2257: 
                   2258: 
                   2259: 
                   2260:             RCPT
                   2261:                S: 250, 251
                   2262:                F: 550, 551, 552, 553, 450, 451, 452
                   2263:                E: 500, 501, 503, 421
                   2264:             DATA
                   2265:                I: 354 -> data -> S: 250
                   2266:                                  F: 552, 554, 451, 452
                   2267:                F: 451, 554
                   2268:                E: 500, 501, 503, 421
                   2269:             RSET
                   2270:                S: 250
                   2271:                E: 500, 501, 504, 421
                   2272:             SEND
                   2273:                S: 250
                   2274:                F: 552, 451, 452
                   2275:                E: 500, 501, 502, 421
                   2276:             SOML
                   2277:                S: 250
                   2278:                F: 552, 451, 452
                   2279:                E: 500, 501, 502, 421
                   2280:             SAML
                   2281:                S: 250
                   2282:                F: 552, 451, 452
                   2283:                E: 500, 501, 502, 421
                   2284:             VRFY
                   2285:                S: 250, 251
                   2286:                F: 550, 551, 553
                   2287:                E: 500, 501, 502, 504, 421
                   2288:             EXPN
                   2289:                S: 250
                   2290:                F: 550
                   2291:                E: 500, 501, 502, 504, 421
                   2292:             HELP
                   2293:                S: 211, 214
                   2294:                E: 500, 501, 502, 504, 421
                   2295:             NOOP
                   2296:                S: 250
                   2297:                E: 500, 421
                   2298:             QUIT
                   2299:                S: 221
                   2300:                E: 500
                   2301:             TURN
                   2302:                S: 250
                   2303:                F: 502
                   2304:                E: 500, 503
                   2305: 
                   2306: 
                   2307: 
                   2308: 
                   2309: [Page 38]                                                         Postel
                   2310: 
                   2311: 
                   2312:                                                                         
                   2313: RFC 821                                                      August 1982
                   2314:                                            Simple Mail Transfer Protocol
                   2315: 
                   2316: 
                   2317: 
                   2318:    4.4.  STATE DIAGRAMS
                   2319: 
                   2320:       Following are state diagrams for a simple-minded SMTP
                   2321:       implementation.  Only the first digit of the reply codes is used.
                   2322:       There is one state diagram for each group of SMTP commands.  The
                   2323:       command groupings were determined by constructing a model for each
                   2324:       command and then collecting together the commands with
                   2325:       structurally identical models.
                   2326: 
                   2327:       For each command there are three possible outcomes:  "success"
                   2328:       (S), "failure" (F), and "error" (E). In the state diagrams below
                   2329:       we use the symbol B for "begin", and the symbol W for "wait for
                   2330:       reply".
                   2331: 
                   2332:       First, the diagram that represents most of the SMTP commands:
                   2333: 
                   2334:          
                   2335:                                   1,3    +---+
                   2336:                              ----------->| E |
                   2337:                             |            +---+
                   2338:                             |
                   2339:          +---+    cmd    +---+    2      +---+
                   2340:          | B |---------->| W |---------->| S |
                   2341:          +---+           +---+           +---+
                   2342:                             |
                   2343:                             |     4,5    +---+
                   2344:                              ----------->| F |
                   2345:                                          +---+
                   2346:          
                   2347: 
                   2348:          This diagram models the commands:
                   2349: 
                   2350:             HELO, MAIL, RCPT, RSET, SEND, SOML, SAML, VRFY, EXPN, HELP,
                   2351:             NOOP, QUIT, TURN.
                   2352: 
                   2353: 
                   2354: 
                   2355: 
                   2356: 
                   2357: 
                   2358: 
                   2359: 
                   2360: 
                   2361: 
                   2362: 
                   2363: 
                   2364: 
                   2365: 
                   2366: 
                   2367: Postel                                                         [Page 39]
                   2368: 
                   2369: 
                   2370:                                                                         
                   2371: August 1982                                                      RFC 821
                   2372: Simple Mail Transfer Protocol                                           
                   2373: 
                   2374: 
                   2375: 
                   2376:       A more complex diagram models the DATA command:
                   2377: 
                   2378:          
                   2379:          +---+   DATA    +---+ 1,2                 +---+
                   2380:          | B |---------->| W |-------------------->| E |
                   2381:          +---+           +---+        ------------>+---+
                   2382:                          3| |4,5     |
                   2383:                           | |        |
                   2384:             --------------   -----   |
                   2385:            |                      |  |             +---+
                   2386:            |               ----------     -------->| S |
                   2387:            |              |       |      |         +---+
                   2388:            |              |  ------------
                   2389:            |              | |     |
                   2390:            V           1,3| |2    |
                   2391:          +---+   data    +---+     --------------->+---+
                   2392:          |   |---------->| W |                     | F |
                   2393:          +---+           +---+-------------------->+---+
                   2394:                               4,5
                   2395: 
                   2396: 
                   2397:          Note that the "data" here is a series of lines sent from the
                   2398:          sender to the receiver with no response expected until the last
                   2399:          line is sent.
                   2400: 
                   2401: 
                   2402: 
                   2403: 
                   2404: 
                   2405: 
                   2406: 
                   2407: 
                   2408: 
                   2409: 
                   2410: 
                   2411: 
                   2412: 
                   2413: 
                   2414: 
                   2415: 
                   2416: 
                   2417: 
                   2418: 
                   2419: 
                   2420: 
                   2421: 
                   2422: 
                   2423: 
                   2424: 
                   2425: [Page 40]                                                         Postel
                   2426: 
                   2427: 
                   2428:                                                                         
                   2429: RFC 821                                                      August 1982
                   2430:                                            Simple Mail Transfer Protocol
                   2431: 
                   2432: 
                   2433: 
                   2434:    4.5.  DETAILS
                   2435: 
                   2436:       4.5.1.  MINIMUM IMPLEMENTATION
                   2437: 
                   2438:          In order to make SMTP workable, the following minimum
                   2439:          implementation is required for all receivers:
                   2440: 
                   2441:             COMMANDS -- HELO
                   2442:                         MAIL
                   2443:                         RCPT
                   2444:                         DATA
                   2445:                         RSET
                   2446:                         NOOP
                   2447:                         QUIT
                   2448: 
                   2449:       4.5.2.  TRANSPARENCY
                   2450: 
                   2451:          Without some provision for data transparency the character
                   2452:          sequence "<CRLF>.<CRLF>" ends the mail text and cannot be sent
                   2453:          by the user.  In general, users are not aware of such
                   2454:          "forbidden" sequences.  To allow all user composed text to be
                   2455:          transmitted transparently the following procedures are used.
                   2456: 
                   2457:             1. Before sending a line of mail text the sender-SMTP checks
                   2458:             the first character of the line.  If it is a period, one
                   2459:             additional period is inserted at the beginning of the line.
                   2460: 
                   2461:             2. When a line of mail text is received by the receiver-SMTP
                   2462:             it checks the line.  If the line is composed of a single
                   2463:             period it is the end of mail.  If the first character is a
                   2464:             period and there are other characters on the line, the first
                   2465:             character is deleted.
                   2466: 
                   2467:          The mail data may contain any of the 128 ASCII characters.  All
                   2468:          characters are to be delivered to the recipient's mailbox
                   2469:          including format effectors and other control characters.  If
                   2470:          the transmission channel provides an 8-bit byte (octets) data
                   2471:          stream, the 7-bit ASCII codes are transmitted right justified
                   2472:          in the octets with the high order bits cleared to zero.
                   2473: 
                   2474:             In some systems it may be necessary to transform the data as
                   2475:             it is received and stored.  This may be necessary for hosts
                   2476:             that use a different character set than ASCII as their local
                   2477:             character set, or that store data in records rather than
                   2478: 
                   2479: 
                   2480: 
                   2481: 
                   2482: 
                   2483: Postel                                                         [Page 41]
                   2484: 
                   2485: 
                   2486:                                                                         
                   2487: August 1982                                                      RFC 821
                   2488: Simple Mail Transfer Protocol                                           
                   2489: 
                   2490: 
                   2491: 
                   2492:             strings.  If such transforms are necessary, they must be
                   2493:             reversible -- especially if such transforms are applied to
                   2494:             mail being relayed.
                   2495: 
                   2496:       4.5.3.  SIZES
                   2497: 
                   2498:          There are several objects that have required minimum maximum
                   2499:          sizes.  That is, every implementation must be able to receive
                   2500:          objects of at least these sizes, but must not send objects
                   2501:          larger than these sizes.
                   2502: 
                   2503:                                     
                   2504:           ****************************************************
                   2505:           *                                                  *
                   2506:           *  TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION  *
                   2507:           *  TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
                   2508:           *  OF THESE OBJECTS SHOULD BE USED.                *
                   2509:           *                                                  *
                   2510:           ****************************************************
                   2511: 
                   2512:             user
                   2513: 
                   2514:                The maximum total length of a user name is 64 characters.
                   2515: 
                   2516:             domain
                   2517: 
                   2518:                The maximum total length of a domain name or number is 64
                   2519:                characters.
                   2520: 
                   2521:             path
                   2522: 
                   2523:                The maximum total length of a reverse-path or
                   2524:                forward-path is 256 characters (including the punctuation
                   2525:                and element separators).
                   2526: 
                   2527:             command line
                   2528: 
                   2529:                The maximum total length of a command line including the
                   2530:                command word and the <CRLF> is 512 characters.
                   2531: 
                   2532:             reply line
                   2533: 
                   2534:                The maximum total length of a reply line including the
                   2535:                reply code and the <CRLF> is 512 characters.
                   2536: 
                   2537: 
                   2538: 
                   2539: 
                   2540: 
                   2541: [Page 42]                                                         Postel
                   2542: 
                   2543: 
                   2544:                                                                         
                   2545: RFC 821                                                      August 1982
                   2546:                                            Simple Mail Transfer Protocol
                   2547: 
                   2548: 
                   2549: 
                   2550:             text line
                   2551: 
                   2552:                The maximum total length of a text line including the
                   2553:                <CRLF> is 1000 characters (but not counting the leading
                   2554:                dot duplicated for transparency).
                   2555: 
                   2556:             recipients buffer
                   2557: 
                   2558:                The maximum total number of recipients that must be
                   2559:                buffered is 100 recipients.
                   2560: 
                   2561:                                     
                   2562:           ****************************************************
                   2563:           *                                                  *
                   2564:           *  TO THE MAXIMUM EXTENT POSSIBLE, IMPLEMENTATION  *
                   2565:           *  TECHNIQUES WHICH IMPOSE NO LIMITS ON THE LENGTH *
                   2566:           *  OF THESE OBJECTS SHOULD BE USED.                *
                   2567:           *                                                  *
                   2568:           ****************************************************
                   2569: 
                   2570:          Errors due to exceeding these limits may be reported by using
                   2571:          the reply codes, for example:
                   2572: 
                   2573:             500 Line too long.
                   2574: 
                   2575:             501 Path too long
                   2576: 
                   2577:             552 Too many recipients.
                   2578: 
                   2579:             552 Too much mail data.
                   2580: 
                   2581: 
                   2582: 
                   2583: 
                   2584: 
                   2585: 
                   2586: 
                   2587: 
                   2588: 
                   2589: 
                   2590: 
                   2591: 
                   2592: 
                   2593: 
                   2594: 
                   2595: 
                   2596: 
                   2597: 
                   2598: 
                   2599: Postel                                                         [Page 43]
                   2600: 
                   2601: 
                   2602:                                                                         
                   2603: August 1982                                                      RFC 821
                   2604: Simple Mail Transfer Protocol                                           
                   2605: 
                   2606: 
                   2607: 
                   2608: APPENDIX A
                   2609: 
                   2610:    TCP Transport service
                   2611: 
                   2612:       The Transmission Control Protocol [3] is used in the ARPA
                   2613:       Internet, and in any network following the US DoD standards for
                   2614:       internetwork protocols.
                   2615: 
                   2616:       Connection Establishment
                   2617: 
                   2618:          The SMTP transmission channel is a TCP connection established
                   2619:          between the sender process port U and the receiver process port
                   2620:          L.  This single full duplex connection is used as the
                   2621:          transmission channel.  This protocol is assigned the service
                   2622:          port 25 (31 octal), that is L=25.
                   2623: 
                   2624:       Data Transfer
                   2625: 
                   2626:          The TCP connection supports the transmission of 8-bit bytes.
                   2627:          The SMTP data is 7-bit ASCII characters.  Each character is
                   2628:          transmitted as an 8-bit byte with the high-order bit cleared to
                   2629:          zero.
                   2630: 
                   2631: 
                   2632: 
                   2633: 
                   2634: 
                   2635: 
                   2636: 
                   2637: 
                   2638: 
                   2639: 
                   2640: 
                   2641: 
                   2642: 
                   2643: 
                   2644: 
                   2645: 
                   2646: 
                   2647: 
                   2648: 
                   2649: 
                   2650: 
                   2651: 
                   2652: 
                   2653: 
                   2654: 
                   2655: 
                   2656: 
                   2657: [Page 44]                                                         Postel
                   2658: 
                   2659: 
                   2660:                                                                         
                   2661: RFC 821                                                      August 1982
                   2662:                                            Simple Mail Transfer Protocol
                   2663: 
                   2664: 
                   2665: 
                   2666: APPENDIX B
                   2667: 
                   2668:    NCP Transport service
                   2669: 
                   2670:       The ARPANET Host-to-Host Protocol [4] (implemented by the Network
                   2671:       Control Program) may be used in the ARPANET.
                   2672: 
                   2673:       Connection Establishment
                   2674: 
                   2675:          The SMTP transmission channel is established via NCP between
                   2676:          the sender process socket U and receiver process socket L.  The
                   2677:          Initial Connection Protocol [5] is followed resulting in a pair
                   2678:          of simplex connections.  This pair of connections is used as
                   2679:          the transmission channel.  This protocol is assigned the
                   2680:          contact socket 25 (31 octal), that is L=25.
                   2681: 
                   2682:       Data Transfer
                   2683: 
                   2684:          The NCP data connections are established in 8-bit byte mode.
                   2685:          The SMTP data is 7-bit ASCII characters.  Each character is
                   2686:          transmitted as an 8-bit byte with the high-order bit cleared to
                   2687:          zero.
                   2688: 
                   2689: 
                   2690: 
                   2691: 
                   2692: 
                   2693: 
                   2694: 
                   2695: 
                   2696: 
                   2697: 
                   2698: 
                   2699: 
                   2700: 
                   2701: 
                   2702: 
                   2703: 
                   2704: 
                   2705: 
                   2706: 
                   2707: 
                   2708: 
                   2709: 
                   2710: 
                   2711: 
                   2712: 
                   2713: 
                   2714: 
                   2715: Postel                                                         [Page 45]
                   2716: 
                   2717: 
                   2718:                                                                         
                   2719: August 1982                                                      RFC 821
                   2720: Simple Mail Transfer Protocol                                           
                   2721: 
                   2722: 
                   2723: 
                   2724: APPENDIX C
                   2725: 
                   2726:    NITS
                   2727: 
                   2728:       The Network Independent Transport Service [6] may be used.
                   2729: 
                   2730:       Connection Establishment
                   2731: 
                   2732:          The SMTP transmission channel is established via NITS between
                   2733:          the sender process and receiver process.  The sender process
                   2734:          executes the CONNECT primitive, and the waiting receiver
                   2735:          process executes the ACCEPT primitive.
                   2736: 
                   2737:       Data Transfer
                   2738: 
                   2739:          The NITS connection supports the transmission of 8-bit bytes.
                   2740:          The SMTP data is 7-bit ASCII characters.  Each character is
                   2741:          transmitted as an 8-bit byte with the high-order bit cleared to
                   2742:          zero.
                   2743: 
                   2744: 
                   2745: 
                   2746: 
                   2747: 
                   2748: 
                   2749: 
                   2750: 
                   2751: 
                   2752: 
                   2753: 
                   2754: 
                   2755: 
                   2756: 
                   2757: 
                   2758: 
                   2759: 
                   2760: 
                   2761: 
                   2762: 
                   2763: 
                   2764: 
                   2765: 
                   2766: 
                   2767: 
                   2768: 
                   2769: 
                   2770: 
                   2771: 
                   2772: 
                   2773: [Page 46]                                                         Postel
                   2774: 
                   2775: 
                   2776:                                                                         
                   2777: RFC 821                                                      August 1982
                   2778:                                            Simple Mail Transfer Protocol
                   2779: 
                   2780: 
                   2781: 
                   2782: APPENDIX D
                   2783: 
                   2784:    X.25 Transport service
                   2785: 
                   2786:       It may be possible to use the X.25 service [7] as provided by the
                   2787:       Public Data Networks directly, however, it is suggested that a
                   2788:       reliable end-to-end protocol such as TCP be used on top of X.25
                   2789:       connections.
                   2790: 
                   2791: 
                   2792: 
                   2793: 
                   2794: 
                   2795: 
                   2796: 
                   2797: 
                   2798: 
                   2799: 
                   2800: 
                   2801: 
                   2802: 
                   2803: 
                   2804: 
                   2805: 
                   2806: 
                   2807: 
                   2808: 
                   2809: 
                   2810: 
                   2811: 
                   2812: 
                   2813: 
                   2814: 
                   2815: 
                   2816: 
                   2817: 
                   2818: 
                   2819: 
                   2820: 
                   2821: 
                   2822: 
                   2823: 
                   2824: 
                   2825: 
                   2826: 
                   2827: 
                   2828: 
                   2829: 
                   2830: 
                   2831: Postel                                                         [Page 47]
                   2832: 
                   2833: 
                   2834:                                                                         
                   2835: August 1982                                                      RFC 821
                   2836: Simple Mail Transfer Protocol                                           
                   2837: 
                   2838: 
                   2839: 
                   2840: APPENDIX E
                   2841: 
                   2842:    Theory of Reply Codes
                   2843: 
                   2844:       The three digits of the reply each have a special significance.
                   2845:       The first digit denotes whether the response is good, bad or
                   2846:       incomplete.  An unsophisticated sender-SMTP will be able to
                   2847:       determine its next action (proceed as planned, redo, retrench,
                   2848:       etc.) by simply examining this first digit.  A sender-SMTP that
                   2849:       wants to know approximately what kind of error occurred (e.g.,
                   2850:       mail system error, command syntax error) may examine the second
                   2851:       digit, reserving the third digit for the finest gradation of
                   2852:       information.
                   2853: 
                   2854:          There are five values for the first digit of the reply code:
                   2855: 
                   2856:             1yz   Positive Preliminary reply
                   2857: 
                   2858:                The command has been accepted, but the requested action
                   2859:                is being held in abeyance, pending confirmation of the
                   2860:                information in this reply.  The sender-SMTP should send
                   2861:                another command specifying whether to continue or abort
                   2862:                the action.
                   2863: 
                   2864:                   [Note: SMTP does not have any commands that allow this
                   2865:                   type of reply, and so does not have the continue or
                   2866:                   abort commands.]
                   2867: 
                   2868:             2yz   Positive Completion reply
                   2869: 
                   2870:                The requested action has been successfully completed.  A
                   2871:                new request may be initiated.
                   2872: 
                   2873:             3yz   Positive Intermediate reply
                   2874: 
                   2875:                The command has been accepted, but the requested action
                   2876:                is being held in abeyance, pending receipt of further
                   2877:                information.  The sender-SMTP should send another command
                   2878:                specifying this information.  This reply is used in
                   2879:                command sequence groups.
                   2880: 
                   2881:             4yz   Transient Negative Completion reply
                   2882: 
                   2883:                The command was not accepted and the requested action did
                   2884:                not occur.  However, the error condition is temporary and
                   2885:                the action may be requested again.  The sender should
                   2886: 
                   2887: 
                   2888: 
                   2889: [Page 48]                                                         Postel
                   2890: 
                   2891: 
                   2892:                                                                         
                   2893: RFC 821                                                      August 1982
                   2894:                                            Simple Mail Transfer Protocol
                   2895: 
                   2896: 
                   2897: 
                   2898:                return to the beginning of the command sequence (if any).
                   2899:                It is difficult to assign a meaning to "transient" when
                   2900:                two different sites (receiver- and sender- SMTPs) must
                   2901:                agree on the interpretation.  Each reply in this category
                   2902:                might have a different time value, but the sender-SMTP is
                   2903:                encouraged to try again.  A rule of thumb to determine if
                   2904:                a reply fits into the 4yz or the 5yz category (see below)
                   2905:                is that replies are 4yz if they can be repeated without
                   2906:                any change in command form or in properties of the sender
                   2907:                or receiver.  (E.g., the command is repeated identically
                   2908:                and the receiver does not put up a new implementation.)
                   2909: 
                   2910:             5yz   Permanent Negative Completion reply
                   2911: 
                   2912:                The command was not accepted and the requested action did
                   2913:                not occur.  The sender-SMTP is discouraged from repeating
                   2914:                the exact request (in the same sequence).  Even some
                   2915:                "permanent" error conditions can be corrected, so the
                   2916:                human user may want to direct the sender-SMTP to
                   2917:                reinitiate the command sequence by direct action at some
                   2918:                point in the future (e.g., after the spelling has been
                   2919:                changed, or the user has altered the account status).
                   2920: 
                   2921:          The second digit encodes responses in specific categories:
                   2922: 
                   2923:             x0z   Syntax -- These replies refer to syntax errors,
                   2924:                   syntactically correct commands that don't fit any
                   2925:                   functional category, and unimplemented or superfluous
                   2926:                   commands.
                   2927: 
                   2928:             x1z   Information --  These are replies to requests for
                   2929:                   information, such as status or help.
                   2930: 
                   2931:             x2z   Connections -- These are replies referring to the
                   2932:                   transmission channel.
                   2933: 
                   2934:             x3z   Unspecified as yet.
                   2935: 
                   2936:             x4z   Unspecified as yet.
                   2937: 
                   2938:             x5z   Mail system -- These replies indicate the status of
                   2939:                   the receiver mail system vis-a-vis the requested
                   2940:                   transfer or other mail system action.
                   2941: 
                   2942:          The third digit gives a finer gradation of meaning in each
                   2943:          category specified by the second digit.  The list of replies
                   2944: 
                   2945: 
                   2946: 
                   2947: Postel                                                         [Page 49]
                   2948: 
                   2949: 
                   2950:                                                                         
                   2951: August 1982                                                      RFC 821
                   2952: Simple Mail Transfer Protocol                                           
                   2953: 
                   2954: 
                   2955: 
                   2956:          illustrates this.  Each reply text is recommended rather than
                   2957:          mandatory, and may even change according to the command with
                   2958:          which it is associated.  On the other hand, the reply codes
                   2959:          must strictly follow the specifications in this section.
                   2960:          Receiver implementations should not invent new codes for
                   2961:          slightly different situations from the ones described here, but
                   2962:          rather adapt codes already defined.
                   2963: 
                   2964:          For example, a command such as NOOP whose successful execution
                   2965:          does not offer the sender-SMTP any new information will return
                   2966:          a 250 reply.  The response is 502 when the command requests an
                   2967:          unimplemented non-site-specific action.  A refinement of that
                   2968:          is the 504 reply for a command that is implemented, but that
                   2969:          requests an unimplemented parameter.
                   2970: 
                   2971:       The reply text may be longer than a single line; in these cases
                   2972:       the complete text must be marked so the sender-SMTP knows when it
                   2973:       can stop reading the reply.  This requires a special format to
                   2974:       indicate a multiple line reply.
                   2975: 
                   2976:          The format for multiline replies requires that every line,
                   2977:          except the last, begin with the reply code, followed
                   2978:          immediately by a hyphen, "-" (also known as minus), followed by
                   2979:          text.  The last line will begin with the reply code, followed
                   2980:          immediately by <SP>, optionally some text, and <CRLF>.
                   2981: 
                   2982:             For example:
                   2983:                                 123-First line
                   2984:                                 123-Second line
                   2985:                                 123-234 text beginning with numbers
                   2986:                                 123 The last line
                   2987: 
                   2988:          In many cases the sender-SMTP then simply needs to search for
                   2989:          the reply code followed by <SP> at the beginning of a line, and
                   2990:          ignore all preceding lines.  In a few cases, there is important
                   2991:          data for the sender in the reply "text".  The sender will know
                   2992:          these cases from the current context.
                   2993: 
                   2994: 
                   2995: 
                   2996: 
                   2997: 
                   2998: 
                   2999: 
                   3000: 
                   3001: 
                   3002: 
                   3003: 
                   3004: 
                   3005: [Page 50]                                                         Postel
                   3006: 
                   3007: 
                   3008:                                                                         
                   3009: RFC 821                                                      August 1982
                   3010:                                            Simple Mail Transfer Protocol
                   3011: 
                   3012: 
                   3013: 
                   3014: APPENDIX F
                   3015: 
                   3016:    Scenarios
                   3017: 
                   3018:       This section presents complete scenarios of several types of SMTP
                   3019:       sessions.
                   3020: 
                   3021:    A Typical SMTP Transaction Scenario
                   3022: 
                   3023:       This SMTP example shows mail sent by Smith at host USC-ISIF, to
                   3024:       Jones, Green, and Brown at host BBN-UNIX.  Here we assume that
                   3025:       host USC-ISIF contacts host BBN-UNIX directly.  The mail is
                   3026:       accepted for Jones and Brown.  Green does not have a mailbox at
                   3027:       host BBN-UNIX.
                   3028: 
                   3029:       -------------------------------------------------------------
                   3030: 
                   3031:          R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready
                   3032:          S: HELO USC-ISIF.ARPA
                   3033:          R: 250 BBN-UNIX.ARPA
                   3034: 
                   3035:          S: MAIL FROM:<[email protected]>
                   3036:          R: 250 OK
                   3037: 
                   3038:          S: RCPT TO:<[email protected]>
                   3039:          R: 250 OK
                   3040: 
                   3041:          S: RCPT TO:<[email protected]>
                   3042:          R: 550 No such user here
                   3043: 
                   3044:          S: RCPT TO:<[email protected]>
                   3045:          R: 250 OK
                   3046: 
                   3047:          S: DATA
                   3048:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3049:          S: Blah blah blah...
                   3050:          S: ...etc. etc. etc.
                   3051:          S: .
                   3052:          R: 250 OK
                   3053: 
                   3054:          S: QUIT
                   3055:          R: 221 BBN-UNIX.ARPA Service closing transmission channel
                   3056: 
                   3057:                                Scenario 1
                   3058: 
                   3059:       -------------------------------------------------------------
                   3060: 
                   3061: 
                   3062: 
                   3063: Postel                                                         [Page 51]
                   3064: 
                   3065: 
                   3066:                                                                         
                   3067: August 1982                                                      RFC 821
                   3068: Simple Mail Transfer Protocol                                           
                   3069: 
                   3070: 
                   3071: 
                   3072:    Aborted SMTP Transaction Scenario
                   3073: 
                   3074:       -------------------------------------------------------------
                   3075: 
                   3076:          R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready
                   3077:          S: HELO ISI-VAXA.ARPA
                   3078:          R: 250 MIT-Multics.ARPA
                   3079: 
                   3080:          S: MAIL FROM:<[email protected]>
                   3081:          R: 250 OK
                   3082: 
                   3083:          S: RCPT TO:<[email protected]>
                   3084:          R: 250 OK
                   3085: 
                   3086:          S: RCPT TO:<[email protected]>
                   3087:          R: 550 No such user here
                   3088: 
                   3089:          S: RSET
                   3090:          R: 250 OK
                   3091: 
                   3092:          S: QUIT
                   3093:          R: 221 MIT-Multics.ARPA Service closing transmission channel
                   3094: 
                   3095:                                Scenario 2
                   3096: 
                   3097:       -------------------------------------------------------------
                   3098: 
                   3099: 
                   3100: 
                   3101: 
                   3102: 
                   3103: 
                   3104: 
                   3105: 
                   3106: 
                   3107: 
                   3108: 
                   3109: 
                   3110: 
                   3111: 
                   3112: 
                   3113: 
                   3114: 
                   3115: 
                   3116: 
                   3117: 
                   3118: 
                   3119: 
                   3120: 
                   3121: [Page 52]                                                         Postel
                   3122: 
                   3123: 
                   3124:                                                                         
                   3125: RFC 821                                                      August 1982
                   3126:                                            Simple Mail Transfer Protocol
                   3127: 
                   3128: 
                   3129: 
                   3130:    Relayed Mail Scenario
                   3131: 
                   3132:       -------------------------------------------------------------
                   3133: 
                   3134:          Step 1  --  Source Host to Relay Host
                   3135: 
                   3136:             R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
                   3137:             S: HELO MIT-AI.ARPA
                   3138:             R: 250 USC-ISIE.ARPA
                   3139: 
                   3140:             S: MAIL FROM:<[email protected]>
                   3141:             R: 250 OK
                   3142: 
                   3143:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3144:             R: 250 OK
                   3145: 
                   3146:             S: DATA
                   3147:             R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3148:             S: Date: 2 Nov 81 22:33:44
                   3149:             S: From: John Q. Public <[email protected]>
                   3150:             S: Subject:  The Next Meeting of the Board
                   3151:             S: To: [email protected]
                   3152:             S:
                   3153:             S: Bill:
                   3154:             S: The next meeting of the board of directors will be
                   3155:             S: on Tuesday.
                   3156:             S:                                              John.
                   3157:             S: .
                   3158:             R: 250 OK
                   3159: 
                   3160:             S: QUIT
                   3161:             R: 221 USC-ISIE.ARPA Service closing transmission channel
                   3162: 
                   3163: 
                   3164: 
                   3165: 
                   3166: 
                   3167: 
                   3168: 
                   3169: 
                   3170: 
                   3171: 
                   3172: 
                   3173: 
                   3174: 
                   3175: 
                   3176: 
                   3177: 
                   3178: 
                   3179: Postel                                                         [Page 53]
                   3180: 
                   3181: 
                   3182:                                                                         
                   3183: August 1982                                                      RFC 821
                   3184: Simple Mail Transfer Protocol                                           
                   3185: 
                   3186: 
                   3187: 
                   3188:          Step 2  --  Relay Host to Destination Host
                   3189: 
                   3190:             R: 220 BBN-VAX.ARPA Simple Mail Transfer Service Ready
                   3191:             S: HELO USC-ISIE.ARPA
                   3192:             R: 250 BBN-VAX.ARPA
                   3193: 
                   3194:             S: MAIL FROM:<@USC-ISIE.ARPA:[email protected]>
                   3195:             R: 250 OK
                   3196: 
                   3197:             S: RCPT TO:<[email protected]>
                   3198:             R: 250 OK
                   3199: 
                   3200:             S: DATA
                   3201:             R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3202:             S: Received: from MIT-AI.ARPA by USC-ISIE.ARPA ;
                   3203:                2 Nov 81 22:40:10 UT
                   3204:             S: Date: 2 Nov 81 22:33:44
                   3205:             S: From: John Q. Public <[email protected]>
                   3206:             S: Subject:  The Next Meeting of the Board
                   3207:             S: To: [email protected]
                   3208:             S:
                   3209:             S: Bill:
                   3210:             S: The next meeting of the board of directors will be
                   3211:             S: on Tuesday.
                   3212:             S:                                              John.
                   3213:             S: .
                   3214:             R: 250 OK
                   3215: 
                   3216:             S: QUIT
                   3217:             R: 221 USC-ISIE.ARPA Service closing transmission channel
                   3218: 
                   3219:                                Scenario 3
                   3220: 
                   3221:       -------------------------------------------------------------
                   3222: 
                   3223: 
                   3224: 
                   3225: 
                   3226: 
                   3227: 
                   3228: 
                   3229: 
                   3230: 
                   3231: 
                   3232: 
                   3233: 
                   3234: 
                   3235: 
                   3236: 
                   3237: [Page 54]                                                         Postel
                   3238: 
                   3239: 
                   3240:                                                                         
                   3241: RFC 821                                                      August 1982
                   3242:                                            Simple Mail Transfer Protocol
                   3243: 
                   3244: 
                   3245: 
                   3246:    Verifying and Sending Scenario
                   3247: 
                   3248:       -------------------------------------------------------------
                   3249: 
                   3250:          R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
                   3251:          S: HELO MIT-MC.ARPA
                   3252:          R: 250 SU-SCORE.ARPA
                   3253: 
                   3254:          S: VRFY Crispin
                   3255:          R: 250 Mark Crispin <[email protected]>
                   3256: 
                   3257:          S: SEND FROM:<[email protected]>
                   3258:          R: 250 OK
                   3259: 
                   3260:          S: RCPT TO:<[email protected]>
                   3261:          R: 250 OK
                   3262: 
                   3263:          S: DATA
                   3264:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3265:          S: Blah blah blah...
                   3266:          S: ...etc. etc. etc.
                   3267:          S: .
                   3268:          R: 250 OK
                   3269: 
                   3270:          S: QUIT
                   3271:          R: 221 SU-SCORE.ARPA Service closing transmission channel
                   3272: 
                   3273:                                Scenario 4
                   3274: 
                   3275:       -------------------------------------------------------------
                   3276: 
                   3277: 
                   3278: 
                   3279: 
                   3280: 
                   3281: 
                   3282: 
                   3283: 
                   3284: 
                   3285: 
                   3286: 
                   3287: 
                   3288: 
                   3289: 
                   3290: 
                   3291: 
                   3292: 
                   3293: 
                   3294: 
                   3295: Postel                                                         [Page 55]
                   3296: 
                   3297: 
                   3298:                                                                         
                   3299: August 1982                                                      RFC 821
                   3300: Simple Mail Transfer Protocol                                           
                   3301: 
                   3302: 
                   3303: 
                   3304:    Sending and Mailing Scenarios
                   3305: 
                   3306:       First the user's name is verified, then  an attempt is made to
                   3307:       send to the user's terminal.  When that fails, the messages is
                   3308:       mailed to the user's mailbox.
                   3309: 
                   3310:       -------------------------------------------------------------
                   3311: 
                   3312:          R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
                   3313:          S: HELO MIT-MC.ARPA
                   3314:          R: 250 SU-SCORE.ARPA
                   3315: 
                   3316:          S: VRFY Crispin
                   3317:          R: 250 Mark Crispin <[email protected]>
                   3318: 
                   3319:          S: SEND FROM:<[email protected]>
                   3320:          R: 250 OK
                   3321: 
                   3322:          S: RCPT TO:<[email protected]>
                   3323:          R: 450 User not active now
                   3324: 
                   3325:          S: RSET
                   3326:          R: 250 OK
                   3327: 
                   3328:          S: MAIL FROM:<[email protected]>
                   3329:          R: 250 OK
                   3330: 
                   3331:          S: RCPT TO:<[email protected]>
                   3332:          R: 250 OK
                   3333: 
                   3334:          S: DATA
                   3335:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3336:          S: Blah blah blah...
                   3337:          S: ...etc. etc. etc.
                   3338:          S: .
                   3339:          R: 250 OK
                   3340: 
                   3341:          S: QUIT
                   3342:          R: 221 SU-SCORE.ARPA Service closing transmission channel
                   3343: 
                   3344:                                Scenario 5
                   3345: 
                   3346:       -------------------------------------------------------------
                   3347: 
                   3348: 
                   3349: 
                   3350: 
                   3351: 
                   3352: 
                   3353: [Page 56]                                                         Postel
                   3354: 
                   3355: 
                   3356:                                                                         
                   3357: RFC 821                                                      August 1982
                   3358:                                            Simple Mail Transfer Protocol
                   3359: 
                   3360: 
                   3361: 
                   3362:       Doing the preceding scenario more efficiently.
                   3363: 
                   3364:       -------------------------------------------------------------
                   3365: 
                   3366:          R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready
                   3367:          S: HELO MIT-MC.ARPA
                   3368:          R: 250 SU-SCORE.ARPA
                   3369: 
                   3370:          S: VRFY Crispin
                   3371:          R: 250 Mark Crispin <[email protected]>
                   3372: 
                   3373:          S: SOML FROM:<[email protected]>
                   3374:          R: 250 OK
                   3375: 
                   3376:          S: RCPT TO:<[email protected]>
                   3377:          R: 250 User not active now, so will do mail.
                   3378: 
                   3379:          S: DATA
                   3380:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3381:          S: Blah blah blah...
                   3382:          S: ...etc. etc. etc.
                   3383:          S: .
                   3384:          R: 250 OK
                   3385: 
                   3386:          S: QUIT
                   3387:          R: 221 SU-SCORE.ARPA Service closing transmission channel
                   3388: 
                   3389:                                Scenario 6
                   3390: 
                   3391:       -------------------------------------------------------------
                   3392: 
                   3393: 
                   3394: 
                   3395: 
                   3396: 
                   3397: 
                   3398: 
                   3399: 
                   3400: 
                   3401: 
                   3402: 
                   3403: 
                   3404: 
                   3405: 
                   3406: 
                   3407: 
                   3408: 
                   3409: 
                   3410: 
                   3411: Postel                                                         [Page 57]
                   3412: 
                   3413: 
                   3414:                                                                         
                   3415: August 1982                                                      RFC 821
                   3416: Simple Mail Transfer Protocol                                           
                   3417: 
                   3418: 
                   3419: 
                   3420:    Mailing List Scenario
                   3421: 
                   3422:       First each of two mailing lists are expanded in separate sessions
                   3423:       with different hosts.  Then the message is sent to everyone that
                   3424:       appeared on either list (but no duplicates) via a relay host.
                   3425: 
                   3426:       -------------------------------------------------------------
                   3427: 
                   3428:          Step 1  --  Expanding the First List
                   3429: 
                   3430:             R: 220 MIT-AI.ARPA Simple Mail Transfer Service Ready
                   3431:             S: HELO SU-SCORE.ARPA
                   3432:             R: 250 MIT-AI.ARPA
                   3433: 
                   3434:             S: EXPN Example-People
                   3435:             R: 250-<[email protected]>
                   3436:             R: 250-Fred Fonebone <[email protected]>
                   3437:             R: 250-Xenon Y. Zither <[email protected]>
                   3438:             R: 250-Quincy Smith <@USC-ISIF.ARPA:[email protected]>
                   3439:             R: 250-<[email protected]>
                   3440:             R: 250 <[email protected]>
                   3441: 
                   3442:             S: QUIT
                   3443:             R: 221 MIT-AI.ARPA Service closing transmission channel
                   3444: 
                   3445: 
                   3446: 
                   3447: 
                   3448: 
                   3449: 
                   3450: 
                   3451: 
                   3452: 
                   3453: 
                   3454: 
                   3455: 
                   3456: 
                   3457: 
                   3458: 
                   3459: 
                   3460: 
                   3461: 
                   3462: 
                   3463: 
                   3464: 
                   3465: 
                   3466: 
                   3467: 
                   3468: 
                   3469: [Page 58]                                                         Postel
                   3470: 
                   3471: 
                   3472:                                                                         
                   3473: RFC 821                                                      August 1982
                   3474:                                            Simple Mail Transfer Protocol
                   3475: 
                   3476: 
                   3477: 
                   3478:          Step 2  --  Expanding the Second List
                   3479: 
                   3480:             R: 220 MIT-MC.ARPA Simple Mail Transfer Service Ready
                   3481:             S: HELO SU-SCORE.ARPA
                   3482:             R: 250 MIT-MC.ARPA
                   3483: 
                   3484:             S: EXPN Interested-Parties
                   3485:             R: 250-Al Calico <[email protected]>
                   3486:             R: 250-<[email protected]>
                   3487:             R: 250-Quincy Smith <@USC-ISIF.ARPA:[email protected]>
                   3488:             R: 250-<[email protected]>
                   3489:             R: 250 <[email protected]>
                   3490: 
                   3491:             S: QUIT
                   3492:             R: 221 MIT-MC.ARPA Service closing transmission channel
                   3493: 
                   3494: 
                   3495: 
                   3496: 
                   3497: 
                   3498: 
                   3499: 
                   3500: 
                   3501: 
                   3502: 
                   3503: 
                   3504: 
                   3505: 
                   3506: 
                   3507: 
                   3508: 
                   3509: 
                   3510: 
                   3511: 
                   3512: 
                   3513: 
                   3514: 
                   3515: 
                   3516: 
                   3517: 
                   3518: 
                   3519: 
                   3520: 
                   3521: 
                   3522: 
                   3523: 
                   3524: 
                   3525: 
                   3526: 
                   3527: Postel                                                         [Page 59]
                   3528: 
                   3529: 
                   3530:                                                                         
                   3531: August 1982                                                      RFC 821
                   3532: Simple Mail Transfer Protocol                                           
                   3533: 
                   3534: 
                   3535: 
                   3536:          Step 3  --  Mailing to All via a Relay Host
                   3537: 
                   3538:             R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready
                   3539:             S: HELO SU-SCORE.ARPA
                   3540:             R: 250 USC-ISIE.ARPA
                   3541: 
                   3542:             S: MAIL FROM:<[email protected]>
                   3543:             R: 250 OK
                   3544:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3545:             R: 250 OK
                   3546:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3547:             R: 250 OK
                   3548:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3549:             R: 250 OK
                   3550:             S: RCPT
                   3551:                 TO:<@USC-ISIE.ARPA,@USC-ISIF.ARPA:[email protected]>
                   3552:             R: 250 OK
                   3553:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3554:             R: 250 OK
                   3555:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3556:             R: 250 OK
                   3557:             S: RCPT TO:<@USC-ISIE.ARPA:[email protected]>
                   3558:             R: 250 OK
                   3559: 
                   3560:             S: DATA
                   3561:             R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3562:             S: Blah blah blah...
                   3563:             S: ...etc. etc. etc.
                   3564:             S: .
                   3565:             R: 250 OK
                   3566: 
                   3567:             S: QUIT
                   3568:             R: 221 USC-ISIE.ARPA Service closing transmission channel
                   3569: 
                   3570:                                Scenario 7
                   3571: 
                   3572:       -------------------------------------------------------------
                   3573: 
                   3574: 
                   3575: 
                   3576: 
                   3577: 
                   3578: 
                   3579: 
                   3580: 
                   3581: 
                   3582: 
                   3583: 
                   3584: 
                   3585: [Page 60]                                                         Postel
                   3586: 
                   3587: 
                   3588:                                                                         
                   3589: RFC 821                                                      August 1982
                   3590:                                            Simple Mail Transfer Protocol
                   3591: 
                   3592: 
                   3593: 
                   3594:    Forwarding Scenarios
                   3595: 
                   3596:       -------------------------------------------------------------
                   3597: 
                   3598:          R: 220 USC-ISIF.ARPA Simple Mail Transfer Service Ready
                   3599:          S: HELO LBL-UNIX.ARPA
                   3600:          R: 250 USC-ISIF.ARPA
                   3601: 
                   3602:          S: MAIL FROM:<[email protected]>
                   3603:          R: 250 OK
                   3604: 
                   3605:          S: RCPT TO:<[email protected]>
                   3606:          R: 251 User not local; will forward to <[email protected]>
                   3607: 
                   3608:          S: DATA
                   3609:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3610:          S: Blah blah blah...
                   3611:          S: ...etc. etc. etc.
                   3612:          S: .
                   3613:          R: 250 OK
                   3614: 
                   3615:          S: QUIT
                   3616:          R: 221 USC-ISIF.ARPA Service closing transmission channel
                   3617: 
                   3618:                                Scenario 8
                   3619: 
                   3620:       -------------------------------------------------------------
                   3621: 
                   3622: 
                   3623: 
                   3624: 
                   3625: 
                   3626: 
                   3627: 
                   3628: 
                   3629: 
                   3630: 
                   3631: 
                   3632: 
                   3633: 
                   3634: 
                   3635: 
                   3636: 
                   3637: 
                   3638: 
                   3639: 
                   3640: 
                   3641: 
                   3642: 
                   3643: Postel                                                         [Page 61]
                   3644: 
                   3645: 
                   3646:                                                                         
                   3647: August 1982                                                      RFC 821
                   3648: Simple Mail Transfer Protocol                                           
                   3649: 
                   3650: 
                   3651: 
                   3652:       -------------------------------------------------------------
                   3653: 
                   3654:          Step 1  --  Trying the Mailbox at the First Host
                   3655: 
                   3656:             R: 220 USC-ISIF.ARPA Simple Mail Transfer Service Ready
                   3657:             S: HELO LBL-UNIX.ARPA
                   3658:             R: 250 USC-ISIF.ARPA
                   3659: 
                   3660:             S: MAIL FROM:<[email protected]>
                   3661:             R: 250 OK
                   3662: 
                   3663:             S: RCPT TO:<[email protected]>
                   3664:             R: 251 User not local; will forward to <[email protected]>
                   3665: 
                   3666:             S: RSET
                   3667:             R: 250 OK
                   3668: 
                   3669:             S: QUIT
                   3670:             R: 221 USC-ISIF.ARPA Service closing transmission channel
                   3671: 
                   3672:          Step 2  --  Delivering the Mail at the Second Host
                   3673: 
                   3674:             R: 220 USC-ISI.ARPA Simple Mail Transfer Service Ready
                   3675:             S: HELO LBL-UNIX.ARPA
                   3676:             R: 250 USC-ISI.ARPA
                   3677: 
                   3678:             S: MAIL FROM:<[email protected]>
                   3679:             R: 250 OK
                   3680: 
                   3681:             S: RCPT TO:<[email protected]>
                   3682:             R: OK
                   3683: 
                   3684:             S: DATA
                   3685:             R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3686:             S: Blah blah blah...
                   3687:             S: ...etc. etc. etc.
                   3688:             S: .
                   3689:             R: 250 OK
                   3690: 
                   3691:             S: QUIT
                   3692:             R: 221 USC-ISI.ARPA Service closing transmission channel
                   3693: 
                   3694:                                Scenario 9
                   3695: 
                   3696:       -------------------------------------------------------------
                   3697: 
                   3698: 
                   3699: 
                   3700: 
                   3701: [Page 62]                                                         Postel
                   3702: 
                   3703: 
                   3704:                                                                         
                   3705: RFC 821                                                      August 1982
                   3706:                                            Simple Mail Transfer Protocol
                   3707: 
                   3708: 
                   3709: 
                   3710:    Too Many Recipients Scenario
                   3711: 
                   3712:       -------------------------------------------------------------
                   3713: 
                   3714:          R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready
                   3715:          S: HELO USC-ISIF.ARPA
                   3716:          R: 250 BERKELEY.ARPA
                   3717: 
                   3718:          S: MAIL FROM:<[email protected]>
                   3719:          R: 250 OK
                   3720: 
                   3721:          S: RCPT TO:<[email protected]>
                   3722:          R: 250 OK
                   3723: 
                   3724:          S: RCPT TO:<[email protected]>
                   3725:          R: 552 Recipient storage full, try again in another transaction
                   3726: 
                   3727:          S: DATA
                   3728:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3729:          S: Blah blah blah...
                   3730:          S: ...etc. etc. etc.
                   3731:          S: .
                   3732:          R: 250 OK
                   3733: 
                   3734:          S: MAIL FROM:<[email protected]>
                   3735:          R: 250 OK
                   3736: 
                   3737:          S: RCPT TO:<[email protected]>
                   3738:          R: 250 OK
                   3739: 
                   3740:          S: DATA
                   3741:          R: 354 Start mail input; end with <CRLF>.<CRLF>
                   3742:          S: Blah blah blah...
                   3743:          S: ...etc. etc. etc.
                   3744:          S: .
                   3745:          R: 250 OK
                   3746: 
                   3747:          S: QUIT
                   3748:          R: 221 BERKELEY.ARPA Service closing transmission channel
                   3749: 
                   3750:                               Scenario 10
                   3751: 
                   3752:       -------------------------------------------------------------
                   3753: 
                   3754:       Note that a real implementation must handle many recipients as
                   3755:       specified in Section 4.5.3.
                   3756: 
                   3757: 
                   3758: 
                   3759: Postel                                                         [Page 63]
                   3760: 
                   3761: 
                   3762:                                                                         
                   3763: August 1982                                                      RFC 821
                   3764: Simple Mail Transfer Protocol                                           
                   3765: 
                   3766: 
                   3767: 
                   3768: GLOSSARY
                   3769: 
                   3770:    ASCII
                   3771: 
                   3772:       American Standard Code for Information Interchange [1].
                   3773: 
                   3774:    command
                   3775: 
                   3776:       A request for a mail service action sent by the sender-SMTP to the
                   3777:       receiver-SMTP.
                   3778: 
                   3779:    domain
                   3780: 
                   3781:       The hierarchially structured global character string address of a
                   3782:       host computer in the mail system.
                   3783: 
                   3784:    end of mail data indication
                   3785: 
                   3786:       A special sequence of characters that indicates the end of the
                   3787:       mail data.  In particular, the five characters carriage return,
                   3788:       line feed, period, carriage return, line feed, in that order.
                   3789: 
                   3790:    host
                   3791: 
                   3792:       A computer in the internetwork environment on which mailboxes or
                   3793:       SMTP processes reside.
                   3794: 
                   3795:    line
                   3796: 
                   3797:       A a sequence of ASCII characters ending with a <CRLF>.
                   3798: 
                   3799:    mail data
                   3800: 
                   3801:       A sequence of ASCII characters of arbitrary length, which conforms
                   3802:       to the standard set in the Standard for the Format of ARPA
                   3803:       Internet Text Messages (RFC 822 [2]).
                   3804: 
                   3805:    mailbox
                   3806: 
                   3807:       A character string (address) which identifies a user to whom mail
                   3808:       is to be sent.  Mailbox normally consists of the host and user
                   3809:       specifications.  The standard mailbox naming convention is defined
                   3810:       to be "user@domain".  Additionally, the "container" in which mail
                   3811:       is stored.
                   3812: 
                   3813: 
                   3814: 
                   3815: 
                   3816: 
                   3817: [Page 64]                                                         Postel
                   3818: 
                   3819: 
                   3820:                                                                         
                   3821: RFC 821                                                      August 1982
                   3822:                                            Simple Mail Transfer Protocol
                   3823: 
                   3824: 
                   3825: 
                   3826:    receiver-SMTP process
                   3827: 
                   3828:       A process which transfers mail in cooperation with a sender-SMTP
                   3829:       process.  It waits for a connection to be established via the
                   3830:       transport service.  It receives SMTP commands from the
                   3831:       sender-SMTP, sends replies, and performs the specified operations.
                   3832: 
                   3833:    reply
                   3834: 
                   3835:       A reply is an acknowledgment (positive or negative) sent from
                   3836:       receiver to sender via the transmission channel in response to a
                   3837:       command.  The general form of a reply is a completion code
                   3838:       (including error codes) followed by a text string.  The codes are
                   3839:       for use by programs and the text is usually intended for human
                   3840:       users.
                   3841: 
                   3842:    sender-SMTP process
                   3843: 
                   3844:       A process which transfers mail in cooperation with a receiver-SMTP
                   3845:       process.  A local language may be used in the user interface
                   3846:       command/reply dialogue.  The sender-SMTP initiates the transport
                   3847:       service connection.  It initiates SMTP commands, receives replies,
                   3848:       and governs the transfer of mail.
                   3849: 
                   3850:    session
                   3851: 
                   3852:       The set of exchanges that occur while the transmission channel is
                   3853:       open.
                   3854: 
                   3855:    transaction
                   3856: 
                   3857:       The set of exchanges required for one message to be transmitted
                   3858:       for one or more recipients.
                   3859: 
                   3860:    transmission channel
                   3861: 
                   3862:       A full-duplex communication path between a sender-SMTP and a
                   3863:       receiver-SMTP for the exchange of commands, replies, and mail
                   3864:       text.
                   3865: 
                   3866:    transport service
                   3867: 
                   3868:       Any reliable stream-oriented data communication services.  For
                   3869:       example, NCP, TCP, NITS.
                   3870: 
                   3871: 
                   3872: 
                   3873: 
                   3874: 
                   3875: Postel                                                         [Page 65]
                   3876: 
                   3877: 
                   3878:                                                                         
                   3879: August 1982                                                      RFC 821
                   3880: Simple Mail Transfer Protocol                                           
                   3881: 
                   3882: 
                   3883: 
                   3884:    user
                   3885: 
                   3886:       A human being (or a process on behalf of a human being) wishing to
                   3887:       obtain mail transfer service.  In addition, a recipient of
                   3888:       computer mail.
                   3889: 
                   3890:    word
                   3891: 
                   3892:       A sequence of printing characters.
                   3893: 
                   3894:    <CRLF>
                   3895: 
                   3896:       The characters carriage return and line feed (in that order).
                   3897: 
                   3898:    <SP>
                   3899: 
                   3900:       The space character.
                   3901: 
                   3902: 
                   3903: 
                   3904: 
                   3905: 
                   3906: 
                   3907: 
                   3908: 
                   3909: 
                   3910: 
                   3911: 
                   3912: 
                   3913: 
                   3914: 
                   3915: 
                   3916: 
                   3917: 
                   3918: 
                   3919: 
                   3920: 
                   3921: 
                   3922: 
                   3923: 
                   3924: 
                   3925: 
                   3926: 
                   3927: 
                   3928: 
                   3929: 
                   3930: 
                   3931: 
                   3932: 
                   3933: [Page 66]                                                         Postel
                   3934: 
                   3935: 
                   3936:                                                                         
                   3937: RFC 821                                                      August 1982
                   3938:                                            Simple Mail Transfer Protocol
                   3939: 
                   3940: 
                   3941: 
                   3942: REFERENCES
                   3943: 
                   3944:    [1]  ASCII
                   3945: 
                   3946:       ASCII, "USA Code for Information Interchange", United States of
                   3947:       America Standards Institute, X3.4, 1968.  Also in:  Feinler, E.
                   3948:       and J. Postel, eds., "ARPANET Protocol Handbook", NIC 7104, for
                   3949:       the Defense Communications Agency by SRI International, Menlo
                   3950:       Park, California, Revised January 1978.
                   3951: 
                   3952:    [2]  RFC 822
                   3953: 
                   3954:       Crocker, D., "Standard for the Format of ARPA Internet Text
                   3955:       Messages," RFC 822, Department of Electrical Engineering,
                   3956:       University of Delaware, August 1982.
                   3957: 
                   3958:    [3]  TCP
                   3959: 
                   3960:       Postel, J., ed., "Transmission Control Protocol - DARPA Internet
                   3961:       Program Protocol Specification", RFC 793, USC/Information Sciences
                   3962:       Institute, NTIS AD Number A111091, September 1981.  Also in:
                   3963:       Feinler, E. and J. Postel, eds., "Internet Protocol Transition
                   3964:       Workbook", SRI International, Menlo Park, California, March 1982.
                   3965: 
                   3966:    [4]  NCP
                   3967: 
                   3968:       McKenzie,A., "Host/Host Protocol for the ARPA Network", NIC 8246,
                   3969:       January 1972.  Also in:  Feinler, E. and J. Postel, eds., "ARPANET
                   3970:       Protocol Handbook", NIC 7104, for the Defense Communications
                   3971:       Agency by SRI International, Menlo Park, California, Revised
                   3972:       January 1978.
                   3973: 
                   3974:    [5]  Initial Connection Protocol
                   3975: 
                   3976:       Postel, J., "Official Initial Connection Protocol", NIC 7101,
                   3977:       11 June 1971.  Also in:  Feinler, E. and J. Postel, eds., "ARPANET
                   3978:       Protocol Handbook", NIC 7104, for the Defense Communications
                   3979:       Agency by SRI International, Menlo Park, California, Revised
                   3980:       January 1978.
                   3981: 
                   3982:    [6]  NITS
                   3983: 
                   3984:       PSS/SG3, "A Network Independent Transport Service", Study Group 3,
                   3985:       The Post Office PSS Users Group, February 1980.  Available from
                   3986:       the DCPU, National Physical Laboratory, Teddington, UK.
                   3987: 
                   3988: 
                   3989: 
                   3990: 
                   3991: Postel                                                         [Page 67]
                   3992: 
                   3993: 
                   3994:                                                                         
                   3995: August 1982                                                      RFC 821
                   3996: Simple Mail Transfer Protocol                                           
                   3997: 
                   3998: 
                   3999: 
                   4000:    [7]  X.25
                   4001: 
                   4002:       CCITT, "Recommendation X.25 - Interface Between Data Terminal
                   4003:       Equipment (DTE) and Data Circuit-terminating Equipment (DCE) for
                   4004:       Terminals Operating in the Packet Mode on Public Data Networks,"
                   4005:       CCITT Orange Book, Vol. VIII.2, International Telephone and
                   4006:       Telegraph Consultative Committee, Geneva, 1976.
                   4007: 
                   4008:          
                   4009: 
                   4010: 
                   4011: 
                   4012: 
                   4013: 
                   4014: 
                   4015: 
                   4016: 
                   4017: 
                   4018: 
                   4019: 
                   4020: 
                   4021: 
                   4022: 
                   4023: 
                   4024: 
                   4025: 
                   4026: 
                   4027: 
                   4028: 
                   4029: 
                   4030: 
                   4031: 
                   4032: 
                   4033: 
                   4034: 
                   4035: 
                   4036: 
                   4037: 
                   4038: 
                   4039: 
                   4040: 
                   4041: 
                   4042: 
                   4043: 
                   4044: 
                   4045: 
                   4046: 
                   4047: 
                   4048: 
                   4049: [Page 68]                                                         Postel
                   4050: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.