Annotation of 42BSD/usr.lib/sendmail/doc/rfc821.lpr, revision 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: 
        !          4051: 

unix.superglobalmegacorp.com

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