rohrpost

A commandline mail client to change the world as we see it.
git clone git://r-36.net/rohrpost
Log | Files | Refs | README | LICENSE

rfc2821.txt (192504B)


      1 
      2 
      3 
      4 
      5 
      6 
      7 Network Working Group                                 J. Klensin, Editor
      8 Request for Comments: 2821                             AT&T Laboratories
      9 Obsoletes: 821, 974, 1869                                     April 2001
     10 Updates: 1123
     11 Category: Standards Track
     12 
     13 
     14                      Simple Mail Transfer Protocol
     15 
     16 Status of this Memo
     17 
     18    This document specifies an Internet standards track protocol for the
     19    Internet community, and requests discussion and suggestions for
     20    improvements.  Please refer to the current edition of the "Internet
     21    Official Protocol Standards" (STD 1) for the standardization state
     22    and status of this protocol.  Distribution of this memo is unlimited.
     23 
     24 Copyright Notice
     25 
     26    Copyright (C) The Internet Society (2001).  All Rights Reserved.
     27 
     28 Abstract
     29 
     30    This document is a self-contained specification of the basic protocol
     31    for the Internet electronic mail transport.  It consolidates, updates
     32    and clarifies, but doesn't add new or change existing functionality
     33    of the following:
     34 
     35    -  the original SMTP (Simple Mail Transfer Protocol) specification of
     36       RFC 821 [30],
     37 
     38    -  domain name system requirements and implications for mail
     39       transport from RFC 1035 [22] and RFC 974 [27],
     40 
     41    -  the clarifications and applicability statements in RFC 1123 [2],
     42       and
     43 
     44    -  material drawn from the SMTP Extension mechanisms [19].
     45 
     46    It obsoletes RFC 821, RFC 974, and updates RFC 1123 (replaces the
     47    mail transport materials of RFC 1123).  However, RFC 821 specifies
     48    some features that were not in significant use in the Internet by the
     49    mid-1990s and (in appendices) some additional transport models.
     50    Those sections are omitted here in the interest of clarity and
     51    brevity; readers needing them should refer to RFC 821.
     52 
     53 
     54 
     55 
     56 
     57 
     58 Klensin                     Standards Track                     [Page 1]
     59 
     60 RFC 2821             Simple Mail Transfer Protocol            April 2001
     61 
     62 
     63    It also includes some additional material from RFC 1123 that required
     64    amplification.  This material has been identified in multiple ways,
     65    mostly by tracking flaming on various lists and newsgroups and
     66    problems of unusual readings or interpretations that have appeared as
     67    the SMTP extensions have been deployed.  Where this specification
     68    moves beyond consolidation and actually differs from earlier
     69    documents, it supersedes them technically as well as textually.
     70 
     71    Although SMTP was designed as a mail transport and delivery protocol,
     72    this specification also contains information that is important to its
     73    use as a 'mail submission' protocol, as recommended for POP [3, 26]
     74    and IMAP [6].  Additional submission issues are discussed in RFC 2476
     75    [15].
     76 
     77    Section 2.3 provides definitions of terms specific to this document.
     78    Except when the historical terminology is necessary for clarity, this
     79    document uses the current 'client' and 'server' terminology to
     80    identify the sending and receiving SMTP processes, respectively.
     81 
     82    A companion document [32] discusses message headers, message bodies
     83    and formats and structures for them, and their relationship.
     84 
     85 Table of Contents
     86 
     87    1. Introduction ..................................................  4
     88    2. The SMTP Model ................................................  5
     89    2.1 Basic Structure ..............................................  5
     90    2.2 The Extension Model ..........................................  7
     91    2.2.1 Background .................................................  7
     92    2.2.2 Definition and Registration of Extensions ..................  8
     93    2.3 Terminology ..................................................  9
     94    2.3.1 Mail Objects ............................................... 10
     95    2.3.2 Senders and Receivers ...................................... 10
     96    2.3.3 Mail Agents and Message Stores ............................. 10
     97    2.3.4 Host ....................................................... 11
     98    2.3.5 Domain ..................................................... 11
     99    2.3.6 Buffer and State Table ..................................... 11
    100    2.3.7 Lines ...................................................... 12
    101    2.3.8 Originator, Delivery, Relay, and Gateway Systems ........... 12
    102    2.3.9 Message Content and Mail Data .............................. 13
    103    2.3.10 Mailbox and Address ....................................... 13
    104    2.3.11 Reply ..................................................... 13
    105    2.4 General Syntax Principles and Transaction Model .............. 13
    106    3. The SMTP Procedures: An Overview .............................. 15
    107    3.1 Session Initiation ........................................... 15
    108    3.2 Client Initiation ............................................ 16
    109    3.3 Mail Transactions ............................................ 16
    110    3.4 Forwarding for Address Correction or Updating ................ 19
    111 
    112 
    113 
    114 Klensin                     Standards Track                     [Page 2]
    115 
    116 RFC 2821             Simple Mail Transfer Protocol            April 2001
    117 
    118 
    119    3.5 Commands for Debugging Addresses ............................. 20
    120    3.5.1 Overview ................................................... 20
    121    3.5.2 VRFY Normal Response ....................................... 22
    122    3.5.3 Meaning of VRFY or EXPN Success Response ................... 22
    123    3.5.4 Semantics and Applications of EXPN ......................... 23
    124    3.6 Domains ...................................................... 23
    125    3.7 Relaying ..................................................... 24
    126    3.8 Mail Gatewaying .............................................. 25
    127    3.8.1 Header Fields in Gatewaying ................................ 26
    128    3.8.2 Received Lines in Gatewaying ............................... 26
    129    3.8.3 Addresses in Gatewaying .................................... 26
    130    3.8.4 Other Header Fields in Gatewaying .......................... 27
    131    3.8.5 Envelopes in Gatewaying .................................... 27
    132    3.9 Terminating Sessions and Connections ......................... 27
    133    3.10 Mailing Lists and Aliases ................................... 28
    134    3.10.1 Alias ..................................................... 28
    135    3.10.2 List ...................................................... 28
    136    4. The SMTP Specifications ....................................... 29
    137    4.1 SMTP Commands ................................................ 29
    138    4.1.1 Command Semantics and Syntax ............................... 29
    139    4.1.1.1  Extended HELLO (EHLO) or HELLO (HELO) ................... 29
    140    4.1.1.2 MAIL (MAIL) .............................................. 31
    141    4.1.1.3 RECIPIENT (RCPT) ......................................... 31
    142    4.1.1.4 DATA (DATA) .............................................. 33
    143    4.1.1.5 RESET (RSET) ............................................. 34
    144    4.1.1.6 VERIFY (VRFY) ............................................ 35
    145    4.1.1.7 EXPAND (EXPN) ............................................ 35
    146    4.1.1.8 HELP (HELP) .............................................. 35
    147    4.1.1.9 NOOP (NOOP) .............................................. 35
    148    4.1.1.10 QUIT (QUIT) ............................................. 36
    149    4.1.2 Command Argument Syntax .................................... 36
    150    4.1.3 Address Literals ........................................... 38
    151    4.1.4 Order of Commands .......................................... 39
    152    4.1.5 Private-use Commands ....................................... 40
    153    4.2  SMTP Replies ................................................ 40
    154    4.2.1 Reply Code Severities and Theory ........................... 42
    155    4.2.2 Reply Codes by Function Groups ............................. 44
    156    4.2.3  Reply Codes in Numeric Order .............................. 45
    157    4.2.4 Reply Code 502 ............................................. 46
    158    4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF> .... 46
    159    4.3 Sequencing of Commands and Replies ........................... 47
    160    4.3.1 Sequencing Overview ........................................ 47
    161    4.3.2 Command-Reply Sequences .................................... 48
    162    4.4 Trace Information ............................................ 49
    163    4.5 Additional Implementation Issues ............................. 53
    164    4.5.1 Minimum Implementation ..................................... 53
    165    4.5.2 Transparency ............................................... 53
    166    4.5.3 Sizes and Timeouts ......................................... 54
    167 
    168 
    169 
    170 Klensin                     Standards Track                     [Page 3]
    171 
    172 RFC 2821             Simple Mail Transfer Protocol            April 2001
    173 
    174 
    175    4.5.3.1 Size limits and minimums ................................. 54
    176    4.5.3.2 Timeouts ................................................. 56
    177    4.5.4 Retry Strategies ........................................... 57
    178    4.5.4.1 Sending Strategy ......................................... 58
    179    4.5.4.2 Receiving Strategy ....................................... 59
    180    4.5.5 Messages with a null reverse-path .......................... 59
    181    5. Address Resolution and Mail Handling .......................... 60
    182    6. Problem Detection and Handling ................................ 62
    183    6.1 Reliable Delivery and Replies by Email ....................... 62
    184    6.2 Loop Detection ............................................... 63
    185    6.3 Compensating for Irregularities .............................. 63
    186    7. Security Considerations ....................................... 64
    187    7.1 Mail Security and Spoofing ................................... 64
    188    7.2 "Blind" Copies ............................................... 65
    189    7.3 VRFY, EXPN, and Security ..................................... 65
    190    7.4 Information Disclosure in Announcements ...................... 66
    191    7.5 Information Disclosure in Trace Fields ....................... 66
    192    7.6 Information Disclosure in Message Forwarding ................. 67
    193    7.7 Scope of Operation of SMTP Servers ........................... 67
    194    8. IANA Considerations ........................................... 67
    195    9. References .................................................... 68
    196    10. Editor's Address ............................................. 70
    197    11. Acknowledgments .............................................. 70
    198    Appendices ....................................................... 71
    199    A. TCP Transport Service ......................................... 71
    200    B. Generating SMTP Commands from RFC 822 Headers ................. 71
    201    C. Source Routes ................................................. 72
    202    D. Scenarios ..................................................... 73
    203    E. Other Gateway Issues .......................................... 76
    204    F. Deprecated Features of RFC 821 ................................ 76
    205    Full Copyright Statement ......................................... 79
    206 
    207 1. Introduction
    208 
    209    The objective of the Simple Mail Transfer Protocol (SMTP) is to
    210    transfer mail reliably and efficiently.
    211 
    212    SMTP is independent of the particular transmission subsystem and
    213    requires only a reliable ordered data stream channel.  While this
    214    document specifically discusses transport over TCP, other transports
    215    are possible.  Appendices to RFC 821 describe some of them.
    216 
    217    An important feature of SMTP is its capability to transport mail
    218    across networks, usually referred to as "SMTP mail relaying" (see
    219    section 3.8).  A network consists of the mutually-TCP-accessible
    220    hosts on the public Internet, the mutually-TCP-accessible hosts on a
    221    firewall-isolated TCP/IP Intranet, or hosts in some other LAN or WAN
    222    environment utilizing a non-TCP transport-level protocol.  Using
    223 
    224 
    225 
    226 Klensin                     Standards Track                     [Page 4]
    227 
    228 RFC 2821             Simple Mail Transfer Protocol            April 2001
    229 
    230 
    231    SMTP, a process can transfer mail to another process on the same
    232    network or to some other network via a relay or gateway process
    233    accessible to both networks.
    234 
    235    In this way, a mail message may pass through a number of intermediate
    236    relay or gateway hosts on its path from sender to ultimate recipient.
    237    The Mail eXchanger mechanisms of the domain name system [22, 27] (and
    238    section 5 of this document) are used to identify the appropriate
    239    next-hop destination for a message being transported.
    240 
    241 2. The SMTP Model
    242 
    243 2.1 Basic Structure
    244 
    245    The SMTP design can be pictured as:
    246 
    247                +----------+                +----------+
    248    +------+    |          |                |          |
    249    | User |<-->|          |      SMTP      |          |
    250    +------+    |  Client- |Commands/Replies| Server-  |
    251    +------+    |   SMTP   |<-------------->|    SMTP  |    +------+
    252    | File |<-->|          |    and Mail    |          |<-->| File |
    253    |System|    |          |                |          |    |System|
    254    +------+    +----------+                +----------+    +------+
    255                 SMTP client                SMTP server
    256 
    257    When an SMTP client has a message to transmit, it establishes a two-
    258    way transmission channel to an SMTP server.  The responsibility of an
    259    SMTP client is to transfer mail messages to one or more SMTP servers,
    260    or report its failure to do so.
    261 
    262    The means by which a mail message is presented to an SMTP client, and
    263    how that client determines the domain name(s) to which mail messages
    264    are to be transferred is a local matter, and is not addressed by this
    265    document.  In some cases, the domain name(s) transferred to, or
    266    determined by, an SMTP client will identify the final destination(s)
    267    of the mail message.  In other cases, common with SMTP clients
    268    associated with implementations of the POP [3, 26] or IMAP [6]
    269    protocols, or when the SMTP client is inside an isolated transport
    270    service environment, the domain name determined will identify an
    271    intermediate destination through which all mail messages are to be
    272    relayed.  SMTP clients that transfer all traffic, regardless of the
    273    target domain names associated with the individual messages, or that
    274    do not maintain queues for retrying message transmissions that
    275    initially cannot be completed, may otherwise conform to this
    276    specification but are not considered fully-capable.  Fully-capable
    277    SMTP implementations, including the relays used by these less capable
    278 
    279 
    280 
    281 
    282 Klensin                     Standards Track                     [Page 5]
    283 
    284 RFC 2821             Simple Mail Transfer Protocol            April 2001
    285 
    286 
    287    ones, and their destinations, are expected to support all of the
    288    queuing, retrying, and alternate address functions discussed in this
    289    specification.
    290 
    291    The means by which an SMTP client, once it has determined a target
    292    domain name, determines the identity of an SMTP server to which a
    293    copy of a message is to be transferred, and then performs that
    294    transfer, is covered by this document.  To effect a mail transfer to
    295    an SMTP server, an SMTP client establishes a two-way transmission
    296    channel to that SMTP server.  An SMTP client determines the address
    297    of an appropriate host running an SMTP server by resolving a
    298    destination domain name to either an intermediate Mail eXchanger host
    299    or a final target host.
    300 
    301    An SMTP server may be either the ultimate destination or an
    302    intermediate "relay" (that is, it may assume the role of an SMTP
    303    client after receiving the message) or "gateway" (that is, it may
    304    transport the message further using some protocol other than SMTP).
    305    SMTP commands are generated by the SMTP client and sent to the SMTP
    306    server.  SMTP replies are sent from the SMTP server to the SMTP
    307    client in response to the commands.
    308 
    309    In other words, message transfer can occur in a single connection
    310    between the original SMTP-sender and the final SMTP-recipient, or can
    311    occur in a series of hops through intermediary systems.  In either
    312    case, a formal handoff of responsibility for the message occurs: the
    313    protocol requires that a server accept responsibility for either
    314    delivering a message or properly reporting the failure to do so.
    315 
    316    Once the transmission channel is established and initial handshaking
    317    completed, the SMTP client normally initiates a mail transaction.
    318    Such a transaction consists of a series of commands to specify the
    319    originator and destination of the mail and transmission of the
    320    message content (including any headers or other structure) itself.
    321    When the same message is sent to multiple recipients, this protocol
    322    encourages the transmission of only one copy of the data for all
    323    recipients at the same destination (or intermediate relay) host.
    324 
    325    The server responds to each command with a reply; replies may
    326    indicate that the command was accepted, that additional commands are
    327    expected, or that a temporary or permanent error condition exists.
    328    Commands specifying the sender or recipients may include server-
    329    permitted SMTP service extension requests as discussed in section
    330    2.2.  The dialog is purposely lock-step, one-at-a-time, although this
    331    can be modified by mutually-agreed extension requests such as command
    332    pipelining [13].
    333 
    334 
    335 
    336 
    337 
    338 Klensin                     Standards Track                     [Page 6]
    339 
    340 RFC 2821             Simple Mail Transfer Protocol            April 2001
    341 
    342 
    343    Once a given mail message has been transmitted, the client may either
    344    request that the connection be shut down or may initiate other mail
    345    transactions.  In addition, an SMTP client may use a connection to an
    346    SMTP server for ancillary services such as verification of email
    347    addresses or retrieval of mailing list subscriber addresses.
    348 
    349    As suggested above, this protocol provides mechanisms for the
    350    transmission of mail.  This transmission normally occurs directly
    351    from the sending user's host to the receiving user's host when the
    352    two hosts are connected to the same transport service.  When they are
    353    not connected to the same transport service, transmission occurs via
    354    one or more relay SMTP servers.  An intermediate host that acts as
    355    either an SMTP relay or as a gateway into some other transmission
    356    environment is usually selected through the use of the domain name
    357    service (DNS) Mail eXchanger mechanism.
    358 
    359    Usually, intermediate hosts are determined via the DNS MX record, not
    360    by explicit "source" routing (see section 5 and appendices C and
    361    F.2).
    362 
    363 2.2 The Extension Model
    364 
    365 2.2.1 Background
    366 
    367    In an effort that started in 1990, approximately a decade after RFC
    368    821 was completed, the protocol was modified with a "service
    369    extensions" model that permits the client and server to agree to
    370    utilize shared functionality beyond the original SMTP requirements.
    371    The SMTP extension mechanism defines a means whereby an extended SMTP
    372    client and server may recognize each other, and the server can inform
    373    the client as to the service extensions that it supports.
    374 
    375    Contemporary SMTP implementations MUST support the basic extension
    376    mechanisms.  For instance, servers MUST support the EHLO command even
    377    if they do not implement any specific extensions and clients SHOULD
    378    preferentially utilize EHLO rather than HELO.  (However, for
    379    compatibility with older conforming implementations, SMTP clients and
    380    servers MUST support the original HELO mechanisms as a fallback.)
    381    Unless the different characteristics of HELO must be identified for
    382    interoperability purposes, this document discusses only EHLO.
    383 
    384    SMTP is widely deployed and high-quality implementations have proven
    385    to be very robust.  However, the Internet community now considers
    386    some services to be important that were not anticipated when the
    387    protocol was first designed.  If support for those services is to be
    388    added, it must be done in a way that permits older implementations to
    389    continue working acceptably.  The extension framework consists of:
    390 
    391 
    392 
    393 
    394 Klensin                     Standards Track                     [Page 7]
    395 
    396 RFC 2821             Simple Mail Transfer Protocol            April 2001
    397 
    398 
    399    -  The SMTP command EHLO, superseding the earlier HELO,
    400 
    401    -  a registry of SMTP service extensions,
    402 
    403    -  additional parameters to the SMTP MAIL and RCPT commands, and
    404 
    405    -  optional replacements for commands defined in this protocol, such
    406       as for DATA in non-ASCII transmissions [33].
    407 
    408    SMTP's strength comes primarily from its simplicity.  Experience with
    409    many protocols has shown that protocols with few options tend towards
    410    ubiquity, whereas protocols with many options tend towards obscurity.
    411 
    412    Each and every extension, regardless of its benefits, must be
    413    carefully scrutinized with respect to its implementation, deployment,
    414    and interoperability costs.  In many cases, the cost of extending the
    415    SMTP service will likely outweigh the benefit.
    416 
    417 2.2.2 Definition and Registration of Extensions
    418 
    419    The IANA maintains a registry of SMTP service extensions.  A
    420    corresponding EHLO keyword value is associated with each extension.
    421    Each service extension registered with the IANA must be defined in a
    422    formal standards-track or IESG-approved experimental protocol
    423    document.  The definition must include:
    424 
    425    -  the textual name of the SMTP service extension;
    426 
    427    -  the EHLO keyword value associated with the extension;
    428 
    429    -  the syntax and possible values of parameters associated with the
    430       EHLO keyword value;
    431 
    432    -  any additional SMTP verbs associated with the extension
    433       (additional verbs will usually be, but are not required to be, the
    434       same as the EHLO keyword value);
    435 
    436    -  any new parameters the extension associates with the MAIL or RCPT
    437       verbs;
    438 
    439    -  a description of how support for the extension affects the
    440       behavior of a server and client SMTP; and,
    441 
    442    -  the increment by which the extension is increasing the maximum
    443       length of the commands MAIL and/or RCPT, over that specified in
    444       this standard.
    445 
    446 
    447 
    448 
    449 
    450 Klensin                     Standards Track                     [Page 8]
    451 
    452 RFC 2821             Simple Mail Transfer Protocol            April 2001
    453 
    454 
    455    In addition, any EHLO keyword value starting with an upper or lower
    456    case "X" refers to a local SMTP service extension used exclusively
    457    through bilateral agreement.  Keywords beginning with "X" MUST NOT be
    458    used in a registered service extension.  Conversely, keyword values
    459    presented in the EHLO response that do not begin with "X" MUST
    460    correspond to a standard, standards-track, or IESG-approved
    461    experimental SMTP service extension registered with IANA.  A
    462    conforming server MUST NOT offer non-"X"-prefixed keyword values that
    463    are not described in a registered extension.
    464 
    465    Additional verbs and parameter names are bound by the same rules as
    466    EHLO keywords; specifically, verbs beginning with "X" are local
    467    extensions that may not be registered or standardized.  Conversely,
    468    verbs not beginning with "X" must always be registered.
    469 
    470 2.3 Terminology
    471 
    472    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
    473    "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
    474    document are to be interpreted as described below.
    475 
    476    1. MUST   This word, or the terms "REQUIRED" or "SHALL", mean that
    477       the definition is an absolute requirement of the specification.
    478 
    479    2. MUST NOT   This phrase, or the phrase "SHALL NOT", mean that the
    480       definition is an absolute prohibition of the specification.
    481 
    482    3. SHOULD   This word, or the adjective "RECOMMENDED", mean that
    483       there may exist valid reasons in particular circumstances to
    484       ignore a particular item, but the full implications must be
    485       understood and carefully weighed before choosing a different
    486       course.
    487 
    488    4. SHOULD NOT   This phrase, or the phrase "NOT RECOMMENDED" mean
    489       that there may exist valid reasons in particular circumstances
    490       when the particular behavior is acceptable or even useful, but the
    491       full implications should be understood and the case carefully
    492       weighed before implementing any behavior described with this
    493       label.
    494 
    495    5. MAY   This word, or the adjective "OPTIONAL", mean that an item is
    496       truly optional.  One vendor may choose to include the item because
    497       a particular marketplace requires it or because the vendor feels
    498       that it enhances the product while another vendor may omit the
    499       same item.  An implementation which does not include a particular
    500       option MUST be prepared to interoperate with another
    501       implementation which does include the option, though perhaps with
    502       reduced functionality.  In the same vein an implementation which
    503 
    504 
    505 
    506 Klensin                     Standards Track                     [Page 9]
    507 
    508 RFC 2821             Simple Mail Transfer Protocol            April 2001
    509 
    510 
    511       does include a particular option MUST be prepared to interoperate
    512       with another implementation which does not include the option
    513       (except, of course, for the feature the option provides.)
    514 
    515 2.3.1 Mail Objects
    516 
    517    SMTP transports a mail object.  A mail object contains an envelope
    518    and content.
    519 
    520    The SMTP envelope is sent as a series of SMTP protocol units
    521    (described in section 3).  It consists of an originator address (to
    522    which error reports should be directed); one or more recipient
    523    addresses; and optional protocol extension material.  Historically,
    524    variations on the recipient address specification command (RCPT TO)
    525    could be used to specify alternate delivery modes, such as immediate
    526    display; those variations have now been deprecated (see appendix F,
    527    section F.6).
    528 
    529    The SMTP content is sent in the SMTP DATA protocol unit and has two
    530    parts:  the headers and the body.  If the content conforms to other
    531    contemporary standards, the headers form a collection of field/value
    532    pairs structured as in the message format specification [32]; the
    533    body, if structured, is defined according to MIME [12].  The content
    534    is textual in nature, expressed using the US-ASCII repertoire [1].
    535    Although SMTP extensions (such as "8BITMIME" [20]) may relax this
    536    restriction for the content body, the content headers are always
    537    encoded using the US-ASCII repertoire.  A MIME extension [23] defines
    538    an algorithm for representing header values outside the US-ASCII
    539    repertoire, while still encoding them using the US-ASCII repertoire.
    540 
    541 2.3.2 Senders and Receivers
    542 
    543    In RFC 821, the two hosts participating in an SMTP transaction were
    544    described as the "SMTP-sender" and "SMTP-receiver".  This document
    545    has been changed to reflect current industry terminology and hence
    546    refers to them as the "SMTP client" (or sometimes just "the client")
    547    and "SMTP server" (or just "the server"), respectively.  Since a
    548    given host may act both as server and client in a relay situation,
    549    "receiver" and "sender" terminology is still used where needed for
    550    clarity.
    551 
    552 2.3.3 Mail Agents and Message Stores
    553 
    554    Additional mail system terminology became common after RFC 821 was
    555    published and, where convenient, is used in this specification.  In
    556    particular, SMTP servers and clients provide a mail transport service
    557    and therefore act as "Mail Transfer Agents" (MTAs).  "Mail User
    558    Agents" (MUAs or UAs) are normally thought of as the sources and
    559 
    560 
    561 
    562 Klensin                     Standards Track                    [Page 10]
    563 
    564 RFC 2821             Simple Mail Transfer Protocol            April 2001
    565 
    566 
    567    targets of mail.  At the source, an MUA might collect mail to be
    568    transmitted from a user and hand it off to an MTA; the final
    569    ("delivery") MTA would be thought of as handing the mail off to an
    570    MUA (or at least transferring responsibility to it, e.g., by
    571    depositing the message in a "message store").  However, while these
    572    terms are used with at least the appearance of great precision in
    573    other environments, the implied boundaries between MUAs and MTAs
    574    often do not accurately match common, and conforming, practices with
    575    Internet mail.  Hence, the reader should be cautious about inferring
    576    the strong relationships and responsibilities that might be implied
    577    if these terms were used elsewhere.
    578 
    579 2.3.4 Host
    580 
    581    For the purposes of this specification, a host is a computer system
    582    attached to the Internet (or, in some cases, to a private TCP/IP
    583    network) and supporting the SMTP protocol.  Hosts are known by names
    584    (see "domain"); identifying them by numerical address is discouraged.
    585 
    586 2.3.5 Domain
    587 
    588    A domain (or domain name) consists of one or more dot-separated
    589    components.  These components ("labels" in DNS terminology [22]) are
    590    restricted for SMTP purposes to consist of a sequence of letters,
    591    digits, and hyphens drawn from the ASCII character set [1].  Domain
    592    names are used as names of hosts and of other entities in the domain
    593    name hierarchy.  For example, a domain may refer to an alias (label
    594    of a CNAME RR) or the label of Mail eXchanger records to be used to
    595    deliver mail instead of representing a host name.  See [22] and
    596    section 5 of this specification.
    597 
    598    The domain name, as described in this document and in [22], is the
    599    entire, fully-qualified name (often referred to as an "FQDN").  A
    600    domain name that is not in FQDN form is no more than a local alias.
    601    Local aliases MUST NOT appear in any SMTP transaction.
    602 
    603 2.3.6 Buffer and State Table
    604 
    605    SMTP sessions are stateful, with both parties carefully maintaining a
    606    common view of the current state.  In this document we model this
    607    state by a virtual "buffer" and a "state table" on the server which
    608    may be used by the client to, for example, "clear the buffer" or
    609    "reset the state table," causing the information in the buffer to be
    610    discarded and the state to be returned to some previous state.
    611 
    612 
    613 
    614 
    615 
    616 
    617 
    618 Klensin                     Standards Track                    [Page 11]
    619 
    620 RFC 2821             Simple Mail Transfer Protocol            April 2001
    621 
    622 
    623 2.3.7 Lines
    624 
    625    SMTP commands and, unless altered by a service extension, message
    626    data, are transmitted in "lines".  Lines consist of zero or more data
    627    characters terminated by the sequence ASCII character "CR" (hex value
    628    0D) followed immediately by ASCII character "LF" (hex value 0A).
    629    This termination sequence is denoted as <CRLF> in this document.
    630    Conforming implementations MUST NOT recognize or generate any other
    631    character or character sequence as a line terminator.  Limits MAY be
    632    imposed on line lengths by servers (see section 4.5.3).
    633 
    634    In addition, the appearance of "bare" "CR" or "LF" characters in text
    635    (i.e., either without the other) has a long history of causing
    636    problems in mail implementations and applications that use the mail
    637    system as a tool.  SMTP client implementations MUST NOT transmit
    638    these characters except when they are intended as line terminators
    639    and then MUST, as indicated above, transmit them only as a <CRLF>
    640    sequence.
    641 
    642 2.3.8 Originator, Delivery, Relay, and Gateway Systems
    643 
    644    This specification makes a distinction among four types of SMTP
    645    systems, based on the role those systems play in transmitting
    646    electronic mail.  An "originating" system (sometimes called an SMTP
    647    originator) introduces mail into the Internet or, more generally,
    648    into a transport service environment.  A "delivery" SMTP system is
    649    one that receives mail from a transport service environment and
    650    passes it to a mail user agent or deposits it in a message store
    651    which a mail user agent is expected to subsequently access.  A
    652    "relay" SMTP system (usually referred to just as a "relay") receives
    653    mail from an SMTP client and transmits it, without modification to
    654    the message data other than adding trace information, to another SMTP
    655    server for further relaying or for delivery.
    656 
    657    A "gateway" SMTP system (usually referred to just as a "gateway")
    658    receives mail from a client system in one transport environment and
    659    transmits it to a server system in another transport environment.
    660    Differences in protocols or message semantics between the transport
    661    environments on either side of a gateway may require that the gateway
    662    system perform transformations to the message that are not permitted
    663    to SMTP relay systems.  For the purposes of this specification,
    664    firewalls that rewrite addresses should be considered as gateways,
    665    even if SMTP is used on both sides of them (see [11]).
    666 
    667 
    668 
    669 
    670 
    671 
    672 
    673 
    674 Klensin                     Standards Track                    [Page 12]
    675 
    676 RFC 2821             Simple Mail Transfer Protocol            April 2001
    677 
    678 
    679 2.3.9 Message Content and Mail Data
    680 
    681    The terms "message content" and "mail data" are used interchangeably
    682    in this document to describe the material transmitted after the DATA
    683    command is accepted and before the end of data indication is
    684    transmitted.  Message content includes message headers and the
    685    possibly-structured message body.  The MIME specification [12]
    686    provides the standard mechanisms for structured message bodies.
    687 
    688 2.3.10 Mailbox and Address
    689 
    690    As used in this specification, an "address" is a character string
    691    that identifies a user to whom mail will be sent or a location into
    692    which mail will be deposited.  The term "mailbox" refers to that
    693    depository.  The two terms are typically used interchangeably unless
    694    the distinction between the location in which mail is placed (the
    695    mailbox) and a reference to it (the address) is important.  An
    696    address normally consists of user and domain specifications.  The
    697    standard mailbox naming convention is defined to be "local-
    698    part@domain": contemporary usage permits a much broader set of
    699    applications than simple "user names".  Consequently, and due to a
    700    long history of problems when intermediate hosts have attempted to
    701    optimize transport by modifying them, the local-part MUST be
    702    interpreted and assigned semantics only by the host specified in the
    703    domain part of the address.
    704 
    705 2.3.11 Reply
    706 
    707    An SMTP reply is an acknowledgment (positive or negative) sent from
    708    receiver to sender via the transmission channel in response to a
    709    command.  The general form of a reply is a numeric completion code
    710    (indicating failure or success) usually followed by a text string.
    711    The codes are for use by programs and the text is usually intended
    712    for human users.  Recent work [34] has specified further structuring
    713    of the reply strings, including the use of supplemental and more
    714    specific completion codes.
    715 
    716 2.4 General Syntax Principles and Transaction Model
    717 
    718    SMTP commands and replies have a rigid syntax.  All commands begin
    719    with a command verb.  All Replies begin with a three digit numeric
    720    code.  In some commands and replies, arguments MUST follow the verb
    721    or reply code.  Some commands do not accept arguments (after the
    722    verb), and some reply codes are followed, sometimes optionally, by
    723    free form text.  In both cases, where text appears, it is separated
    724    from the verb or reply code by a space character.  Complete
    725    definitions of commands and replies appear in section 4.
    726 
    727 
    728 
    729 
    730 Klensin                     Standards Track                    [Page 13]
    731 
    732 RFC 2821             Simple Mail Transfer Protocol            April 2001
    733 
    734 
    735    Verbs and argument values (e.g., "TO:" or "to:" in the RCPT command
    736    and extension name keywords) are not case sensitive, with the sole
    737    exception in this specification of a mailbox local-part (SMTP
    738    Extensions may explicitly specify case-sensitive elements).  That is,
    739    a command verb, an argument value other than a mailbox local-part,
    740    and free form text MAY be encoded in upper case, lower case, or any
    741    mixture of upper and lower case with no impact on its meaning.  This
    742    is NOT true of a mailbox local-part.  The local-part of a mailbox
    743    MUST BE treated as case sensitive.  Therefore, SMTP implementations
    744    MUST take care to preserve the case of mailbox local-parts.  Mailbox
    745    domains are not case sensitive.  In particular, for some hosts the
    746    user "smith" is different from the user "Smith".  However, exploiting
    747    the case sensitivity of mailbox local-parts impedes interoperability
    748    and is discouraged.
    749 
    750    A few SMTP servers, in violation of this specification (and RFC 821)
    751    require that command verbs be encoded by clients in upper case.
    752    Implementations MAY wish to employ this encoding to accommodate those
    753    servers.
    754 
    755    The argument field consists of a variable length character string
    756    ending with the end of the line, i.e., with the character sequence
    757    <CRLF>.  The receiver will take no action until this sequence is
    758    received.
    759 
    760    The syntax for each command is shown with the discussion of that
    761    command.  Common elements and parameters are shown in section 4.1.2.
    762 
    763    Commands and replies are composed of characters from the ASCII
    764    character set [1].  When the transport service provides an 8-bit byte
    765    (octet) transmission channel, each 7-bit character is transmitted
    766    right justified in an octet with the high order bit cleared to zero.
    767    More specifically, the unextended SMTP service provides seven bit
    768    transport only.  An originating SMTP client which has not
    769    successfully negotiated an appropriate extension with a particular
    770    server MUST NOT transmit messages with information in the high-order
    771    bit of octets.  If such messages are transmitted in violation of this
    772    rule, receiving SMTP servers MAY clear the high-order bit or reject
    773    the message as invalid.  In general, a relay SMTP SHOULD assume that
    774    the message content it has received is valid and, assuming that the
    775    envelope permits doing so, relay it without inspecting that content.
    776    Of course, if the content is mislabeled and the data path cannot
    777    accept the actual content, this may result in ultimate delivery of a
    778    severely garbled message to the recipient.  Delivery SMTP systems MAY
    779    reject ("bounce") such messages rather than deliver them.  No sending
    780    SMTP system is permitted to send envelope commands in any character
    781 
    782 
    783 
    784 
    785 
    786 Klensin                     Standards Track                    [Page 14]
    787 
    788 RFC 2821             Simple Mail Transfer Protocol            April 2001
    789 
    790 
    791    set other than US-ASCII; receiving systems SHOULD reject such
    792    commands, normally using "500 syntax error - invalid character"
    793    replies.
    794 
    795    Eight-bit message content transmission MAY be requested of the server
    796    by a client using extended SMTP facilities, notably the "8BITMIME"
    797    extension [20].  8BITMIME SHOULD be supported by SMTP servers.
    798    However, it MUST not be construed as authorization to transmit
    799    unrestricted eight bit material.  8BITMIME MUST NOT be requested by
    800    senders for material with the high bit on that is not in MIME format
    801    with an appropriate content-transfer encoding; servers MAY reject
    802    such messages.
    803 
    804    The metalinguistic notation used in this document corresponds to the
    805    "Augmented BNF" used in other Internet mail system documents.  The
    806    reader who is not familiar with that syntax should consult the ABNF
    807    specification [8].  Metalanguage terms used in running text are
    808    surrounded by pointed brackets (e.g., <CRLF>) for clarity.
    809 
    810 3. The SMTP Procedures: An Overview
    811 
    812    This section contains descriptions of the procedures used in SMTP:
    813    session initiation, the mail transaction, forwarding mail, verifying
    814    mailbox names and expanding mailing lists, and the opening and
    815    closing exchanges.  Comments on relaying, a note on mail domains, and
    816    a discussion of changing roles are included at the end of this
    817    section.  Several complete scenarios are presented in appendix D.
    818 
    819 3.1 Session Initiation
    820 
    821    An SMTP session is initiated when a client opens a connection to a
    822    server and the server responds with an opening message.
    823 
    824    SMTP server implementations MAY include identification of their
    825    software and version information in the connection greeting reply
    826    after the 220 code, a practice that permits more efficient isolation
    827    and repair of any problems.  Implementations MAY make provision for
    828    SMTP servers to disable the software and version announcement where
    829    it causes security concerns.  While some systems also identify their
    830    contact point for mail problems, this is not a substitute for
    831    maintaining the required "postmaster" address (see section 4.5.1).
    832 
    833    The SMTP protocol allows a server to formally reject a transaction
    834    while still allowing the initial connection as follows: a 554
    835    response MAY be given in the initial connection opening message
    836    instead of the 220.  A server taking this approach MUST still wait
    837    for the client to send a QUIT (see section 4.1.1.10) before closing
    838    the connection and SHOULD respond to any intervening commands with
    839 
    840 
    841 
    842 Klensin                     Standards Track                    [Page 15]
    843 
    844 RFC 2821             Simple Mail Transfer Protocol            April 2001
    845 
    846 
    847    "503 bad sequence of commands".  Since an attempt to make an SMTP
    848    connection to such a system is probably in error, a server returning
    849    a 554 response on connection opening SHOULD provide enough
    850    information in the reply text to facilitate debugging of the sending
    851    system.
    852 
    853 3.2 Client Initiation
    854 
    855    Once the server has sent the welcoming message and the client has
    856    received it, the client normally sends the EHLO command to the
    857    server, indicating the client's identity.  In addition to opening the
    858    session, use of EHLO indicates that the client is able to process
    859    service extensions and requests that the server provide a list of the
    860    extensions it supports.  Older SMTP systems which are unable to
    861    support service extensions and contemporary clients which do not
    862    require service extensions in the mail session being initiated, MAY
    863    use HELO instead of EHLO.  Servers MUST NOT return the extended
    864    EHLO-style response to a HELO command.  For a particular connection
    865    attempt, if the server returns a "command not recognized" response to
    866    EHLO, the client SHOULD be able to fall back and send HELO.
    867 
    868    In the EHLO command the host sending the command identifies itself;
    869    the command may be interpreted as saying "Hello, I am <domain>" (and,
    870    in the case of EHLO, "and I support service extension requests").
    871 
    872 3.3 Mail Transactions
    873 
    874    There are three steps to SMTP mail transactions.  The transaction
    875    starts with a MAIL command which gives the sender identification.
    876    (In general, the MAIL command may be sent only when no mail
    877    transaction is in progress; see section 4.1.4.)  A series of one or
    878    more RCPT commands follows giving the receiver information.  Then a
    879    DATA command initiates transfer of the mail data and is terminated by
    880    the "end of mail" data indicator, which also confirms the
    881    transaction.
    882 
    883    The first step in the procedure is the MAIL command.
    884 
    885       MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>
    886 
    887    This command tells the SMTP-receiver that a new mail transaction is
    888    starting and to reset all its state tables and buffers, including any
    889    recipients or mail data.  The <reverse-path> portion of the first or
    890    only argument contains the source mailbox (between "<" and ">"
    891    brackets), which can be used to report errors (see section 4.2 for a
    892    discussion of error reporting).  If accepted, the SMTP server returns
    893    a 250 OK reply.  If the mailbox specification is not acceptable for
    894    some reason, the server MUST return a reply indicating whether the
    895 
    896 
    897 
    898 Klensin                     Standards Track                    [Page 16]
    899 
    900 RFC 2821             Simple Mail Transfer Protocol            April 2001
    901 
    902 
    903    failure is permanent (i.e., will occur again if the client tries to
    904    send the same address again) or temporary (i.e., the address might be
    905    accepted if the client tries again later).  Despite the apparent
    906    scope of this requirement, there are circumstances in which the
    907    acceptability of the reverse-path may not be determined until one or
    908    more forward-paths (in RCPT commands) can be examined.  In those
    909    cases, the server MAY reasonably accept the reverse-path (with a 250
    910    reply) and then report problems after the forward-paths are received
    911    and examined.  Normally, failures produce 550 or 553 replies.
    912 
    913    Historically, the <reverse-path> can contain more than just a
    914    mailbox, however, contemporary systems SHOULD NOT use source routing
    915    (see appendix C).
    916 
    917    The optional <mail-parameters> are associated with negotiated SMTP
    918    service extensions (see section 2.2).
    919 
    920    The second step in the procedure is the RCPT command.
    921 
    922       RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF>
    923 
    924    The first or only argument to this command includes a forward-path
    925    (normally a mailbox and domain, always surrounded by "<" and ">"
    926    brackets) identifying one recipient.  If accepted, the SMTP server
    927    returns a 250 OK reply and stores the forward-path.  If the recipient
    928    is known not to be a deliverable address, the SMTP server returns a
    929    550 reply, typically with a string such as "no such user - " and the
    930    mailbox name (other circumstances and reply codes are possible).
    931    This step of the procedure can be repeated any number of times.
    932 
    933    The <forward-path> can contain more than just a mailbox.
    934    Historically, the <forward-path> can be a source routing list of
    935    hosts and the destination mailbox, however, contemporary SMTP clients
    936    SHOULD NOT utilize source routes (see appendix C).  Servers MUST be
    937    prepared to encounter a list of source routes in the forward path,
    938    but SHOULD ignore the routes or MAY decline to support the relaying
    939    they imply.  Similarly, servers MAY decline to accept mail that is
    940    destined for other hosts or systems.  These restrictions make a
    941    server useless as a relay for clients that do not support full SMTP
    942    functionality.  Consequently, restricted-capability clients MUST NOT
    943    assume that any SMTP server on the Internet can be used as their mail
    944    processing (relaying) site.  If a RCPT command appears without a
    945    previous MAIL command, the server MUST return a 503 "Bad sequence of
    946    commands" response.  The optional <rcpt-parameters> are associated
    947    with negotiated SMTP service extensions (see section 2.2).
    948 
    949    The third step in the procedure is the DATA command (or some
    950    alternative specified in a service extension).
    951 
    952 
    953 
    954 Klensin                     Standards Track                    [Page 17]
    955 
    956 RFC 2821             Simple Mail Transfer Protocol            April 2001
    957 
    958 
    959       DATA <CRLF>
    960 
    961    If accepted, the SMTP server returns a 354 Intermediate reply and
    962    considers all succeeding lines up to but not including the end of
    963    mail data indicator to be the message text.  When the end of text is
    964    successfully received and stored the SMTP-receiver sends a 250 OK
    965    reply.
    966 
    967    Since the mail data is sent on the transmission channel, the end of
    968    mail data must be indicated so that the command and reply dialog can
    969    be resumed.  SMTP indicates the end of the mail data by sending a
    970    line containing only a "." (period or full stop).  A transparency
    971    procedure is used to prevent this from interfering with the user's
    972    text (see section 4.5.2).
    973 
    974    The end of mail data indicator also confirms the mail transaction and
    975    tells the SMTP server to now process the stored recipients and mail
    976    data.  If accepted, the SMTP server returns a 250 OK reply.  The DATA
    977    command can fail at only two points in the protocol exchange:
    978 
    979    -  If there was no MAIL, or no RCPT, command, or all such commands
    980       were rejected, the server MAY return a "command out of sequence"
    981       (503) or "no valid recipients" (554) reply in response to the DATA
    982       command.  If one of those replies (or any other 5yz reply) is
    983       received, the client MUST NOT send the message data; more
    984       generally, message data MUST NOT be sent unless a 354 reply is
    985       received.
    986 
    987    -  If the verb is initially accepted and the 354 reply issued, the
    988       DATA command should fail only if the mail transaction was
    989       incomplete (for example, no recipients), or if resources were
    990       unavailable (including, of course, the server unexpectedly
    991       becoming unavailable), or if the server determines that the
    992       message should be rejected for policy or other reasons.
    993 
    994    However, in practice, some servers do not perform recipient
    995    verification until after the message text is received.  These servers
    996    SHOULD treat a failure for one or more recipients as a "subsequent
    997    failure" and return a mail message as discussed in section 6.  Using
    998    a "550 mailbox not found" (or equivalent) reply code after the data
    999    are accepted makes it difficult or impossible for the client to
   1000    determine which recipients failed.
   1001 
   1002    When RFC 822 format [7, 32] is being used, the mail data include the
   1003    memo header items such as Date, Subject, To, Cc, From.  Server SMTP
   1004    systems SHOULD NOT reject messages based on perceived defects in the
   1005    RFC 822 or MIME [12] message header or message body.  In particular,
   1006 
   1007 
   1008 
   1009 
   1010 Klensin                     Standards Track                    [Page 18]
   1011 
   1012 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1013 
   1014 
   1015    they MUST NOT reject messages in which the numbers of Resent-fields
   1016    do not match or Resent-to appears without Resent-from and/or Resent-
   1017    date.
   1018 
   1019    Mail transaction commands MUST be used in the order discussed above.
   1020 
   1021 3.4 Forwarding for Address Correction or Updating
   1022 
   1023    Forwarding support is most often required to consolidate and simplify
   1024    addresses within, or relative to, some enterprise and less frequently
   1025    to establish addresses to link a person's prior address with current
   1026    one.  Silent forwarding of messages (without server notification to
   1027    the sender), for security or non-disclosure purposes, is common in
   1028    the contemporary Internet.
   1029 
   1030    In both the enterprise and the "new address" cases, information
   1031    hiding (and sometimes security) considerations argue against exposure
   1032    of the "final" address through the SMTP protocol as a side-effect of
   1033    the forwarding activity.  This may be especially important when the
   1034    final address may not even be reachable by the sender.  Consequently,
   1035    the "forwarding" mechanisms described in section 3.2 of RFC 821, and
   1036    especially the 251 (corrected destination) and 551 reply codes from
   1037    RCPT must be evaluated carefully by implementers and, when they are
   1038    available, by those configuring systems.
   1039 
   1040    In particular:
   1041 
   1042    *  Servers MAY forward messages when they are aware of an address
   1043       change.  When they do so, they MAY either provide address-updating
   1044       information with a 251 code, or may forward "silently" and return
   1045       a 250 code.  But, if a 251 code is used, they MUST NOT assume that
   1046       the client will actually update address information or even return
   1047       that information to the user.
   1048 
   1049    Alternately,
   1050 
   1051    *  Servers MAY reject or bounce messages when they are not
   1052       deliverable when addressed.  When they do so, they MAY either
   1053       provide address-updating information with a 551 code, or may
   1054       reject the message as undeliverable with a 550 code and no
   1055       address-specific information.  But, if a 551 code is used, they
   1056       MUST NOT assume that the client will actually update address
   1057       information or even return that information to the user.
   1058 
   1059    SMTP server implementations that support the 251 and/or 551 reply
   1060    codes are strongly encouraged to provide configuration mechanisms so
   1061    that sites which conclude that they would undesirably disclose
   1062    information can disable or restrict their use.
   1063 
   1064 
   1065 
   1066 Klensin                     Standards Track                    [Page 19]
   1067 
   1068 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1069 
   1070 
   1071 3.5 Commands for Debugging Addresses
   1072 
   1073 3.5.1 Overview
   1074 
   1075    SMTP provides commands to verify a user name or obtain the content of
   1076    a mailing list.  This is done with the VRFY and EXPN commands, which
   1077    have character string arguments.  Implementations SHOULD support VRFY
   1078    and EXPN (however, see section 3.5.2 and 7.3).
   1079 
   1080    For the VRFY command, the string is a user name or a user name and
   1081    domain (see below).  If a normal (i.e., 250) response is returned,
   1082    the response MAY include the full name of the user and MUST include
   1083    the mailbox of the user.  It MUST be in either of the following
   1084    forms:
   1085 
   1086       User Name <local-part@domain>
   1087       local-part@domain
   1088 
   1089    When a name that is the argument to VRFY could identify more than one
   1090    mailbox, the server MAY either note the ambiguity or identify the
   1091    alternatives.  In other words, any of the following are legitimate
   1092    response to VRFY:
   1093 
   1094       553 User ambiguous
   1095 
   1096    or
   1097 
   1098       553- Ambiguous;  Possibilities are
   1099       553-Joe Smith <jsmith@foo.com>
   1100       553-Harry Smith <hsmith@foo.com>
   1101       553 Melvin Smith <dweep@foo.com>
   1102 
   1103    or
   1104 
   1105       553-Ambiguous;  Possibilities
   1106       553- <jsmith@foo.com>
   1107       553- <hsmith@foo.com>
   1108       553 <dweep@foo.com>
   1109 
   1110    Under normal circumstances, a client receiving a 553 reply would be
   1111    expected to expose the result to the user.  Use of exactly the forms
   1112    given, and the "user ambiguous" or "ambiguous" keywords, possibly
   1113    supplemented by extended reply codes such as those described in [34],
   1114    will facilitate automated translation into other languages as needed.
   1115    Of course, a client that was highly automated or that was operating
   1116    in another language than English, might choose to try to translate
   1117    the response, to return some other indication to the user than the
   1118 
   1119 
   1120 
   1121 
   1122 Klensin                     Standards Track                    [Page 20]
   1123 
   1124 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1125 
   1126 
   1127    literal text of the reply, or to take some automated action such as
   1128    consulting a directory service for additional information before
   1129    reporting to the user.
   1130 
   1131    For the EXPN command, the string identifies a mailing list, and the
   1132    successful (i.e., 250) multiline response MAY include the full name
   1133    of the users and MUST give the mailboxes on the mailing list.
   1134 
   1135    In some hosts the distinction between a mailing list and an alias for
   1136    a single mailbox is a bit fuzzy, since a common data structure may
   1137    hold both types of entries, and it is possible to have mailing lists
   1138    containing only one mailbox.  If a request is made to apply VRFY to a
   1139    mailing list, a positive response MAY be given if a message so
   1140    addressed would be delivered to everyone on the list, otherwise an
   1141    error SHOULD be reported (e.g., "550 That is a mailing list, not a
   1142    user" or "252 Unable to verify members of mailing list").  If a
   1143    request is made to expand a user name, the server MAY return a
   1144    positive response consisting of a list containing one name, or an
   1145    error MAY be reported (e.g., "550 That is a user name, not a mailing
   1146    list").
   1147 
   1148    In the case of a successful multiline reply (normal for EXPN) exactly
   1149    one mailbox is to be specified on each line of the reply.  The case
   1150    of an ambiguous request is discussed above.
   1151 
   1152    "User name" is a fuzzy term and has been used deliberately.  An
   1153    implementation of the VRFY or EXPN commands MUST include at least
   1154    recognition of local mailboxes as "user names".  However, since
   1155    current Internet practice often results in a single host handling
   1156    mail for multiple domains, hosts, especially hosts that provide this
   1157    functionality, SHOULD accept the "local-part@domain" form as a "user
   1158    name"; hosts MAY also choose to recognize other strings as "user
   1159    names".
   1160 
   1161    The case of expanding a mailbox list requires a multiline reply, such
   1162    as:
   1163 
   1164       C: EXPN Example-People
   1165       S: 250-Jon Postel <Postel@isi.edu>
   1166       S: 250-Fred Fonebone <Fonebone@physics.foo-u.edu>
   1167       S: 250 Sam Q. Smith <SQSmith@specific.generic.com>
   1168 
   1169    or
   1170 
   1171       C: EXPN Executive-Washroom-List
   1172       S: 550 Access Denied to You.
   1173 
   1174 
   1175 
   1176 
   1177 
   1178 Klensin                     Standards Track                    [Page 21]
   1179 
   1180 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1181 
   1182 
   1183    The character string arguments of the VRFY and EXPN commands cannot
   1184    be further restricted due to the variety of implementations of the
   1185    user name and mailbox list concepts.  On some systems it may be
   1186    appropriate for the argument of the EXPN command to be a file name
   1187    for a file containing a mailing list, but again there are a variety
   1188    of file naming conventions in the Internet.  Similarly, historical
   1189    variations in what is returned by these commands are such that the
   1190    response SHOULD be interpreted very carefully, if at all, and SHOULD
   1191    generally only be used for diagnostic purposes.
   1192 
   1193 3.5.2 VRFY Normal Response
   1194 
   1195    When normal (2yz or 551) responses are returned from a VRFY or EXPN
   1196    request, the reply normally includes the mailbox name, i.e.,
   1197    "<local-part@domain>", where "domain" is a fully qualified domain
   1198    name, MUST appear in the syntax.  In circumstances exceptional enough
   1199    to justify violating the intent of this specification, free-form text
   1200    MAY be returned.  In order to facilitate parsing by both computers
   1201    and people, addresses SHOULD appear in pointed brackets.  When
   1202    addresses, rather than free-form debugging information, are returned,
   1203    EXPN and VRFY MUST return only valid domain addresses that are usable
   1204    in SMTP RCPT commands.  Consequently, if an address implies delivery
   1205    to a program or other system, the mailbox name used to reach that
   1206    target MUST be given.  Paths (explicit source routes) MUST NOT be
   1207    returned by VRFY or EXPN.
   1208 
   1209    Server implementations SHOULD support both VRFY and EXPN.  For
   1210    security reasons, implementations MAY provide local installations a
   1211    way to disable either or both of these commands through configuration
   1212    options or the equivalent.  When these commands are supported, they
   1213    are not required to work across relays when relaying is supported.
   1214    Since they were both optional in RFC 821, they MUST be listed as
   1215    service extensions in an EHLO response, if they are supported.
   1216 
   1217 3.5.3 Meaning of VRFY or EXPN Success Response
   1218 
   1219    A server MUST NOT return a 250 code in response to a VRFY or EXPN
   1220    command unless it has actually verified the address.  In particular,
   1221    a server MUST NOT return 250 if all it has done is to verify that the
   1222    syntax given is valid.  In that case, 502 (Command not implemented)
   1223    or 500 (Syntax error, command unrecognized) SHOULD be returned.  As
   1224    stated elsewhere, implementation (in the sense of actually validating
   1225    addresses and returning information) of VRFY and EXPN are strongly
   1226    recommended.  Hence, implementations that return 500 or 502 for VRFY
   1227    are not in full compliance with this specification.
   1228 
   1229 
   1230 
   1231 
   1232 
   1233 
   1234 Klensin                     Standards Track                    [Page 22]
   1235 
   1236 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1237 
   1238 
   1239    There may be circumstances where an address appears to be valid but
   1240    cannot reasonably be verified in real time, particularly when a
   1241    server is acting as a mail exchanger for another server or domain.
   1242    "Apparent validity" in this case would normally involve at least
   1243    syntax checking and might involve verification that any domains
   1244    specified were ones to which the host expected to be able to relay
   1245    mail.  In these situations, reply code 252 SHOULD be returned.  These
   1246    cases parallel the discussion of RCPT verification discussed in
   1247    section 2.1.  Similarly, the discussion in section 3.4 applies to the
   1248    use of reply codes 251 and 551 with VRFY (and EXPN) to indicate
   1249    addresses that are recognized but that would be forwarded or bounced
   1250    were mail received for them.  Implementations generally SHOULD be
   1251    more aggressive about address verification in the case of VRFY than
   1252    in the case of RCPT, even if it takes a little longer to do so.
   1253 
   1254 3.5.4 Semantics and Applications of EXPN
   1255 
   1256    EXPN is often very useful in debugging and understanding problems
   1257    with mailing lists and multiple-target-address aliases.  Some systems
   1258    have attempted to use source expansion of mailing lists as a means of
   1259    eliminating duplicates.  The propagation of aliasing systems with
   1260    mail on the Internet, for hosts (typically with MX and CNAME DNS
   1261    records), for mailboxes (various types of local host aliases), and in
   1262    various proxying arrangements, has made it nearly impossible for
   1263    these strategies to work consistently, and mail systems SHOULD NOT
   1264    attempt them.
   1265 
   1266 3.6 Domains
   1267 
   1268    Only resolvable, fully-qualified, domain names (FQDNs) are permitted
   1269    when domain names are used in SMTP.  In other words, names that can
   1270    be resolved to MX RRs or A RRs (as discussed in section 5) are
   1271    permitted, as are CNAME RRs whose targets can be resolved, in turn,
   1272    to MX or A RRs.  Local nicknames or unqualified names MUST NOT be
   1273    used.  There are two exceptions to the rule requiring FQDNs:
   1274 
   1275    -  The domain name given in the EHLO command MUST BE either a primary
   1276       host name (a domain name that resolves to an A RR) or, if the host
   1277       has no name, an address literal as described in section 4.1.1.1.
   1278 
   1279    -  The reserved mailbox name "postmaster" may be used in a RCPT
   1280       command without domain qualification (see section 4.1.1.3) and
   1281       MUST be accepted if so used.
   1282 
   1283 
   1284 
   1285 
   1286 
   1287 
   1288 
   1289 
   1290 Klensin                     Standards Track                    [Page 23]
   1291 
   1292 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1293 
   1294 
   1295 3.7 Relaying
   1296 
   1297    In general, the availability of Mail eXchanger records in the domain
   1298    name system [22, 27] makes the use of explicit source routes in the
   1299    Internet mail system unnecessary.  Many historical problems with
   1300    their interpretation have made their use undesirable.  SMTP clients
   1301    SHOULD NOT generate explicit source routes except under unusual
   1302    circumstances.  SMTP servers MAY decline to act as mail relays or to
   1303    accept addresses that specify source routes.  When route information
   1304    is encountered, SMTP servers are also permitted to ignore the route
   1305    information and simply send to the final destination specified as the
   1306    last element in the route and SHOULD do so.  There has been an
   1307    invalid practice of using names that do not appear in the DNS as
   1308    destination names, with the senders counting on the intermediate
   1309    hosts specified in source routing to resolve any problems.  If source
   1310    routes are stripped, this practice will cause failures.  This is one
   1311    of several reasons why SMTP clients MUST NOT generate invalid source
   1312    routes or depend on serial resolution of names.
   1313 
   1314    When source routes are not used, the process described in RFC 821 for
   1315    constructing a reverse-path from the forward-path is not applicable
   1316    and the reverse-path at the time of delivery will simply be the
   1317    address that appeared in the MAIL command.
   1318 
   1319    A relay SMTP server is usually the target of a DNS MX record that
   1320    designates it, rather than the final delivery system.  The relay
   1321    server may accept or reject the task of relaying the mail in the same
   1322    way it accepts or rejects mail for a local user.  If it accepts the
   1323    task, it then becomes an SMTP client, establishes a transmission
   1324    channel to the next SMTP server specified in the DNS (according to
   1325    the rules in section 5), and sends it the mail.  If it declines to
   1326    relay mail to a particular address for policy reasons, a 550 response
   1327    SHOULD be returned.
   1328 
   1329    Many mail-sending clients exist, especially in conjunction with
   1330    facilities that receive mail via POP3 or IMAP, that have limited
   1331    capability to support some of the requirements of this specification,
   1332    such as the ability to queue messages for subsequent delivery
   1333    attempts.  For these clients, it is common practice to make private
   1334    arrangements to send all messages to a single server for processing
   1335    and subsequent distribution.  SMTP, as specified here, is not ideally
   1336    suited for this role, and work is underway on standardized mail
   1337    submission protocols that might eventually supercede the current
   1338    practices.  In any event, because these arrangements are private and
   1339    fall outside the scope of this specification, they are not described
   1340    here.
   1341 
   1342 
   1343 
   1344 
   1345 
   1346 Klensin                     Standards Track                    [Page 24]
   1347 
   1348 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1349 
   1350 
   1351    It is important to note that MX records can point to SMTP servers
   1352    which act as gateways into other environments, not just SMTP relays
   1353    and final delivery systems; see sections 3.8 and 5.
   1354 
   1355    If an SMTP server has accepted the task of relaying the mail and
   1356    later finds that the destination is incorrect or that the mail cannot
   1357    be delivered for some other reason, then it MUST construct an
   1358    "undeliverable mail" notification message and send it to the
   1359    originator of the undeliverable mail (as indicated by the reverse-
   1360    path).  Formats specified for non-delivery reports by other standards
   1361    (see, for example, [24, 25]) SHOULD be used if possible.
   1362 
   1363    This notification message must be from the SMTP server at the relay
   1364    host or the host that first determines that delivery cannot be
   1365    accomplished.  Of course, SMTP servers MUST NOT send notification
   1366    messages about problems transporting notification messages.  One way
   1367    to prevent loops in error reporting is to specify a null reverse-path
   1368    in the MAIL command of a notification message.  When such a message
   1369    is transmitted the reverse-path MUST be set to null (see section
   1370    4.5.5 for additional discussion).  A MAIL command with a null
   1371    reverse-path appears as follows:
   1372 
   1373       MAIL FROM:<>
   1374 
   1375    As discussed in section 2.4.1, a relay SMTP has no need to inspect or
   1376    act upon the headers or body of the message data and MUST NOT do so
   1377    except to add its own "Received:" header (section 4.4) and,
   1378    optionally, to attempt to detect looping in the mail system (see
   1379    section 6.2).
   1380 
   1381 3.8 Mail Gatewaying
   1382 
   1383    While the relay function discussed above operates within the Internet
   1384    SMTP transport service environment, MX records or various forms of
   1385    explicit routing may require that an intermediate SMTP server perform
   1386    a translation function between one transport service and another.  As
   1387    discussed in section 2.3.8, when such a system is at the boundary
   1388    between two transport service environments, we refer to it as a
   1389    "gateway" or "gateway SMTP".
   1390 
   1391    Gatewaying mail between different mail environments, such as
   1392    different mail formats and protocols, is complex and does not easily
   1393    yield to standardization.  However, some general requirements may be
   1394    given for a gateway between the Internet and another mail
   1395    environment.
   1396 
   1397 
   1398 
   1399 
   1400 
   1401 
   1402 Klensin                     Standards Track                    [Page 25]
   1403 
   1404 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1405 
   1406 
   1407 3.8.1 Header Fields in Gatewaying
   1408 
   1409    Header fields MAY be rewritten when necessary as messages are
   1410    gatewayed across mail environment boundaries.  This may involve
   1411    inspecting the message body or interpreting the local-part of the
   1412    destination address in spite of the prohibitions in section 2.4.1.
   1413 
   1414    Other mail systems gatewayed to the Internet often use a subset of
   1415    RFC 822 headers or provide similar functionality with a different
   1416    syntax, but some of these mail systems do not have an equivalent to
   1417    the SMTP envelope.  Therefore, when a message leaves the Internet
   1418    environment, it may be necessary to fold the SMTP envelope
   1419    information into the message header.  A possible solution would be to
   1420    create new header fields to carry the envelope information (e.g.,
   1421    "X-SMTP-MAIL:"  and "X-SMTP-RCPT:"); however, this would require
   1422    changes in mail programs in foreign environments and might risk
   1423    disclosure of private information (see section 7.2).
   1424 
   1425 3.8.2 Received Lines in Gatewaying
   1426 
   1427    When forwarding a message into or out of the Internet environment, a
   1428    gateway MUST prepend a Received: line, but it MUST NOT alter in any
   1429    way a Received: line that is already in the header.
   1430 
   1431    "Received:" fields of messages originating from other environments
   1432    may not conform exactly to this specification.  However, the most
   1433    important use of Received: lines is for debugging mail faults, and
   1434    this debugging can be severely hampered by well-meaning gateways that
   1435    try to "fix" a Received: line.  As another consequence of trace
   1436    fields arising in non-SMTP environments, receiving systems MUST NOT
   1437    reject mail based on the format of a trace field and SHOULD be
   1438    extremely robust in the light of unexpected information or formats in
   1439    those fields.
   1440 
   1441    The gateway SHOULD indicate the environment and protocol in the "via"
   1442    clauses of Received field(s) that it supplies.
   1443 
   1444 3.8.3 Addresses in Gatewaying
   1445 
   1446    From the Internet side, the gateway SHOULD accept all valid address
   1447    formats in SMTP commands and in RFC 822 headers, and all valid RFC
   1448    822 messages.  Addresses and headers generated by gateways MUST
   1449    conform to applicable Internet standards (including this one and RFC
   1450    822).  Gateways are, of course, subject to the same rules for
   1451    handling source routes as those described for other SMTP systems in
   1452    section 3.3.
   1453 
   1454 
   1455 
   1456 
   1457 
   1458 Klensin                     Standards Track                    [Page 26]
   1459 
   1460 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1461 
   1462 
   1463 3.8.4 Other Header Fields in Gatewaying
   1464 
   1465    The gateway MUST ensure that all header fields of a message that it
   1466    forwards into the Internet mail environment meet the requirements for
   1467    Internet mail.  In particular, all addresses in "From:", "To:",
   1468    "Cc:", etc., fields MUST be transformed (if necessary) to satisfy RFC
   1469    822 syntax, MUST reference only fully-qualified domain names, and
   1470    MUST be effective and useful for sending replies.  The translation
   1471    algorithm used to convert mail from the Internet protocols to another
   1472    environment's protocol SHOULD ensure that error messages from the
   1473    foreign mail environment are delivered to the return path from the
   1474    SMTP envelope, not to the sender listed in the "From:" field (or
   1475    other fields) of the RFC 822 message.
   1476 
   1477 3.8.5 Envelopes in Gatewaying
   1478 
   1479    Similarly, when forwarding a message from another environment into
   1480    the Internet, the gateway SHOULD set the envelope return path in
   1481    accordance with an error message return address, if supplied by the
   1482    foreign environment.  If the foreign environment has no equivalent
   1483    concept, the gateway must select and use a best approximation, with
   1484    the message originator's address as the default of last resort.
   1485 
   1486 3.9 Terminating Sessions and Connections
   1487 
   1488    An SMTP connection is terminated when the client sends a QUIT
   1489    command.  The server responds with a positive reply code, after which
   1490    it closes the connection.
   1491 
   1492    An SMTP server MUST NOT intentionally close the connection except:
   1493 
   1494    -  After receiving a QUIT command and responding with a 221 reply.
   1495 
   1496    -  After detecting the need to shut down the SMTP service and
   1497       returning a 421 response code.  This response code can be issued
   1498       after the server receives any command or, if necessary,
   1499       asynchronously from command receipt (on the assumption that the
   1500       client will receive it after the next command is issued).
   1501 
   1502    In particular, a server that closes connections in response to
   1503    commands that are not understood is in violation of this
   1504    specification.  Servers are expected to be tolerant of unknown
   1505    commands, issuing a 500 reply and awaiting further instructions from
   1506    the client.
   1507 
   1508 
   1509 
   1510 
   1511 
   1512 
   1513 
   1514 Klensin                     Standards Track                    [Page 27]
   1515 
   1516 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1517 
   1518 
   1519    An SMTP server which is forcibly shut down via external means SHOULD
   1520    attempt to send a line containing a 421 response code to the SMTP
   1521    client before exiting.  The SMTP client will normally read the 421
   1522    response code after sending its next command.
   1523 
   1524    SMTP clients that experience a connection close, reset, or other
   1525    communications failure due to circumstances not under their control
   1526    (in violation of the intent of this specification but sometimes
   1527    unavoidable) SHOULD, to maintain the robustness of the mail system,
   1528    treat the mail transaction as if a 451 response had been received and
   1529    act accordingly.
   1530 
   1531 3.10 Mailing Lists and Aliases
   1532 
   1533    An SMTP-capable host SHOULD support both the alias and the list
   1534    models of address expansion for multiple delivery.  When a message is
   1535    delivered or forwarded to each address of an expanded list form, the
   1536    return address in the envelope ("MAIL FROM:") MUST be changed to be
   1537    the address of a person or other entity who administers the list.
   1538    However, in this case, the message header [32] MUST be left
   1539    unchanged; in particular, the "From" field of the message header is
   1540    unaffected.
   1541 
   1542    An important mail facility is a mechanism for multi-destination
   1543    delivery of a single message, by transforming (or "expanding" or
   1544    "exploding") a pseudo-mailbox address into a list of destination
   1545    mailbox addresses.  When a message is sent to such a pseudo-mailbox
   1546    (sometimes called an "exploder"), copies are forwarded or
   1547    redistributed to each mailbox in the expanded list.  Servers SHOULD
   1548    simply utilize the addresses on the list; application of heuristics
   1549    or other matching rules to eliminate some addresses, such as that of
   1550    the originator, is strongly discouraged.  We classify such a pseudo-
   1551    mailbox as an "alias" or a "list", depending upon the expansion
   1552    rules.
   1553 
   1554 3.10.1 Alias
   1555 
   1556    To expand an alias, the recipient mailer simply replaces the pseudo-
   1557    mailbox address in the envelope with each of the expanded addresses
   1558    in turn; the rest of the envelope and the message body are left
   1559    unchanged.  The message is then delivered or forwarded to each
   1560    expanded address.
   1561 
   1562 3.10.2 List
   1563 
   1564    A mailing list may be said to operate by "redistribution" rather than
   1565    by "forwarding".  To expand a list, the recipient mailer replaces the
   1566    pseudo-mailbox address in the envelope with all of the expanded
   1567 
   1568 
   1569 
   1570 Klensin                     Standards Track                    [Page 28]
   1571 
   1572 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1573 
   1574 
   1575    addresses.  The return address in the envelope is changed so that all
   1576    error messages generated by the final deliveries will be returned to
   1577    a list administrator, not to the message originator, who generally
   1578    has no control over the contents of the list and will typically find
   1579    error messages annoying.
   1580 
   1581 4. The SMTP Specifications
   1582 
   1583 4.1 SMTP Commands
   1584 
   1585 4.1.1 Command Semantics and Syntax
   1586 
   1587    The SMTP commands define the mail transfer or the mail system
   1588    function requested by the user.  SMTP commands are character strings
   1589    terminated by <CRLF>.  The commands themselves are alphabetic
   1590    characters terminated by <SP> if parameters follow and <CRLF>
   1591    otherwise.  (In the interest of improved interoperability, SMTP
   1592    receivers are encouraged to tolerate trailing white space before the
   1593    terminating <CRLF>.)  The syntax of the local part of a mailbox must
   1594    conform to receiver site conventions and the syntax specified in
   1595    section 4.1.2.  The SMTP commands are discussed below.  The SMTP
   1596    replies are discussed in section 4.2.
   1597 
   1598    A mail transaction involves several data objects which are
   1599    communicated as arguments to different commands.  The reverse-path is
   1600    the argument of the MAIL command, the forward-path is the argument of
   1601    the RCPT command, and the mail data is the argument of the DATA
   1602    command.  These arguments or data objects must be transmitted and
   1603    held pending the confirmation communicated by the end of mail data
   1604    indication which finalizes the transaction.  The model for this is
   1605    that distinct buffers are provided to hold the types of data objects,
   1606    that is, there is a reverse-path buffer, a forward-path buffer, and a
   1607    mail data buffer.  Specific commands cause information to be appended
   1608    to a specific buffer, or cause one or more buffers to be cleared.
   1609 
   1610    Several commands (RSET, DATA, QUIT) are specified as not permitting
   1611    parameters.  In the absence of specific extensions offered by the
   1612    server and accepted by the client, clients MUST NOT send such
   1613    parameters and servers SHOULD reject commands containing them as
   1614    having invalid syntax.
   1615 
   1616 4.1.1.1  Extended HELLO (EHLO) or HELLO (HELO)
   1617 
   1618    These commands are used to identify the SMTP client to the SMTP
   1619    server.  The argument field contains the fully-qualified domain name
   1620    of the SMTP client if one is available.  In situations in which the
   1621    SMTP client system does not have a meaningful domain name (e.g., when
   1622    its address is dynamically allocated and no reverse mapping record is
   1623 
   1624 
   1625 
   1626 Klensin                     Standards Track                    [Page 29]
   1627 
   1628 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1629 
   1630 
   1631    available), the client SHOULD send an address literal (see section
   1632    4.1.3), optionally followed by information that will help to identify
   1633    the client system.  y The SMTP server identifies itself to the SMTP
   1634    client in the connection greeting reply and in the response to this
   1635    command.
   1636 
   1637    A client SMTP SHOULD start an SMTP session by issuing the EHLO
   1638    command.  If the SMTP server supports the SMTP service extensions it
   1639    will give a successful response, a failure response, or an error
   1640    response.  If the SMTP server, in violation of this specification,
   1641    does not support any SMTP service extensions it will generate an
   1642    error response.  Older client SMTP systems MAY, as discussed above,
   1643    use HELO (as specified in RFC 821) instead of EHLO, and servers MUST
   1644    support the HELO command and reply properly to it.  In any event, a
   1645    client MUST issue HELO or EHLO before starting a mail transaction.
   1646 
   1647    These commands, and a "250 OK" reply to one of them, confirm that
   1648    both the SMTP client and the SMTP server are in the initial state,
   1649    that is, there is no transaction in progress and all state tables and
   1650    buffers are cleared.
   1651 
   1652    Syntax:
   1653 
   1654       ehlo            = "EHLO" SP Domain CRLF
   1655       helo            = "HELO" SP Domain CRLF
   1656 
   1657    Normally, the response to EHLO will be a multiline reply.  Each line
   1658    of the response contains a keyword and, optionally, one or more
   1659    parameters.  Following the normal syntax for multiline replies, these
   1660    keyworks follow the code (250) and a hyphen for all but the last
   1661    line, and the code and a space for the last line.  The syntax for a
   1662    positive response, using the ABNF notation and terminal symbols of
   1663    [8], is:
   1664 
   1665       ehlo-ok-rsp  =    ( "250"    domain [ SP ehlo-greet ] CRLF )
   1666                    / (    "250-"   domain [ SP ehlo-greet ] CRLF
   1667                        *( "250-"   ehlo-line                CRLF )
   1668                           "250"    SP ehlo-line             CRLF  )
   1669 
   1670       ehlo-greet   = 1*(%d0-9 / %d11-12 / %d14-127)
   1671                    ; string of any characters other than CR or LF
   1672 
   1673       ehlo-line    = ehlo-keyword *( SP ehlo-param )
   1674 
   1675       ehlo-keyword = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
   1676                    ; additional syntax of ehlo-params depends on
   1677                    ; ehlo-keyword
   1678 
   1679 
   1680 
   1681 
   1682 Klensin                     Standards Track                    [Page 30]
   1683 
   1684 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1685 
   1686 
   1687       ehlo-param   = 1*(%d33-127)
   1688                    ; any CHAR excluding <SP> and all
   1689                    ; control characters (US-ASCII 0-31 inclusive)
   1690 
   1691    Although EHLO keywords may be specified in upper, lower, or mixed
   1692    case, they MUST always be recognized and processed in a case-
   1693    insensitive manner.  This is simply an extension of practices
   1694    specified in RFC 821 and section 2.4.1.
   1695 
   1696 4.1.1.2 MAIL (MAIL)
   1697 
   1698    This command is used to initiate a mail transaction in which the mail
   1699    data is delivered to an SMTP server which may, in turn, deliver it to
   1700    one or more mailboxes or pass it on to another system (possibly using
   1701    SMTP).  The argument field contains a reverse-path and may contain
   1702    optional parameters.  In general, the MAIL command may be sent only
   1703    when no mail transaction is in progress, see section 4.1.4.
   1704 
   1705    The reverse-path consists of the sender mailbox.  Historically, that
   1706    mailbox might optionally have been preceded by a list of hosts, but
   1707    that behavior is now deprecated (see appendix C).  In some types of
   1708    reporting messages for which a reply is likely to cause a mail loop
   1709    (for example, mail delivery and nondelivery notifications), the
   1710    reverse-path may be null (see section 3.7).
   1711 
   1712    This command clears the reverse-path buffer, the forward-path buffer,
   1713    and the mail data buffer; and inserts the reverse-path information
   1714    from this command into the reverse-path buffer.
   1715 
   1716    If service extensions were negotiated, the MAIL command may also
   1717    carry parameters associated with a particular service extension.
   1718 
   1719    Syntax:
   1720 
   1721       "MAIL FROM:" ("<>" / Reverse-Path)
   1722                        [SP Mail-parameters] CRLF
   1723 
   1724 4.1.1.3 RECIPIENT (RCPT)
   1725 
   1726    This command is used to identify an individual recipient of the mail
   1727    data; multiple recipients are specified by multiple use of this
   1728    command.  The argument field contains a forward-path and may contain
   1729    optional parameters.
   1730 
   1731    The forward-path normally consists of the required destination
   1732    mailbox.  Sending systems SHOULD not generate the optional list of
   1733    hosts known as a source route.  Receiving systems MUST recognize
   1734 
   1735 
   1736 
   1737 
   1738 Klensin                     Standards Track                    [Page 31]
   1739 
   1740 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1741 
   1742 
   1743    source route syntax but SHOULD strip off the source route
   1744    specification and utilize the domain name associated with the mailbox
   1745    as if the source route had not been provided.
   1746 
   1747    Similarly, relay hosts SHOULD strip or ignore source routes, and
   1748    names MUST NOT be copied into the reverse-path.  When mail reaches
   1749    its ultimate destination (the forward-path contains only a
   1750    destination mailbox), the SMTP server inserts it into the destination
   1751    mailbox in accordance with its host mail conventions.
   1752 
   1753    For example, mail received at relay host xyz.com with envelope
   1754    commands
   1755 
   1756       MAIL FROM:<userx@y.foo.org>
   1757       RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
   1758 
   1759    will normally be sent directly on to host d.bar.org with envelope
   1760    commands
   1761 
   1762       MAIL FROM:<userx@y.foo.org>
   1763       RCPT TO:<userc@d.bar.org>
   1764 
   1765    As provided in appendix C, xyz.com MAY also choose to relay the
   1766    message to hosta.int, using the envelope commands
   1767 
   1768       MAIL FROM:<userx@y.foo.org>
   1769       RCPT TO:<@hosta.int,@jkl.org:userc@d.bar.org>
   1770 
   1771    or to jkl.org, using the envelope commands
   1772 
   1773       MAIL FROM:<userx@y.foo.org>
   1774       RCPT TO:<@jkl.org:userc@d.bar.org>
   1775 
   1776    Of course, since hosts are not required to relay mail at all, xyz.com
   1777    may also reject the message entirely when the RCPT command is
   1778    received, using a 550 code (since this is a "policy reason").
   1779 
   1780    If service extensions were negotiated, the RCPT command may also
   1781    carry parameters associated with a particular service extension
   1782    offered by the server.  The client MUST NOT transmit parameters other
   1783    than those associated with a service extension offered by the server
   1784    in its EHLO response.
   1785 
   1786 Syntax:
   1787    "RCPT TO:" ("<Postmaster@" domain ">" / "<Postmaster>" / Forward-Path)
   1788                     [SP Rcpt-parameters] CRLF
   1789 
   1790 
   1791 
   1792 
   1793 
   1794 Klensin                     Standards Track                    [Page 32]
   1795 
   1796 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1797 
   1798 
   1799 4.1.1.4 DATA (DATA)
   1800 
   1801    The receiver normally sends a 354 response to DATA, and then treats
   1802    the lines (strings ending in <CRLF> sequences, as described in
   1803    section 2.3.7) following the command as mail data from the sender.
   1804    This command causes the mail data to be appended to the mail data
   1805    buffer.  The mail data may contain any of the 128 ASCII character
   1806    codes, although experience has indicated that use of control
   1807    characters other than SP, HT, CR, and LF may cause problems and
   1808    SHOULD be avoided when possible.
   1809 
   1810    The mail data is terminated by a line containing only a period, that
   1811    is, the character sequence "<CRLF>.<CRLF>" (see section 4.5.2).  This
   1812    is the end of mail data indication.  Note that the first <CRLF> of
   1813    this terminating sequence is also the <CRLF> that ends the final line
   1814    of the data (message text) or, if there was no data, ends the DATA
   1815    command itself.  An extra <CRLF> MUST NOT be added, as that would
   1816    cause an empty line to be added to the message.  The only exception
   1817    to this rule would arise if the message body were passed to the
   1818    originating SMTP-sender with a final "line" that did not end in
   1819    <CRLF>; in that case, the originating SMTP system MUST either reject
   1820    the message as invalid or add <CRLF> in order to have the receiving
   1821    SMTP server recognize the "end of data" condition.
   1822 
   1823    The custom of accepting lines ending only in <LF>, as a concession to
   1824    non-conforming behavior on the part of some UNIX systems, has proven
   1825    to cause more interoperability problems than it solves, and SMTP
   1826    server systems MUST NOT do this, even in the name of improved
   1827    robustness.  In particular, the sequence "<LF>.<LF>" (bare line
   1828    feeds, without carriage returns) MUST NOT be treated as equivalent to
   1829    <CRLF>.<CRLF> as the end of mail data indication.
   1830 
   1831    Receipt of the end of mail data indication requires the server to
   1832    process the stored mail transaction information.  This processing
   1833    consumes the information in the reverse-path buffer, the forward-path
   1834    buffer, and the mail data buffer, and on the completion of this
   1835    command these buffers are cleared.  If the processing is successful,
   1836    the receiver MUST send an OK reply.  If the processing fails the
   1837    receiver MUST send a failure reply.  The SMTP model does not allow
   1838    for partial failures at this point: either the message is accepted by
   1839    the server for delivery and a positive response is returned or it is
   1840    not accepted and a failure reply is returned.  In sending a positive
   1841    completion reply to the end of data indication, the receiver takes
   1842    full responsibility for the message (see section 6.1).  Errors that
   1843    are diagnosed subsequently MUST be reported in a mail message, as
   1844    discussed in section 4.4.
   1845 
   1846 
   1847 
   1848 
   1849 
   1850 Klensin                     Standards Track                    [Page 33]
   1851 
   1852 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1853 
   1854 
   1855    When the SMTP server accepts a message either for relaying or for
   1856    final delivery, it inserts a trace record (also referred to
   1857    interchangeably as a "time stamp line" or "Received" line) at the top
   1858    of the mail data.  This trace record indicates the identity of the
   1859    host that sent the message, the identity of the host that received
   1860    the message (and is inserting this time stamp), and the date and time
   1861    the message was received.  Relayed messages will have multiple time
   1862    stamp lines.  Details for formation of these lines, including their
   1863    syntax, is specified in section 4.4.
   1864 
   1865    Additional discussion about the operation of the DATA command appears
   1866    in section 3.3.
   1867 
   1868    Syntax:
   1869       "DATA" CRLF
   1870 
   1871 4.1.1.5 RESET (RSET)
   1872 
   1873    This command specifies that the current mail transaction will be
   1874    aborted.  Any stored sender, recipients, and mail data MUST be
   1875    discarded, and all buffers and state tables cleared.  The receiver
   1876    MUST send a "250 OK" reply to a RSET command with no arguments.  A
   1877    reset command may be issued by the client at any time.  It is
   1878    effectively equivalent to a NOOP (i.e., if has no effect) if issued
   1879    immediately after EHLO, before EHLO is issued in the session, after
   1880    an end-of-data indicator has been sent and acknowledged, or
   1881    immediately before a QUIT.  An SMTP server MUST NOT close the
   1882    connection as the result of receiving a RSET; that action is reserved
   1883    for QUIT (see section 4.1.1.10).
   1884 
   1885    Since EHLO implies some additional processing and response by the
   1886    server, RSET will normally be more efficient than reissuing that
   1887    command, even though the formal semantics are the same.
   1888 
   1889    There are circumstances, contrary to the intent of this
   1890    specification, in which an SMTP server may receive an indication that
   1891    the underlying TCP connection has been closed or reset.  To preserve
   1892    the robustness of the mail system, SMTP servers SHOULD be prepared
   1893    for this condition and SHOULD treat it as if a QUIT had been received
   1894    before the connection disappeared.
   1895 
   1896    Syntax:
   1897       "RSET" CRLF
   1898 
   1899 
   1900 
   1901 
   1902 
   1903 
   1904 
   1905 
   1906 Klensin                     Standards Track                    [Page 34]
   1907 
   1908 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1909 
   1910 
   1911 4.1.1.6 VERIFY (VRFY)
   1912 
   1913    This command asks the receiver to confirm that the argument
   1914    identifies a user or mailbox.  If it is a user name, information is
   1915    returned as specified in section 3.5.
   1916 
   1917    This command has no effect on the reverse-path buffer, the forward-
   1918    path buffer, or the mail data buffer.
   1919 
   1920    Syntax:
   1921       "VRFY" SP String CRLF
   1922 
   1923 4.1.1.7 EXPAND (EXPN)
   1924 
   1925    This command asks the receiver to confirm that the argument
   1926    identifies a mailing list, and if so, to return the membership of
   1927    that list.  If the command is successful, a reply is returned
   1928    containing information as described in section 3.5.  This reply will
   1929    have multiple lines except in the trivial case of a one-member list.
   1930 
   1931    This command has no effect on the reverse-path buffer, the forward-
   1932    path buffer, or the mail data buffer and may be issued at any time.
   1933 
   1934    Syntax:
   1935       "EXPN" SP String CRLF
   1936 
   1937 4.1.1.8 HELP (HELP)
   1938 
   1939    This command causes the server to send helpful information to the
   1940    client.  The command MAY take an argument (e.g., any command name)
   1941    and return more specific information as a response.
   1942 
   1943    This command has no effect on the reverse-path buffer, the forward-
   1944    path buffer, or the mail data buffer and may be issued at any time.
   1945 
   1946    SMTP servers SHOULD support HELP without arguments and MAY support it
   1947    with arguments.
   1948 
   1949    Syntax:
   1950       "HELP" [ SP String ] CRLF
   1951 
   1952 4.1.1.9 NOOP (NOOP)
   1953 
   1954    This command does not affect any parameters or previously entered
   1955    commands.  It specifies no action other than that the receiver send
   1956    an OK reply.
   1957 
   1958 
   1959 
   1960 
   1961 
   1962 Klensin                     Standards Track                    [Page 35]
   1963 
   1964 RFC 2821             Simple Mail Transfer Protocol            April 2001
   1965 
   1966 
   1967    This command has no effect on the reverse-path buffer, the forward-
   1968    path buffer, or the mail data buffer and may be issued at any time.
   1969    If a parameter string is specified, servers SHOULD ignore it.
   1970 
   1971    Syntax:
   1972       "NOOP" [ SP String ] CRLF
   1973 
   1974 4.1.1.10 QUIT (QUIT)
   1975 
   1976    This command specifies that the receiver MUST send an OK reply, and
   1977    then close the transmission channel.
   1978 
   1979    The receiver MUST NOT intentionally close the transmission channel
   1980    until it receives and replies to a QUIT command (even if there was an
   1981    error).  The sender MUST NOT intentionally close the transmission
   1982    channel until it sends a QUIT command and SHOULD wait until it
   1983    receives the reply (even if there was an error response to a previous
   1984    command).  If the connection is closed prematurely due to violations
   1985    of the above or system or network failure, the server MUST cancel any
   1986    pending transaction, but not undo any previously completed
   1987    transaction, and generally MUST act as if the command or transaction
   1988    in progress had received a temporary error (i.e., a 4yz response).
   1989 
   1990    The QUIT command may be issued at any time.
   1991 
   1992    Syntax:
   1993       "QUIT" CRLF
   1994 
   1995 4.1.2 Command Argument Syntax
   1996 
   1997    The syntax of the argument fields of the above commands (using the
   1998    syntax specified in [8] where applicable) is given below.  Some of
   1999    the productions given below are used only in conjunction with source
   2000    routes as described in appendix C.  Terminals not defined in this
   2001    document, such as ALPHA, DIGIT, SP, CR, LF, CRLF, are as defined in
   2002    the "core" syntax [8 (section 6)] or in the message format syntax
   2003    [32].
   2004 
   2005       Reverse-path = Path
   2006       Forward-path = Path
   2007       Path = "<" [ A-d-l ":" ] Mailbox ">"
   2008       A-d-l = At-domain *( "," A-d-l )
   2009             ; Note that this form, the so-called "source route",
   2010             ; MUST BE accepted, SHOULD NOT be generated, and SHOULD be
   2011             ; ignored.
   2012       At-domain = "@" domain
   2013       Mail-parameters = esmtp-param *(SP esmtp-param)
   2014       Rcpt-parameters = esmtp-param *(SP esmtp-param)
   2015 
   2016 
   2017 
   2018 Klensin                     Standards Track                    [Page 36]
   2019 
   2020 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2021 
   2022 
   2023       esmtp-param     = esmtp-keyword ["=" esmtp-value]
   2024       esmtp-keyword   = (ALPHA / DIGIT) *(ALPHA / DIGIT / "-")
   2025       esmtp-value     = 1*(%d33-60 / %d62-127)
   2026             ; any CHAR excluding "=", SP, and control characters
   2027       Keyword  = Ldh-str
   2028       Argument = Atom
   2029       Domain = (sub-domain 1*("." sub-domain)) / address-literal
   2030       sub-domain = Let-dig [Ldh-str]
   2031 
   2032       address-literal = "[" IPv4-address-literal /
   2033                             IPv6-address-literal /
   2034                             General-address-literal "]"
   2035             ; See section 4.1.3
   2036 
   2037       Mailbox = Local-part "@" Domain
   2038 
   2039       Local-part = Dot-string / Quoted-string
   2040             ; MAY be case-sensitive
   2041 
   2042       Dot-string = Atom *("." Atom)
   2043 
   2044       Atom = 1*atext
   2045 
   2046       Quoted-string = DQUOTE *qcontent DQUOTE
   2047 
   2048       String = Atom / Quoted-string
   2049 
   2050    While the above definition for Local-part is relatively permissive,
   2051    for maximum interoperability, a host that expects to receive mail
   2052    SHOULD avoid defining mailboxes where the Local-part requires (or
   2053    uses) the Quoted-string form or where the Local-part is case-
   2054    sensitive.  For any purposes that require generating or comparing
   2055    Local-parts (e.g., to specific mailbox names), all quoted forms MUST
   2056    be treated as equivalent and the sending system SHOULD transmit the
   2057    form that uses the minimum quoting possible.
   2058 
   2059    Systems MUST NOT define mailboxes in such a way as to require the use
   2060    in SMTP of non-ASCII characters (octets with the high order bit set
   2061    to one) or ASCII "control characters" (decimal value 0-31 and 127).
   2062    These characters MUST NOT be used in MAIL or RCPT commands or other
   2063    commands that require mailbox names.
   2064 
   2065    Note that the backslash, "\", is a quote character, which is used to
   2066    indicate that the next character is to be used literally (instead of
   2067    its normal interpretation).  For example, "Joe\,Smith" indicates a
   2068    single nine character user field with the comma being the fourth
   2069    character of the field.
   2070 
   2071 
   2072 
   2073 
   2074 Klensin                     Standards Track                    [Page 37]
   2075 
   2076 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2077 
   2078 
   2079    To promote interoperability and consistent with long-standing
   2080    guidance about conservative use of the DNS in naming and applications
   2081    (e.g., see section 2.3.1 of the base DNS document, RFC1035 [22]),
   2082    characters outside the set of alphas, digits, and hyphen MUST NOT
   2083    appear in domain name labels for SMTP clients or servers.  In
   2084    particular, the underscore character is not permitted.  SMTP servers
   2085    that receive a command in which invalid character codes have been
   2086    employed, and for which there are no other reasons for rejection,
   2087    MUST reject that command with a 501 response.
   2088 
   2089 4.1.3 Address Literals
   2090 
   2091    Sometimes a host is not known to the domain name system and
   2092    communication (and, in particular, communication to report and repair
   2093    the error) is blocked.  To bypass this barrier a special literal form
   2094    of the address is allowed as an alternative to a domain name.  For
   2095    IPv4 addresses, this form uses four small decimal integers separated
   2096    by dots and enclosed by brackets such as [123.255.37.2], which
   2097    indicates an (IPv4) Internet Address in sequence-of-octets form.  For
   2098    IPv6 and other forms of addressing that might eventually be
   2099    standardized, the form consists of a standardized "tag" that
   2100    identifies the address syntax, a colon, and the address itself, in a
   2101    format specified as part of the IPv6 standards [17].
   2102 
   2103    Specifically:
   2104 
   2105       IPv4-address-literal = Snum 3("." Snum)
   2106       IPv6-address-literal = "IPv6:" IPv6-addr
   2107       General-address-literal = Standardized-tag ":" 1*dcontent
   2108       Standardized-tag = Ldh-str
   2109             ; MUST be specified in a standards-track RFC
   2110             ; and registered with IANA
   2111 
   2112       Snum = 1*3DIGIT  ; representing a decimal integer
   2113             ; value in the range 0 through 255
   2114       Let-dig = ALPHA / DIGIT
   2115       Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
   2116 
   2117       IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp
   2118       IPv6-hex  = 1*4HEXDIG
   2119       IPv6-full = IPv6-hex 7(":" IPv6-hex)
   2120       IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":"
   2121                  IPv6-hex)]
   2122             ; The "::" represents at least 2 16-bit groups of zeros
   2123             ; No more than 6 groups in addition to the "::" may be
   2124             ; present
   2125       IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal
   2126       IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::"
   2127 
   2128 
   2129 
   2130 Klensin                     Standards Track                    [Page 38]
   2131 
   2132 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2133 
   2134 
   2135                    [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal
   2136             ; The "::" represents at least 2 16-bit groups of zeros
   2137             ; No more than 4 groups in addition to the "::" and
   2138             ; IPv4-address-literal may be present
   2139 
   2140 4.1.4 Order of Commands
   2141 
   2142    There are restrictions on the order in which these commands may be
   2143    used.
   2144 
   2145    A session that will contain mail transactions MUST first be
   2146    initialized by the use of the EHLO command.  An SMTP server SHOULD
   2147    accept commands for non-mail transactions (e.g., VRFY or EXPN)
   2148    without this initialization.
   2149 
   2150    An EHLO command MAY be issued by a client later in the session.  If
   2151    it is issued after the session begins, the SMTP server MUST clear all
   2152    buffers and reset the state exactly as if a RSET command had been
   2153    issued.  In other words, the sequence of RSET followed immediately by
   2154    EHLO is redundant, but not harmful other than in the performance cost
   2155    of executing unnecessary commands.
   2156 
   2157    If the EHLO command is not acceptable to the SMTP server, 501, 500,
   2158    or 502 failure replies MUST be returned as appropriate.  The SMTP
   2159    server MUST stay in the same state after transmitting these replies
   2160    that it was in before the EHLO was received.
   2161 
   2162    The SMTP client MUST, if possible, ensure that the domain parameter
   2163    to the EHLO command is a valid principal host name (not a CNAME or MX
   2164    name) for its host.  If this is not possible (e.g., when the client's
   2165    address is dynamically assigned and the client does not have an
   2166    obvious name), an address literal SHOULD be substituted for the
   2167    domain name and supplemental information provided that will assist in
   2168    identifying the client.
   2169 
   2170    An SMTP server MAY verify that the domain name parameter in the EHLO
   2171    command actually corresponds to the IP address of the client.
   2172    However, the server MUST NOT refuse to accept a message for this
   2173    reason if the verification fails: the information about verification
   2174    failure is for logging and tracing only.
   2175 
   2176    The NOOP, HELP, EXPN, VRFY, and RSET commands can be used at any time
   2177    during a session, or without previously initializing a session.  SMTP
   2178    servers SHOULD process these normally (that is, not return a 503
   2179    code) even if no EHLO command has yet been received; clients SHOULD
   2180    open a session with EHLO before sending these commands.
   2181 
   2182 
   2183 
   2184 
   2185 
   2186 Klensin                     Standards Track                    [Page 39]
   2187 
   2188 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2189 
   2190 
   2191    If these rules are followed, the example in RFC 821 that shows "550
   2192    access denied to you" in response to an EXPN command is incorrect
   2193    unless an EHLO command precedes the EXPN or the denial of access is
   2194    based on the client's IP address or other authentication or
   2195    authorization-determining mechanisms.
   2196 
   2197    The MAIL command (or the obsolete SEND, SOML, or SAML commands)
   2198    begins a mail transaction.  Once started, a mail transaction consists
   2199    of a transaction beginning command, one or more RCPT commands, and a
   2200    DATA command, in that order.  A mail transaction may be aborted by
   2201    the RSET (or a new EHLO) command.  There may be zero or more
   2202    transactions in a session.  MAIL (or SEND, SOML, or SAML) MUST NOT be
   2203    sent if a mail transaction is already open, i.e., it should be sent
   2204    only if no mail transaction had been started in the session, or it
   2205    the previous one successfully concluded with a successful DATA
   2206    command, or if the previous one was aborted with a RSET.
   2207 
   2208    If the transaction beginning command argument is not acceptable, a
   2209    501 failure reply MUST be returned and the SMTP server MUST stay in
   2210    the same state.  If the commands in a transaction are out of order to
   2211    the degree that they cannot be processed by the server, a 503 failure
   2212    reply MUST be returned and the SMTP server MUST stay in the same
   2213    state.
   2214 
   2215    The last command in a session MUST be the QUIT command.  The QUIT
   2216    command cannot be used at any other time in a session, but SHOULD be
   2217    used by the client SMTP to request connection closure, even when no
   2218    session opening command was sent and accepted.
   2219 
   2220 4.1.5 Private-use Commands
   2221 
   2222    As specified in section 2.2.2, commands starting in "X" may be used
   2223    by bilateral agreement between the client (sending) and server
   2224    (receiving) SMTP agents.  An SMTP server that does not recognize such
   2225    a command is expected to reply with "500 Command not recognized".  An
   2226    extended SMTP server MAY list the feature names associated with these
   2227    private commands in the response to the EHLO command.
   2228 
   2229    Commands sent or accepted by SMTP systems that do not start with "X"
   2230    MUST conform to the requirements of section 2.2.2.
   2231 
   2232 4.2 SMTP Replies
   2233 
   2234    Replies to SMTP commands serve to ensure the synchronization of
   2235    requests and actions in the process of mail transfer and to guarantee
   2236    that the SMTP client always knows the state of the SMTP server.
   2237    Every command MUST generate exactly one reply.
   2238 
   2239 
   2240 
   2241 
   2242 Klensin                     Standards Track                    [Page 40]
   2243 
   2244 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2245 
   2246 
   2247    The details of the command-reply sequence are described in section
   2248    4.3.
   2249 
   2250    An SMTP reply consists of a three digit number (transmitted as three
   2251    numeric characters) followed by some text unless specified otherwise
   2252    in this document.  The number is for use by automata to determine
   2253    what state to enter next; the text is for the human user.  The three
   2254    digits contain enough encoded information that the SMTP client need
   2255    not examine the text and may either discard it or pass it on to the
   2256    user, as appropriate.  Exceptions are as noted elsewhere in this
   2257    document.  In particular, the 220, 221, 251, 421, and 551 reply codes
   2258    are associated with message text that must be parsed and interpreted
   2259    by machines.  In the general case, the text may be receiver dependent
   2260    and context dependent, so there are likely to be varying texts for
   2261    each reply code.  A discussion of the theory of reply codes is given
   2262    in section 4.2.1.  Formally, a reply is defined to be the sequence: a
   2263    three-digit code, <SP>, one line of text, and <CRLF>, or a multiline
   2264    reply (as defined in section 4.2.1).  Since, in violation of this
   2265    specification, the text is sometimes not sent, clients which do not
   2266    receive it SHOULD be prepared to process the code alone (with or
   2267    without a trailing space character).  Only the EHLO, EXPN, and HELP
   2268    commands are expected to result in multiline replies in normal
   2269    circumstances, however, multiline replies are allowed for any
   2270    command.
   2271 
   2272    In ABNF, server responses are:
   2273 
   2274       Greeting = "220 " Domain [ SP text ] CRLF
   2275       Reply-line = Reply-code [ SP text ] CRLF
   2276 
   2277    where "Greeting" appears only in the 220 response that announces that
   2278    the server is opening its part of the connection.
   2279 
   2280    An SMTP server SHOULD send only the reply codes listed in this
   2281    document.  An SMTP server SHOULD use the text shown in the examples
   2282    whenever appropriate.
   2283 
   2284    An SMTP client MUST determine its actions only by the reply code, not
   2285    by the text (except for the "change of address" 251 and 551 and, if
   2286    necessary, 220, 221, and 421 replies); in the general case, any text,
   2287    including no text at all (although senders SHOULD NOT send bare
   2288    codes), MUST be acceptable.  The space (blank) following the reply
   2289    code is considered part of the text.  Whenever possible, a receiver-
   2290    SMTP SHOULD test the first digit (severity indication) of the reply
   2291    code.
   2292 
   2293 
   2294 
   2295 
   2296 
   2297 
   2298 Klensin                     Standards Track                    [Page 41]
   2299 
   2300 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2301 
   2302 
   2303    The list of codes that appears below MUST NOT be construed as
   2304    permanent.  While the addition of new codes should be a rare and
   2305    significant activity, with supplemental information in the textual
   2306    part of the response being preferred, new codes may be added as the
   2307    result of new Standards or Standards-track specifications.
   2308    Consequently, a sender-SMTP MUST be prepared to handle codes not
   2309    specified in this document and MUST do so by interpreting the first
   2310    digit only.
   2311 
   2312 4.2.1 Reply Code Severities and Theory
   2313 
   2314    The three digits of the reply each have a special significance.  The
   2315    first digit denotes whether the response is good, bad or incomplete.
   2316    An unsophisticated SMTP client, or one that receives an unexpected
   2317    code, will be able to determine its next action (proceed as planned,
   2318    redo, retrench, etc.) by examining this first digit.  An SMTP client
   2319    that wants to know approximately what kind of error occurred (e.g.,
   2320    mail system error, command syntax error) may examine the second
   2321    digit.  The third digit and any supplemental information that may be
   2322    present is reserved for the finest gradation of information.
   2323 
   2324    There are five values for the first digit of the reply code:
   2325 
   2326    1yz   Positive Preliminary reply
   2327       The command has been accepted, but the requested action is being
   2328       held in abeyance, pending confirmation of the information in this
   2329       reply.  The SMTP client should send another command specifying
   2330       whether to continue or abort the action.  Note: unextended SMTP
   2331       does not have any commands that allow this type of reply, and so
   2332       does not have continue or abort commands.
   2333 
   2334    2yz   Positive Completion reply
   2335       The requested action has been successfully completed.  A new
   2336       request may be initiated.
   2337 
   2338    3yz   Positive Intermediate reply
   2339       The command has been accepted, but the requested action is being
   2340       held in abeyance, pending receipt of further information.  The
   2341       SMTP client should send another command specifying this
   2342       information.  This reply is used in command sequence groups (i.e.,
   2343       in DATA).
   2344 
   2345    4yz   Transient Negative Completion reply
   2346       The command was not accepted, and the requested action did not
   2347       occur.  However, the error condition is temporary and the action
   2348       may be requested again.  The sender should return to the beginning
   2349       of the command sequence (if any).  It is difficult to assign a
   2350       meaning to "transient" when two different sites (receiver- and
   2351 
   2352 
   2353 
   2354 Klensin                     Standards Track                    [Page 42]
   2355 
   2356 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2357 
   2358 
   2359       sender-SMTP agents) must agree on the interpretation.  Each reply
   2360       in this category might have a different time value, but the SMTP
   2361       client is encouraged to try again.  A rule of thumb to determine
   2362       whether a reply fits into the 4yz or the 5yz category (see below)
   2363       is that replies are 4yz if they can be successful if repeated
   2364       without any change in command form or in properties of the sender
   2365       or receiver (that is, the command is repeated identically and the
   2366       receiver does not put up a new implementation.)
   2367 
   2368    5yz   Permanent Negative Completion reply
   2369       The command was not accepted and the requested action did not
   2370       occur.  The SMTP client is discouraged from repeating the exact
   2371       request (in the same sequence).  Even some "permanent" error
   2372       conditions can be corrected, so the human user may want to direct
   2373       the SMTP client to reinitiate the command sequence by direct
   2374       action at some point in the future (e.g., after the spelling has
   2375       been changed, or the user has altered the account status).
   2376 
   2377    The second digit encodes responses in specific categories:
   2378 
   2379    x0z   Syntax: These replies refer to syntax errors, syntactically
   2380       correct commands that do not fit any functional category, and
   2381       unimplemented or superfluous commands.
   2382 
   2383    x1z   Information:  These are replies to requests for information,
   2384       such as status or help.
   2385 
   2386    x2z   Connections: These are replies referring to the transmission
   2387       channel.
   2388 
   2389    x3z   Unspecified.
   2390 
   2391    x4z   Unspecified.
   2392 
   2393    x5z   Mail system: These replies indicate the status of the receiver
   2394       mail system vis-a-vis the requested transfer or other mail system
   2395       action.
   2396 
   2397    The third digit gives a finer gradation of meaning in each category
   2398    specified by the second digit.  The list of replies illustrates this.
   2399    Each reply text is recommended rather than mandatory, and may even
   2400    change according to the command with which it is associated.  On the
   2401    other hand, the reply codes must strictly follow the specifications
   2402    in this section.  Receiver implementations should not invent new
   2403    codes for slightly different situations from the ones described here,
   2404    but rather adapt codes already defined.
   2405 
   2406 
   2407 
   2408 
   2409 
   2410 Klensin                     Standards Track                    [Page 43]
   2411 
   2412 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2413 
   2414 
   2415    For example, a command such as NOOP, whose successful execution does
   2416    not offer the SMTP client any new information, will return a 250
   2417    reply.  The reply is 502 when the command requests an unimplemented
   2418    non-site-specific action.  A refinement of that is the 504 reply for
   2419    a command that is implemented, but that requests an unimplemented
   2420    parameter.
   2421 
   2422    The reply text may be longer than a single line; in these cases the
   2423    complete text must be marked so the SMTP client knows when it can
   2424    stop reading the reply.  This requires a special format to indicate a
   2425    multiple line reply.
   2426 
   2427    The format for multiline replies requires that every line, except the
   2428    last, begin with the reply code, followed immediately by a hyphen,
   2429    "-" (also known as minus), followed by text.  The last line will
   2430    begin with the reply code, followed immediately by <SP>, optionally
   2431    some text, and <CRLF>.  As noted above, servers SHOULD send the <SP>
   2432    if subsequent text is not sent, but clients MUST be prepared for it
   2433    to be omitted.
   2434 
   2435    For example:
   2436 
   2437       123-First line
   2438       123-Second line
   2439       123-234 text beginning with numbers
   2440       123 The last line
   2441 
   2442    In many cases the SMTP client then simply needs to search for a line
   2443    beginning with the reply code followed by <SP> or <CRLF> and ignore
   2444    all preceding lines.  In a few cases, there is important data for the
   2445    client in the reply "text".  The client will be able to identify
   2446    these cases from the current context.
   2447 
   2448 4.2.2 Reply Codes by Function Groups
   2449 
   2450       500 Syntax error, command unrecognized
   2451          (This may include errors such as command line too long)
   2452       501 Syntax error in parameters or arguments
   2453       502 Command not implemented  (see section 4.2.4)
   2454       503 Bad sequence of commands
   2455       504 Command parameter not implemented
   2456 
   2457       211 System status, or system help reply
   2458       214 Help message
   2459          (Information on how to use the receiver or the meaning of a
   2460          particular non-standard command; this reply is useful only
   2461          to the human user)
   2462 
   2463 
   2464 
   2465 
   2466 Klensin                     Standards Track                    [Page 44]
   2467 
   2468 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2469 
   2470 
   2471       220 <domain> Service ready
   2472       221 <domain> Service closing transmission channel
   2473       421 <domain> Service not available, closing transmission channel
   2474          (This may be a reply to any command if the service knows it
   2475          must shut down)
   2476 
   2477       250 Requested mail action okay, completed
   2478       251 User not local; will forward to <forward-path>
   2479          (See section 3.4)
   2480       252 Cannot VRFY user, but will accept message and attempt
   2481           delivery
   2482          (See section 3.5.3)
   2483       450 Requested mail action not taken: mailbox unavailable
   2484          (e.g., mailbox busy)
   2485       550 Requested action not taken: mailbox unavailable
   2486          (e.g., mailbox not found, no access, or command rejected
   2487          for policy reasons)
   2488       451 Requested action aborted: error in processing
   2489       551 User not local; please try <forward-path>
   2490          (See section 3.4)
   2491       452 Requested action not taken: insufficient system storage
   2492       552 Requested mail action aborted: exceeded storage allocation
   2493       553 Requested action not taken: mailbox name not allowed
   2494          (e.g., mailbox syntax incorrect)
   2495       354 Start mail input; end with <CRLF>.<CRLF>
   2496       554 Transaction failed (Or, in the case of a connection-opening
   2497           response, "No SMTP service here")
   2498 
   2499 4.2.3  Reply Codes in Numeric Order
   2500 
   2501       211 System status, or system help reply
   2502       214 Help message
   2503          (Information on how to use the receiver or the meaning of a
   2504          particular non-standard command; this reply is useful only
   2505          to the human user)
   2506       220 <domain> Service ready
   2507       221 <domain> Service closing transmission channel
   2508       250 Requested mail action okay, completed
   2509       251 User not local; will forward to <forward-path>
   2510          (See section 3.4)
   2511       252 Cannot VRFY user, but will accept message and attempt
   2512          delivery
   2513          (See section 3.5.3)
   2514 
   2515       354 Start mail input; end with <CRLF>.<CRLF>
   2516 
   2517 
   2518 
   2519 
   2520 
   2521 
   2522 Klensin                     Standards Track                    [Page 45]
   2523 
   2524 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2525 
   2526 
   2527       421 <domain> Service not available, closing transmission channel
   2528          (This may be a reply to any command if the service knows it
   2529          must shut down)
   2530       450 Requested mail action not taken: mailbox unavailable
   2531          (e.g., mailbox busy)
   2532       451 Requested action aborted: local error in processing
   2533       452 Requested action not taken: insufficient system storage
   2534       500 Syntax error, command unrecognized
   2535          (This may include errors such as command line too long)
   2536       501 Syntax error in parameters or arguments
   2537       502 Command not implemented (see section 4.2.4)
   2538       503 Bad sequence of commands
   2539       504 Command parameter not implemented
   2540       550 Requested action not taken: mailbox unavailable
   2541          (e.g., mailbox not found, no access, or command rejected
   2542          for policy reasons)
   2543       551 User not local; please try <forward-path>
   2544          (See section 3.4)
   2545       552 Requested mail action aborted: exceeded storage allocation
   2546       553 Requested action not taken: mailbox name not allowed
   2547          (e.g., mailbox syntax incorrect)
   2548       554 Transaction failed  (Or, in the case of a connection-opening
   2549           response, "No SMTP service here")
   2550 
   2551 4.2.4 Reply Code 502
   2552 
   2553    Questions have been raised as to when reply code 502 (Command not
   2554    implemented) SHOULD be returned in preference to other codes.  502
   2555    SHOULD be used when the command is actually recognized by the SMTP
   2556    server, but not implemented.  If the command is not recognized, code
   2557    500 SHOULD be returned.  Extended SMTP systems MUST NOT list
   2558    capabilities in response to EHLO for which they will return 502 (or
   2559    500) replies.
   2560 
   2561 4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
   2562 
   2563    When an SMTP server returns a positive completion status (2yz code)
   2564    after the DATA command is completed with <CRLF>.<CRLF>, it accepts
   2565    responsibility for:
   2566 
   2567    -  delivering the message (if the recipient mailbox exists), or
   2568 
   2569    -  if attempts to deliver the message fail due to transient
   2570       conditions, retrying delivery some reasonable number of times at
   2571       intervals as specified in section 4.5.4.
   2572 
   2573 
   2574 
   2575 
   2576 
   2577 
   2578 Klensin                     Standards Track                    [Page 46]
   2579 
   2580 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2581 
   2582 
   2583    -  if attempts to deliver the message fail due to permanent
   2584       conditions, or if repeated attempts to deliver the message fail
   2585       due to transient conditions, returning appropriate notification to
   2586       the sender of the original message (using the address in the SMTP
   2587       MAIL command).
   2588 
   2589    When an SMTP server returns a permanent error status (5yz) code after
   2590    the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
   2591    any subsequent attempt to deliver that message.  The SMTP client
   2592    retains responsibility for delivery of that message and may either
   2593    return it to the user or requeue it for a subsequent attempt (see
   2594    section 4.5.4.1).
   2595 
   2596    The user who originated the message SHOULD be able to interpret the
   2597    return of a transient failure status (by mail message or otherwise)
   2598    as a non-delivery indication, just as a permanent failure would be
   2599    interpreted.  I.e., if the client SMTP successfully handles these
   2600    conditions, the user will not receive such a reply.
   2601 
   2602    When an SMTP server returns a permanent error status (5yz) code after
   2603    the DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make
   2604    any subsequent attempt to deliver the message.  As with temporary
   2605    error status codes, the SMTP client retains responsibility for the
   2606    message, but SHOULD not again attempt delivery to the same server
   2607    without user review and intervention of the message.
   2608 
   2609 4.3 Sequencing of Commands and Replies
   2610 
   2611 4.3.1 Sequencing Overview
   2612 
   2613    The communication between the sender and receiver is an alternating
   2614    dialogue, controlled by the sender.  As such, the sender issues a
   2615    command and the receiver responds with a reply.  Unless other
   2616    arrangements are negotiated through service extensions, the sender
   2617    MUST wait for this response before sending further commands.
   2618 
   2619    One important reply is the connection greeting.  Normally, a receiver
   2620    will send a 220 "Service ready" reply when the connection is
   2621    completed.  The sender SHOULD wait for this greeting message before
   2622    sending any commands.
   2623 
   2624    Note: all the greeting-type replies have the official name (the
   2625    fully-qualified primary domain name) of the server host as the first
   2626    word following the reply code.  Sometimes the host will have no
   2627    meaningful name.  See 4.1.3 for a discussion of alternatives in these
   2628    situations.
   2629 
   2630 
   2631 
   2632 
   2633 
   2634 Klensin                     Standards Track                    [Page 47]
   2635 
   2636 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2637 
   2638 
   2639    For example,
   2640 
   2641       220 ISIF.USC.EDU Service ready
   2642    or
   2643       220 mail.foo.com SuperSMTP v 6.1.2 Service ready
   2644    or
   2645       220 [10.0.0.1] Clueless host service ready
   2646 
   2647    The table below lists alternative success and failure replies for
   2648    each command.  These SHOULD be strictly adhered to: a receiver may
   2649    substitute text in the replies, but the meaning and action implied by
   2650    the code numbers and by the specific command reply sequence cannot be
   2651    altered.
   2652 
   2653 4.3.2 Command-Reply Sequences
   2654 
   2655    Each command is listed with its usual possible replies.  The prefixes
   2656    used before the possible replies are "I" for intermediate, "S" for
   2657    success, and "E" for error.  Since some servers may generate other
   2658    replies under special circumstances, and to allow for future
   2659    extension, SMTP clients SHOULD, when possible, interpret only the
   2660    first digit of the reply and MUST be prepared to deal with
   2661    unrecognized reply codes by interpreting the first digit only.
   2662    Unless extended using the mechanisms described in section 2.2, SMTP
   2663    servers MUST NOT transmit reply codes to an SMTP client that are
   2664    other than three digits or that do not start in a digit between 2 and
   2665    5 inclusive.
   2666 
   2667    These sequencing rules and, in principle, the codes themselves, can
   2668    be extended or modified by SMTP extensions offered by the server and
   2669    accepted (requested) by the client.
   2670 
   2671    In addition to the codes listed below, any SMTP command can return
   2672    any of the following codes if the corresponding unusual circumstances
   2673    are encountered:
   2674 
   2675    500  For the "command line too long" case or if the command name was
   2676       not recognized.  Note that producing a "command not recognized"
   2677       error in response to the required subset of these commands is a
   2678       violation of this specification.
   2679 
   2680    501  Syntax error in command or arguments.  In order to provide for
   2681       future extensions, commands that are specified in this document as
   2682       not accepting arguments (DATA, RSET, QUIT) SHOULD return a 501
   2683       message if arguments are supplied in the absence of EHLO-
   2684       advertised extensions.
   2685 
   2686    421  Service shutting down and closing transmission channel
   2687 
   2688 
   2689 
   2690 Klensin                     Standards Track                    [Page 48]
   2691 
   2692 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2693 
   2694 
   2695    Specific sequences are:
   2696 
   2697    CONNECTION ESTABLISHMENT
   2698       S: 220
   2699       E: 554
   2700    EHLO or HELO
   2701       S: 250
   2702       E: 504, 550
   2703    MAIL
   2704       S: 250
   2705       E: 552, 451, 452, 550, 553, 503
   2706    RCPT
   2707       S: 250, 251 (but see section 3.4 for discussion of 251 and 551)
   2708       E: 550, 551, 552, 553, 450, 451, 452, 503, 550
   2709    DATA
   2710       I: 354 -> data -> S: 250
   2711                         E: 552, 554, 451, 452
   2712       E: 451, 554, 503
   2713    RSET
   2714       S: 250
   2715    VRFY
   2716       S: 250, 251, 252
   2717       E: 550, 551, 553, 502, 504
   2718    EXPN
   2719       S: 250, 252
   2720       E: 550, 500, 502, 504
   2721    HELP
   2722       S: 211, 214
   2723       E: 502, 504
   2724    NOOP
   2725       S: 250
   2726    QUIT
   2727       S: 221
   2728 
   2729 4.4 Trace Information
   2730 
   2731    When an SMTP server receives a message for delivery or further
   2732    processing, it MUST insert trace ("time stamp" or "Received")
   2733    information at the beginning of the message content, as discussed in
   2734    section 4.1.1.4.
   2735 
   2736    This line MUST be structured as follows:
   2737 
   2738    -  The FROM field, which MUST be supplied in an SMTP environment,
   2739       SHOULD contain both (1) the name of the source host as presented
   2740       in the EHLO command and (2) an address literal containing the IP
   2741       address of the source, determined from the TCP connection.
   2742 
   2743 
   2744 
   2745 
   2746 Klensin                     Standards Track                    [Page 49]
   2747 
   2748 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2749 
   2750 
   2751    -  The ID field MAY contain an "@" as suggested in RFC 822, but this
   2752       is not required.
   2753 
   2754    -  The FOR field MAY contain a list of <path> entries when multiple
   2755       RCPT commands have been given.  This may raise some security
   2756       issues and is usually not desirable; see section 7.2.
   2757 
   2758    An Internet mail program MUST NOT change a Received: line that was
   2759    previously added to the message header.  SMTP servers MUST prepend
   2760    Received lines to messages; they MUST NOT change the order of
   2761    existing lines or insert Received lines in any other location.
   2762 
   2763    As the Internet grows, comparability of Received fields is important
   2764    for detecting problems, especially slow relays.  SMTP servers that
   2765    create Received fields SHOULD use explicit offsets in the dates
   2766    (e.g., -0800), rather than time zone names of any type.  Local time
   2767    (with an offset) is preferred to UT when feasible.  This formulation
   2768    allows slightly more information about local circumstances to be
   2769    specified.  If UT is needed, the receiver need merely do some simple
   2770    arithmetic to convert the values.  Use of UT loses information about
   2771    the time zone-location of the server.  If it is desired to supply a
   2772    time zone name, it SHOULD be included in a comment.
   2773 
   2774    When the delivery SMTP server makes the "final delivery" of a
   2775    message, it inserts a return-path line at the beginning of the mail
   2776    data.  This use of return-path is required; mail systems MUST support
   2777    it.  The return-path line preserves the information in the <reverse-
   2778    path> from the MAIL command.  Here, final delivery means the message
   2779    has left the SMTP environment.  Normally, this would mean it had been
   2780    delivered to the destination user or an associated mail drop, but in
   2781    some cases it may be further processed and transmitted by another
   2782    mail system.
   2783 
   2784    It is possible for the mailbox in the return path to be different
   2785    from the actual sender's mailbox, for example, if error responses are
   2786    to be delivered to a special error handling mailbox rather than to
   2787    the message sender.  When mailing lists are involved, this
   2788    arrangement is common and useful as a means of directing errors to
   2789    the list maintainer rather than the message originator.
   2790 
   2791    The text above implies that the final mail data will begin with a
   2792    return path line, followed by one or more time stamp lines.  These
   2793    lines will be followed by the mail data headers and body [32].
   2794 
   2795    It is sometimes difficult for an SMTP server to determine whether or
   2796    not it is making final delivery since forwarding or other operations
   2797    may occur after the message is accepted for delivery.  Consequently,
   2798 
   2799 
   2800 
   2801 
   2802 Klensin                     Standards Track                    [Page 50]
   2803 
   2804 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2805 
   2806 
   2807    any further (forwarding, gateway, or relay) systems MAY remove the
   2808    return path and rebuild the MAIL command as needed to ensure that
   2809    exactly one such line appears in a delivered message.
   2810 
   2811    A message-originating SMTP system SHOULD NOT send a message that
   2812    already contains a Return-path header.  SMTP servers performing a
   2813    relay function MUST NOT inspect the message data, and especially not
   2814    to the extent needed to determine if Return-path headers are present.
   2815    SMTP servers making final delivery MAY remove Return-path headers
   2816    before adding their own.
   2817 
   2818    The primary purpose of the Return-path is to designate the address to
   2819    which messages indicating non-delivery or other mail system failures
   2820    are to be sent.  For this to be unambiguous, exactly one return path
   2821    SHOULD be present when the message is delivered.  Systems using RFC
   2822    822 syntax with non-SMTP transports SHOULD designate an unambiguous
   2823    address, associated with the transport envelope, to which error
   2824    reports (e.g., non-delivery messages) should be sent.
   2825 
   2826    Historical note: Text in RFC 822 that appears to contradict the use
   2827    of the Return-path header (or the envelope reverse path address from
   2828    the MAIL command) as the destination for error messages is not
   2829    applicable on the Internet.  The reverse path address (as copied into
   2830    the Return-path) MUST be used as the target of any mail containing
   2831    delivery error messages.
   2832 
   2833    In particular:
   2834 
   2835    -  a gateway from SMTP->elsewhere SHOULD insert a return-path header,
   2836       unless it is known that the "elsewhere" transport also uses
   2837       Internet domain addresses and maintains the envelope sender
   2838       address separately.
   2839 
   2840    -  a gateway from elsewhere->SMTP SHOULD delete any return-path
   2841       header present in the message, and either copy that information to
   2842       the SMTP envelope or combine it with information present in the
   2843       envelope of the other transport system to construct the reverse
   2844       path argument to the MAIL command in the SMTP envelope.
   2845 
   2846    The server must give special treatment to cases in which the
   2847    processing following the end of mail data indication is only
   2848    partially successful.  This could happen if, after accepting several
   2849    recipients and the mail data, the SMTP server finds that the mail
   2850    data could be successfully delivered to some, but not all, of the
   2851    recipients.  In such cases, the response to the DATA command MUST be
   2852    an OK reply.  However, the SMTP server MUST compose and send an
   2853    "undeliverable mail" notification message to the originator of the
   2854    message.
   2855 
   2856 
   2857 
   2858 Klensin                     Standards Track                    [Page 51]
   2859 
   2860 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2861 
   2862 
   2863    A single notification listing all of the failed recipients or
   2864    separate notification messages MUST be sent for each failed
   2865    recipient.  For economy of processing by the sender, the former is
   2866    preferred when possible.  All undeliverable mail notification
   2867    messages are sent using the MAIL command (even if they result from
   2868    processing the obsolete SEND, SOML, or SAML commands) and use a null
   2869    return path as discussed in section 3.7.
   2870 
   2871    The time stamp line and the return path line are formally defined as
   2872    follows:
   2873 
   2874 Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
   2875 
   2876 Time-stamp-line = "Received:" FWS Stamp <CRLF>
   2877 
   2878 Stamp = From-domain By-domain Opt-info ";"  FWS date-time
   2879 
   2880       ; where "date-time" is as defined in [32]
   2881       ; but the "obs-" forms, especially two-digit
   2882       ; years, are prohibited in SMTP and MUST NOT be used.
   2883 
   2884 From-domain = "FROM" FWS Extended-Domain CFWS
   2885 
   2886 By-domain = "BY" FWS Extended-Domain CFWS
   2887 
   2888 Extended-Domain = Domain /
   2889            ( Domain FWS "(" TCP-info ")" ) /
   2890            ( Address-literal FWS "(" TCP-info ")" )
   2891 
   2892 TCP-info = Address-literal / ( Domain FWS Address-literal )
   2893       ; Information derived by server from TCP connection
   2894       ; not client EHLO.
   2895 
   2896 Opt-info = [Via] [With] [ID] [For]
   2897 
   2898 Via = "VIA" FWS Link CFWS
   2899 
   2900 With = "WITH" FWS Protocol CFWS
   2901 
   2902 ID = "ID" FWS String / msg-id CFWS
   2903 
   2904 For = "FOR" FWS 1*( Path / Mailbox ) CFWS
   2905 
   2906 Link = "TCP" / Addtl-Link
   2907 Addtl-Link = Atom
   2908       ; Additional standard names for links are registered with the
   2909          ; Internet Assigned Numbers Authority (IANA).  "Via" is
   2910          ; primarily of value with non-Internet transports.  SMTP
   2911 
   2912 
   2913 
   2914 Klensin                     Standards Track                    [Page 52]
   2915 
   2916 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2917 
   2918 
   2919          ; servers SHOULD NOT use unregistered names.
   2920 Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
   2921 Attdl-Protocol = Atom
   2922       ; Additional standard names for protocols are registered with the
   2923          ; Internet Assigned Numbers Authority (IANA).  SMTP servers
   2924          ; SHOULD NOT use unregistered names.
   2925 
   2926 4.5 Additional Implementation Issues
   2927 
   2928 4.5.1 Minimum Implementation
   2929 
   2930    In order to make SMTP workable, the following minimum implementation
   2931    is required for all receivers.  The following commands MUST be
   2932    supported to conform to this specification:
   2933 
   2934       EHLO
   2935       HELO
   2936       MAIL
   2937       RCPT
   2938       DATA
   2939       RSET
   2940       NOOP
   2941       QUIT
   2942       VRFY
   2943 
   2944    Any system that includes an SMTP server supporting mail relaying or
   2945    delivery MUST support the reserved mailbox "postmaster" as a case-
   2946    insensitive local name.  This postmaster address is not strictly
   2947    necessary if the server always returns 554 on connection opening (as
   2948    described in section 3.1).  The requirement to accept mail for
   2949    postmaster implies that RCPT commands which specify a mailbox for
   2950    postmaster at any of the domains for which the SMTP server provides
   2951    mail service, as well as the special case of "RCPT TO:<Postmaster>"
   2952    (with no domain specification), MUST be supported.
   2953 
   2954    SMTP systems are expected to make every reasonable effort to accept
   2955    mail directed to Postmaster from any other system on the Internet.
   2956    In extreme cases --such as to contain a denial of service attack or
   2957    other breach of security-- an SMTP server may block mail directed to
   2958    Postmaster.  However, such arrangements SHOULD be narrowly tailored
   2959    so as to avoid blocking messages which are not part of such attacks.
   2960 
   2961 4.5.2 Transparency
   2962 
   2963    Without some provision for data transparency, the character sequence
   2964    "<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user.
   2965    In general, users are not aware of such "forbidden" sequences.  To
   2966 
   2967 
   2968 
   2969 
   2970 Klensin                     Standards Track                    [Page 53]
   2971 
   2972 RFC 2821             Simple Mail Transfer Protocol            April 2001
   2973 
   2974 
   2975    allow all user composed text to be transmitted transparently, the
   2976    following procedures are used:
   2977 
   2978    -  Before sending a line of mail text, the SMTP client checks the
   2979       first character of the line.  If it is a period, one additional
   2980       period is inserted at the beginning of the line.
   2981 
   2982    -  When a line of mail text is received by the SMTP server, it checks
   2983       the line.  If the line is composed of a single period, it is
   2984       treated as the end of mail indicator.  If the first character is a
   2985       period and there are other characters on the line, the first
   2986       character is deleted.
   2987 
   2988    The mail data may contain any of the 128 ASCII characters.  All
   2989    characters are to be delivered to the recipient's mailbox, including
   2990    spaces, vertical and horizontal tabs, and other control characters.
   2991    If the transmission channel provides an 8-bit byte (octet) data
   2992    stream, the 7-bit ASCII codes are transmitted right justified in the
   2993    octets, with the high order bits cleared to zero.  See 3.7 for
   2994    special treatment of these conditions in SMTP systems serving a relay
   2995    function.
   2996 
   2997    In some systems it may be necessary to transform the data as it is
   2998    received and stored.  This may be necessary for hosts that use a
   2999    different character set than ASCII as their local character set, that
   3000    store data in records rather than strings, or which use special
   3001    character sequences as delimiters inside mailboxes.  If such
   3002    transformations are necessary, they MUST be reversible, especially if
   3003    they are applied to mail being relayed.
   3004 
   3005 4.5.3 Sizes and Timeouts
   3006 
   3007 4.5.3.1 Size limits and minimums
   3008 
   3009    There are several objects that have required minimum/maximum sizes.
   3010    Every implementation MUST be able to receive objects of at least
   3011    these sizes.  Objects larger than these sizes SHOULD be avoided when
   3012    possible.  However, some Internet mail constructs such as encoded
   3013    X.400 addresses [16] will often require larger objects: clients MAY
   3014    attempt to transmit these, but MUST be prepared for a server to
   3015    reject them if they cannot be handled by it.  To the maximum extent
   3016    possible, implementation techniques which impose no limits on the
   3017    length of these objects should be used.
   3018 
   3019    local-part
   3020       The maximum total length of a user name or other local-part is 64
   3021       characters.
   3022 
   3023 
   3024 
   3025 
   3026 Klensin                     Standards Track                    [Page 54]
   3027 
   3028 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3029 
   3030 
   3031    domain
   3032       The maximum total length of a domain name or number is 255
   3033       characters.
   3034 
   3035    path
   3036       The maximum total length of a reverse-path or forward-path is 256
   3037       characters (including the punctuation and element separators).
   3038 
   3039    command line
   3040       The maximum total length of a command line including the command
   3041       word and the <CRLF> is 512 characters.  SMTP extensions may be
   3042       used to increase this limit.
   3043 
   3044    reply line
   3045       The maximum total length of a reply line including the reply code
   3046       and the <CRLF> is 512 characters.  More information may be
   3047       conveyed through multiple-line replies.
   3048 
   3049    text line
   3050       The maximum total length of a text line including the <CRLF> is
   3051       1000 characters (not counting the leading dot duplicated for
   3052       transparency).  This number may be increased by the use of SMTP
   3053       Service Extensions.
   3054 
   3055    message content
   3056       The maximum total length of a message content (including any
   3057       message headers as well as the message body) MUST BE at least 64K
   3058       octets.  Since the introduction of Internet standards for
   3059       multimedia mail [12], message lengths on the Internet have grown
   3060       dramatically, and message size restrictions should be avoided if
   3061       at all possible.  SMTP server systems that must impose
   3062       restrictions SHOULD implement the "SIZE" service extension [18],
   3063       and SMTP client systems that will send large messages SHOULD
   3064       utilize it when possible.
   3065 
   3066    recipients buffer
   3067       The minimum total number of recipients that must be buffered is
   3068       100 recipients.  Rejection of messages (for excessive recipients)
   3069       with fewer than 100 RCPT commands is a violation of this
   3070       specification.  The general principle that relaying SMTP servers
   3071       MUST NOT, and delivery SMTP servers SHOULD NOT, perform validation
   3072       tests on message headers suggests that rejecting a message based
   3073       on the total number of recipients shown in header fields is to be
   3074       discouraged.  A server which imposes a limit on the number of
   3075       recipients MUST behave in an orderly fashion,  such as to reject
   3076       additional addresses over its limit rather than silently
   3077       discarding addresses previously accepted.  A client that needs to
   3078 
   3079 
   3080 
   3081 
   3082 Klensin                     Standards Track                    [Page 55]
   3083 
   3084 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3085 
   3086 
   3087       deliver a message containing over 100 RCPT commands SHOULD be
   3088       prepared to transmit in 100-recipient "chunks" if the server
   3089       declines to accept more than 100 recipients in a single message.
   3090 
   3091    Errors due to exceeding these limits may be reported by using the
   3092    reply codes.  Some examples of reply codes are:
   3093 
   3094       500 Line too long.
   3095    or
   3096       501 Path too long
   3097    or
   3098       452 Too many recipients  (see below)
   3099    or
   3100       552 Too much mail data.
   3101 
   3102    RFC 821 [30] incorrectly listed the error where an SMTP server
   3103    exhausts its implementation limit on the number of RCPT commands
   3104    ("too many recipients") as having reply code 552.  The correct reply
   3105    code for this condition is 452.  Clients SHOULD treat a 552 code in
   3106    this case as a temporary, rather than permanent, failure so the logic
   3107    below works.
   3108 
   3109    When a conforming SMTP server encounters this condition, it has at
   3110    least 100 successful RCPT commands in its recipients buffer.  If the
   3111    server is able to accept the message, then at least these 100
   3112    addresses will be removed from the SMTP client's queue.  When the
   3113    client attempts retransmission of those addresses which received 452
   3114    responses, at least 100 of these will be able to fit in the SMTP
   3115    server's recipients buffer.  Each retransmission attempt which is
   3116    able to deliver anything will be able to dispose of at least 100 of
   3117    these recipients.
   3118 
   3119    If an SMTP server has an implementation limit on the number of RCPT
   3120    commands and this limit is exhausted, it MUST use a response code of
   3121    452 (but the client SHOULD also be prepared for a 552, as noted
   3122    above).  If the server has a configured site-policy limitation on the
   3123    number of RCPT commands, it MAY instead use a 5XX response code.
   3124    This would be most appropriate if the policy limitation was intended
   3125    to apply if the total recipient count for a particular message body
   3126    were enforced even if that message body was sent in multiple mail
   3127    transactions.
   3128 
   3129 4.5.3.2 Timeouts
   3130 
   3131    An SMTP client MUST provide a timeout mechanism.  It MUST use per-
   3132    command timeouts rather than somehow trying to time the entire mail
   3133    transaction.  Timeouts SHOULD be easily reconfigurable, preferably
   3134    without recompiling the SMTP code.  To implement this, a timer is set
   3135 
   3136 
   3137 
   3138 Klensin                     Standards Track                    [Page 56]
   3139 
   3140 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3141 
   3142 
   3143    for each SMTP command and for each buffer of the data transfer.  The
   3144    latter means that the overall timeout is inherently proportional to
   3145    the size of the message.
   3146 
   3147    Based on extensive experience with busy mail-relay hosts, the minimum
   3148    per-command timeout values SHOULD be as follows:
   3149 
   3150    Initial 220 Message: 5 minutes
   3151       An SMTP client process needs to distinguish between a failed TCP
   3152       connection and a delay in receiving the initial 220 greeting
   3153       message.  Many SMTP servers accept a TCP connection but delay
   3154       delivery of the 220 message until their system load permits more
   3155       mail to be processed.
   3156 
   3157    MAIL Command: 5 minutes
   3158 
   3159    RCPT Command: 5 minutes
   3160       A longer timeout is required if processing of mailing lists and
   3161       aliases is not deferred until after the message was accepted.
   3162 
   3163    DATA Initiation: 2 minutes
   3164       This is while awaiting the "354 Start Input" reply to a DATA
   3165       command.
   3166 
   3167    Data Block: 3 minutes
   3168       This is while awaiting the completion of each TCP SEND call
   3169       transmitting a chunk of data.
   3170 
   3171    DATA Termination: 10 minutes.
   3172       This is while awaiting the "250 OK" reply.  When the receiver gets
   3173       the final period terminating the message data, it typically
   3174       performs processing to deliver the message to a user mailbox.  A
   3175       spurious timeout at this point would be very wasteful and would
   3176       typically result in delivery of multiple copies of the message,
   3177       since it has been successfully sent and the server has accepted
   3178       responsibility for delivery.  See section 6.1 for additional
   3179       discussion.
   3180 
   3181    An SMTP server SHOULD have a timeout of at least 5 minutes while it
   3182    is awaiting the next command from the sender.
   3183 
   3184 4.5.4 Retry Strategies
   3185 
   3186    The common structure of a host SMTP implementation includes user
   3187    mailboxes, one or more areas for queuing messages in transit, and one
   3188    or more daemon processes for sending and receiving mail.  The exact
   3189    structure will vary depending on the needs of the users on the host
   3190 
   3191 
   3192 
   3193 
   3194 Klensin                     Standards Track                    [Page 57]
   3195 
   3196 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3197 
   3198 
   3199    and the number and size of mailing lists supported by the host.  We
   3200    describe several optimizations that have proved helpful, particularly
   3201    for mailers supporting high traffic levels.
   3202 
   3203    Any queuing strategy MUST include timeouts on all activities on a
   3204    per-command basis.  A queuing strategy MUST NOT send error messages
   3205    in response to error messages under any circumstances.
   3206 
   3207 4.5.4.1 Sending Strategy
   3208 
   3209    The general model for an SMTP client is one or more processes that
   3210    periodically attempt to transmit outgoing mail.  In a typical system,
   3211    the program that composes a message has some method for requesting
   3212    immediate attention for a new piece of outgoing mail, while mail that
   3213    cannot be transmitted immediately MUST be queued and periodically
   3214    retried by the sender.  A mail queue entry will include not only the
   3215    message itself but also the envelope information.
   3216 
   3217    The sender MUST delay retrying a particular destination after one
   3218    attempt has failed.  In general, the retry interval SHOULD be at
   3219    least 30 minutes; however, more sophisticated and variable strategies
   3220    will be beneficial when the SMTP client can determine the reason for
   3221    non-delivery.
   3222 
   3223    Retries continue until the message is transmitted or the sender gives
   3224    up; the give-up time generally needs to be at least 4-5 days.  The
   3225    parameters to the retry algorithm MUST be configurable.
   3226 
   3227    A client SHOULD keep a list of hosts it cannot reach and
   3228    corresponding connection timeouts, rather than just retrying queued
   3229    mail items.
   3230 
   3231    Experience suggests that failures are typically transient (the target
   3232    system or its connection has crashed), favoring a policy of two
   3233    connection attempts in the first hour the message is in the queue,
   3234    and then backing off to one every two or three hours.
   3235 
   3236    The SMTP client can shorten the queuing delay in cooperation with the
   3237    SMTP server.  For example, if mail is received from a particular
   3238    address, it is likely that mail queued for that host can now be sent.
   3239    Application of this principle may, in many cases, eliminate the
   3240    requirement for an explicit "send queues now" function such as ETRN
   3241    [9].
   3242 
   3243    The strategy may be further modified as a result of multiple
   3244    addresses per host (see below) to optimize delivery time vs. resource
   3245    usage.
   3246 
   3247 
   3248 
   3249 
   3250 Klensin                     Standards Track                    [Page 58]
   3251 
   3252 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3253 
   3254 
   3255    An SMTP client may have a large queue of messages for each
   3256    unavailable destination host.  If all of these messages were retried
   3257    in every retry cycle, there would be excessive Internet overhead and
   3258    the sending system would be blocked for a long period.  Note that an
   3259    SMTP client can generally determine that a delivery attempt has
   3260    failed only after a timeout of several minutes and even a one-minute
   3261    timeout per connection will result in a very large delay if retries
   3262    are repeated for dozens, or even hundreds, of queued messages to the
   3263    same host.
   3264 
   3265    At the same time, SMTP clients SHOULD use great care in caching
   3266    negative responses from servers.  In an extreme case, if EHLO is
   3267    issued multiple times during the same SMTP connection, different
   3268    answers may be returned by the server.  More significantly, 5yz
   3269    responses to the MAIL command MUST NOT be cached.
   3270 
   3271    When a mail message is to be delivered to multiple recipients, and
   3272    the SMTP server to which a copy of the message is to be sent is the
   3273    same for multiple recipients, then only one copy of the message
   3274    SHOULD be transmitted.  That is, the SMTP client SHOULD use the
   3275    command sequence:  MAIL, RCPT, RCPT,... RCPT, DATA instead of the
   3276    sequence: MAIL, RCPT, DATA, ..., MAIL, RCPT, DATA.  However, if there
   3277    are very many addresses, a limit on the number of RCPT commands per
   3278    MAIL command MAY be imposed.  Implementation of this efficiency
   3279    feature is strongly encouraged.
   3280 
   3281    Similarly, to achieve timely delivery, the SMTP client MAY support
   3282    multiple concurrent outgoing mail transactions.  However, some limit
   3283    may be appropriate to protect the host from devoting all its
   3284    resources to mail.
   3285 
   3286 4.5.4.2 Receiving Strategy
   3287 
   3288    The SMTP server SHOULD attempt to keep a pending listen on the SMTP
   3289    port at all times.  This requires the support of multiple incoming
   3290    TCP connections for SMTP.  Some limit MAY be imposed but servers that
   3291    cannot handle more than one SMTP transaction at a time are not in
   3292    conformance with the intent of this specification.
   3293 
   3294    As discussed above, when the SMTP server receives mail from a
   3295    particular host address, it could activate its own SMTP queuing
   3296    mechanisms to retry any mail pending for that host address.
   3297 
   3298 4.5.5   Messages with a null reverse-path
   3299 
   3300    There are several types of notification messages which are required
   3301    by existing and proposed standards to be sent with a null reverse
   3302    path, namely non-delivery notifications as discussed in section 3.7,
   3303 
   3304 
   3305 
   3306 Klensin                     Standards Track                    [Page 59]
   3307 
   3308 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3309 
   3310 
   3311    other kinds of Delivery Status Notifications (DSNs) [24], and also
   3312    Message Disposition Notifications (MDNs) [10].  All of these kinds of
   3313    messages are notifications about a previous message, and they are
   3314    sent to the reverse-path of the previous mail message.  (If the
   3315    delivery of such a notification message fails, that usually indicates
   3316    a problem with the mail system of the host to which the notification
   3317    message is addressed.  For this reason, at some hosts the MTA is set
   3318    up to forward such failed notification messages to someone who is
   3319    able to fix problems with the mail system, e.g., via the postmaster
   3320    alias.)
   3321 
   3322    All other types of messages (i.e., any message which is not required
   3323    by a standards-track RFC to have a null reverse-path) SHOULD be sent
   3324    with with a valid, non-null reverse-path.
   3325 
   3326    Implementors of automated email processors should be careful to make
   3327    sure that the various kinds of messages with null reverse-path are
   3328    handled correctly, in particular such systems SHOULD NOT reply to
   3329    messages with null reverse-path.
   3330 
   3331 5. Address Resolution and Mail Handling
   3332 
   3333    Once an SMTP client lexically identifies a domain to which mail will
   3334    be delivered for processing (as described in sections 3.6 and 3.7), a
   3335    DNS lookup MUST be performed to resolve the domain name [22].  The
   3336    names are expected to be fully-qualified domain names (FQDNs):
   3337    mechanisms for inferring FQDNs from partial names or local aliases
   3338    are outside of this specification and, due to a history of problems,
   3339    are generally discouraged.  The lookup first attempts to locate an MX
   3340    record associated with the name.  If a CNAME record is found instead,
   3341    the resulting name is processed as if it were the initial name.  If
   3342    no MX records are found, but an A RR is found, the A RR is treated as
   3343    if it was associated with an implicit MX RR, with a preference of 0,
   3344    pointing to that host.  If one or more MX RRs are found for a given
   3345    name, SMTP systems MUST NOT utilize any A RRs associated with that
   3346    name unless they are located using the MX RRs; the "implicit MX" rule
   3347    above applies only if there are no MX records present.  If MX records
   3348    are present, but none of them are usable, this situation MUST be
   3349    reported as an error.
   3350 
   3351    When the lookup succeeds, the mapping can result in a list of
   3352    alternative delivery addresses rather than a single address, because
   3353    of multiple MX records, multihoming, or both.  To provide reliable
   3354    mail transmission, the SMTP client MUST be able to try (and retry)
   3355    each of the relevant addresses in this list in order, until a
   3356    delivery attempt succeeds.  However, there MAY also be a configurable
   3357    limit on the number of alternate addresses that can be tried.  In any
   3358    case, the SMTP client SHOULD try at least two addresses.
   3359 
   3360 
   3361 
   3362 Klensin                     Standards Track                    [Page 60]
   3363 
   3364 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3365 
   3366 
   3367    Two types of information is used to rank the host addresses: multiple
   3368    MX records, and multihomed hosts.
   3369 
   3370    Multiple MX records contain a preference indication that MUST be used
   3371    in sorting (see below).  Lower numbers are more preferred than higher
   3372    ones.  If there are multiple destinations with the same preference
   3373    and there is no clear reason to favor one (e.g., by recognition of an
   3374    easily-reached address), then the sender-SMTP MUST randomize them to
   3375    spread the load across multiple mail exchangers for a specific
   3376    organization.
   3377 
   3378    The destination host (perhaps taken from the preferred MX record) may
   3379    be multihomed, in which case the domain name resolver will return a
   3380    list of alternative IP addresses.  It is the responsibility of the
   3381    domain name resolver interface to have ordered this list by
   3382    decreasing preference if necessary, and SMTP MUST try them in the
   3383    order presented.
   3384 
   3385    Although the capability to try multiple alternative addresses is
   3386    required, specific installations may want to limit or disable the use
   3387    of alternative addresses.  The question of whether a sender should
   3388    attempt retries using the different addresses of a multihomed host
   3389    has been controversial.  The main argument for using the multiple
   3390    addresses is that it maximizes the probability of timely delivery,
   3391    and indeed sometimes the probability of any delivery; the counter-
   3392    argument is that it may result in unnecessary resource use.  Note
   3393    that resource use is also strongly determined by the sending strategy
   3394    discussed in section 4.5.4.1.
   3395 
   3396    If an SMTP server receives a message with a destination for which it
   3397    is a designated Mail eXchanger, it MAY relay the message (potentially
   3398    after having rewritten the MAIL FROM and/or RCPT TO addresses), make
   3399    final delivery of the message, or hand it off using some mechanism
   3400    outside the SMTP-provided transport environment.  Of course, neither
   3401    of the latter require that the list of MX records be examined
   3402    further.
   3403 
   3404    If it determines that it should relay the message without rewriting
   3405    the address, it MUST sort the MX records to determine candidates for
   3406    delivery.  The records are first ordered by preference, with the
   3407    lowest-numbered records being most preferred.  The relay host MUST
   3408    then inspect the list for any of the names or addresses by which it
   3409    might be known in mail transactions.  If a matching record is found,
   3410    all records at that preference level and higher-numbered ones MUST be
   3411    discarded from consideration.  If there are no records left at that
   3412    point, it is an error condition, and the message MUST be returned as
   3413    undeliverable.  If records do remain, they SHOULD be tried, best
   3414    preference first, as described above.
   3415 
   3416 
   3417 
   3418 Klensin                     Standards Track                    [Page 61]
   3419 
   3420 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3421 
   3422 
   3423 6. Problem Detection and Handling
   3424 
   3425 6.1 Reliable Delivery and Replies by Email
   3426 
   3427    When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
   3428    message in response to DATA), it is accepting responsibility for
   3429    delivering or relaying the message.  It must take this responsibility
   3430    seriously.  It MUST NOT lose the message for frivolous reasons, such
   3431    as because the host later crashes or because of a predictable
   3432    resource shortage.
   3433 
   3434    If there is a delivery failure after acceptance of a message, the
   3435    receiver-SMTP MUST formulate and mail a notification message.  This
   3436    notification MUST be sent using a null ("<>") reverse path in the
   3437    envelope.  The recipient of this notification MUST be the address
   3438    from the envelope return path (or the Return-Path: line).  However,
   3439    if this address is null ("<>"), the receiver-SMTP MUST NOT send a
   3440    notification.  Obviously, nothing in this section can or should
   3441    prohibit local decisions (i.e., as part of the same system
   3442    environment as the receiver-SMTP) to log or otherwise transmit
   3443    information about null address events locally if that is desired.  If
   3444    the address is an explicit source route, it MUST be stripped down to
   3445    its final hop.
   3446 
   3447    For example, suppose that an error notification must be sent for a
   3448    message that arrived with:
   3449 
   3450       MAIL FROM:<@a,@b:user@d>
   3451 
   3452    The notification message MUST be sent using:
   3453 
   3454       RCPT TO:<user@d>
   3455 
   3456    Some delivery failures after the message is accepted by SMTP will be
   3457    unavoidable.  For example, it may be impossible for the receiving
   3458    SMTP server to validate all the delivery addresses in RCPT command(s)
   3459    due to a "soft" domain system error, because the target is a mailing
   3460    list (see earlier discussion of RCPT), or because the server is
   3461    acting as a relay and has no immediate access to the delivering
   3462    system.
   3463 
   3464    To avoid receiving duplicate messages as the result of timeouts, a
   3465    receiver-SMTP MUST seek to minimize the time required to respond to
   3466    the final <CRLF>.<CRLF> end of data indicator.  See RFC 1047 [28] for
   3467    a discussion of this problem.
   3468 
   3469 
   3470 
   3471 
   3472 
   3473 
   3474 Klensin                     Standards Track                    [Page 62]
   3475 
   3476 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3477 
   3478 
   3479 6.2 Loop Detection
   3480 
   3481    Simple counting of the number of "Received:" headers in a message has
   3482    proven to be an effective, although rarely optimal, method of
   3483    detecting loops in mail systems.  SMTP servers using this technique
   3484    SHOULD use a large rejection threshold, normally at least 100
   3485    Received entries.  Whatever mechanisms are used, servers MUST contain
   3486    provisions for detecting and stopping trivial loops.
   3487 
   3488 6.3 Compensating for Irregularities
   3489 
   3490    Unfortunately, variations, creative interpretations, and outright
   3491    violations of Internet mail protocols do occur; some would suggest
   3492    that they occur quite frequently.  The debate as to whether a well-
   3493    behaved SMTP receiver or relay should reject a malformed message,
   3494    attempt to pass it on unchanged, or attempt to repair it to increase
   3495    the odds of successful delivery (or subsequent reply) began almost
   3496    with the dawn of structured network mail and shows no signs of
   3497    abating.  Advocates of rejection claim that attempted repairs are
   3498    rarely completely adequate and that rejection of bad messages is the
   3499    only way to get the offending software repaired.  Advocates of
   3500    "repair" or "deliver no matter what" argue that users prefer that
   3501    mail go through it if at all possible and that there are significant
   3502    market pressures in that direction.  In practice, these market
   3503    pressures may be more important to particular vendors than strict
   3504    conformance to the standards, regardless of the preference of the
   3505    actual developers.
   3506 
   3507    The problems associated with ill-formed messages were exacerbated by
   3508    the introduction of the split-UA mail reading protocols [3, 26, 5,
   3509    21].  These protocols have encouraged the use of SMTP as a posting
   3510    protocol, and SMTP servers as relay systems for these client hosts
   3511    (which are often only intermittently connected to the Internet).
   3512    Historically, many of those client machines lacked some of the
   3513    mechanisms and information assumed by SMTP (and indeed, by the mail
   3514    format protocol [7]).  Some could not keep adequate track of time;
   3515    others had no concept of time zones; still others could not identify
   3516    their own names or addresses; and, of course, none could satisfy the
   3517    assumptions that underlay RFC 822's conception of authenticated
   3518    addresses.
   3519 
   3520    In response to these weak SMTP clients, many SMTP systems now
   3521    complete messages that are delivered to them in incomplete or
   3522    incorrect form.  This strategy is generally considered appropriate
   3523    when the server can identify or authenticate the client, and there
   3524    are prior agreements between them.  By contrast, there is at best
   3525    great concern about fixes applied by a relay or delivery SMTP server
   3526    that has little or no knowledge of the user or client machine.
   3527 
   3528 
   3529 
   3530 Klensin                     Standards Track                    [Page 63]
   3531 
   3532 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3533 
   3534 
   3535    The following changes to a message being processed MAY be applied
   3536    when necessary by an originating SMTP server, or one used as the
   3537    target of SMTP as an initial posting protocol:
   3538 
   3539    -  Addition of a message-id field when none appears
   3540 
   3541    -  Addition of a date, time or time zone when none appears
   3542 
   3543    -  Correction of addresses to proper FQDN format
   3544 
   3545    The less information the server has about the client, the less likely
   3546    these changes are to be correct and the more caution and conservatism
   3547    should be applied when considering whether or not to perform fixes
   3548    and how.  These changes MUST NOT be applied by an SMTP server that
   3549    provides an intermediate relay function.
   3550 
   3551    In all cases, properly-operating clients supplying correct
   3552    information are preferred to corrections by the SMTP server.  In all
   3553    cases, documentation of actions performed by the servers (in trace
   3554    fields and/or header comments) is strongly encouraged.
   3555 
   3556 7. Security Considerations
   3557 
   3558 7.1 Mail Security and Spoofing
   3559 
   3560    SMTP mail is inherently insecure in that it is feasible for even
   3561    fairly casual users to negotiate directly with receiving and relaying
   3562    SMTP servers and create messages that will trick a naive recipient
   3563    into believing that they came from somewhere else.  Constructing such
   3564    a message so that the "spoofed" behavior cannot be detected by an
   3565    expert is somewhat more difficult, but not sufficiently so as to be a
   3566    deterrent to someone who is determined and knowledgeable.
   3567    Consequently, as knowledge of Internet mail increases, so does the
   3568    knowledge that SMTP mail inherently cannot be authenticated, or
   3569    integrity checks provided, at the transport level.  Real mail
   3570    security lies only in end-to-end methods involving the message
   3571    bodies, such as those which use digital signatures (see [14] and,
   3572    e.g., PGP [4] or S/MIME [31]).
   3573 
   3574    Various protocol extensions and configuration options that provide
   3575    authentication at the transport level (e.g., from an SMTP client to
   3576    an SMTP server) improve somewhat on the traditional situation
   3577    described above.  However, unless they are accompanied by careful
   3578    handoffs of responsibility in a carefully-designed trust environment,
   3579    they remain inherently weaker than end-to-end mechanisms which use
   3580    digitally signed messages rather than depending on the integrity of
   3581    the transport system.
   3582 
   3583 
   3584 
   3585 
   3586 Klensin                     Standards Track                    [Page 64]
   3587 
   3588 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3589 
   3590 
   3591    Efforts to make it more difficult for users to set envelope return
   3592    path and header "From" fields to point to valid addresses other than
   3593    their own are largely misguided: they frustrate legitimate
   3594    applications in which mail is sent by one user on behalf of another
   3595    or in which error (or normal) replies should be directed to a special
   3596    address.  (Systems that provide convenient ways for users to alter
   3597    these fields on a per-message basis should attempt to establish a
   3598    primary and permanent mailbox address for the user so that Sender
   3599    fields within the message data can be generated sensibly.)
   3600 
   3601    This specification does not further address the authentication issues
   3602    associated with SMTP other than to advocate that useful functionality
   3603    not be disabled in the hope of providing some small margin of
   3604    protection against an ignorant user who is trying to fake mail.
   3605 
   3606 7.2 "Blind" Copies
   3607 
   3608    Addresses that do not appear in the message headers may appear in the
   3609    RCPT commands to an SMTP server for a number of reasons.  The two
   3610    most common involve the use of a mailing address as a "list exploder"
   3611    (a single address that resolves into multiple addresses) and the
   3612    appearance of "blind copies".  Especially when more than one RCPT
   3613    command is present, and in order to avoid defeating some of the
   3614    purpose of these mechanisms, SMTP clients and servers SHOULD NOT copy
   3615    the full set of RCPT command arguments into the headers, either as
   3616    part of trace headers or as informational or private-extension
   3617    headers.  Since this rule is often violated in practice, and cannot
   3618    be enforced, sending SMTP systems that are aware of "bcc" use MAY
   3619    find it helpful to send each blind copy as a separate message
   3620    transaction containing only a single RCPT command.
   3621 
   3622    There is no inherent relationship between either "reverse" (from
   3623    MAIL, SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP
   3624    transaction ("envelope") and the addresses in the headers.  Receiving
   3625    systems SHOULD NOT attempt to deduce such relationships and use them
   3626    to alter the headers of the message for delivery.  The popular
   3627    "Apparently-to" header is a violation of this principle as well as a
   3628    common source of unintended information disclosure and SHOULD NOT be
   3629    used.
   3630 
   3631 7.3 VRFY, EXPN, and Security
   3632 
   3633    As discussed in section 3.5, individual sites may want to disable
   3634    either or both of VRFY or EXPN for security reasons.  As a corollary
   3635    to the above, implementations that permit this MUST NOT appear to
   3636    have verified addresses that are not, in fact, verified.  If a site
   3637 
   3638 
   3639 
   3640 
   3641 
   3642 Klensin                     Standards Track                    [Page 65]
   3643 
   3644 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3645 
   3646 
   3647    disables these commands for security reasons, the SMTP server MUST
   3648    return a 252 response, rather than a code that could be confused with
   3649    successful or unsuccessful verification.
   3650 
   3651    Returning a 250 reply code with the address listed in the VRFY
   3652    command after having checked it only for syntax violates this rule.
   3653    Of course, an implementation that "supports" VRFY by always returning
   3654    550 whether or not the address is valid is equally not in
   3655    conformance.
   3656 
   3657    Within the last few years, the contents of mailing lists have become
   3658    popular as an address information source for so-called "spammers."
   3659    The use of EXPN to "harvest" addresses has increased as list
   3660    administrators have installed protections against inappropriate uses
   3661    of the lists themselves.  Implementations SHOULD still provide
   3662    support for EXPN, but sites SHOULD carefully evaluate the tradeoffs.
   3663    As authentication mechanisms are introduced into SMTP, some sites may
   3664    choose to make EXPN available only to authenticated requestors.
   3665 
   3666 7.4 Information Disclosure in Announcements
   3667 
   3668    There has been an ongoing debate about the tradeoffs between the
   3669    debugging advantages of announcing server type and version (and,
   3670    sometimes, even server domain name) in the greeting response or in
   3671    response to the HELP command and the disadvantages of exposing
   3672    information that might be useful in a potential hostile attack.  The
   3673    utility of the debugging information is beyond doubt.  Those who
   3674    argue for making it available point out that it is far better to
   3675    actually secure an SMTP server rather than hope that trying to
   3676    conceal known vulnerabilities by hiding the server's precise identity
   3677    will provide more protection.  Sites are encouraged to evaluate the
   3678    tradeoff with that issue in mind; implementations are strongly
   3679    encouraged to minimally provide for making type and version
   3680    information available in some way to other network hosts.
   3681 
   3682 7.5 Information Disclosure in Trace Fields
   3683 
   3684    In some circumstances, such as when mail originates from within a LAN
   3685    whose hosts are not directly on the public Internet, trace
   3686    ("Received") fields produced in conformance with this specification
   3687    may disclose host names and similar information that would not
   3688    normally be available.  This ordinarily does not pose a problem, but
   3689    sites with special concerns about name disclosure should be aware of
   3690    it.  Also, the optional FOR clause should be supplied with caution or
   3691    not at all when multiple recipients are involved lest it
   3692    inadvertently disclose the identities of "blind copy" recipients to
   3693    others.
   3694 
   3695 
   3696 
   3697 
   3698 Klensin                     Standards Track                    [Page 66]
   3699 
   3700 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3701 
   3702 
   3703 7.6 Information Disclosure in Message Forwarding
   3704 
   3705    As discussed in section 3.4, use of the 251 or 551 reply codes to
   3706    identify the replacement address associated with a mailbox may
   3707    inadvertently disclose sensitive information.  Sites that are
   3708    concerned about those issues should ensure that they select and
   3709    configure servers appropriately.
   3710 
   3711 7.7 Scope of Operation of SMTP Servers
   3712 
   3713    It is a well-established principle that an SMTP server may refuse to
   3714    accept mail for any operational or technical reason that makes sense
   3715    to the site providing the server.  However, cooperation among sites
   3716    and installations makes the Internet possible.  If sites take
   3717    excessive advantage of the right to reject traffic, the ubiquity of
   3718    email availability (one of the strengths of the Internet) will be
   3719    threatened; considerable care should be taken and balance maintained
   3720    if a site decides to be selective about the traffic it will accept
   3721    and process.
   3722 
   3723    In recent years, use of the relay function through arbitrary sites
   3724    has been used as part of hostile efforts to hide the actual origins
   3725    of mail.  Some sites have decided to limit the use of the relay
   3726    function to known or identifiable sources, and implementations SHOULD
   3727    provide the capability to perform this type of filtering.  When mail
   3728    is rejected for these or other policy reasons, a 550 code SHOULD be
   3729    used in response to EHLO, MAIL, or RCPT as appropriate.
   3730 
   3731 8. IANA Considerations
   3732 
   3733    IANA will maintain three registries in support of this specification.
   3734    The first consists of SMTP service extensions with the associated
   3735    keywords, and, as needed, parameters and verbs.  As specified in
   3736    section 2.2.2, no entry may be made in this registry that starts in
   3737    an "X".  Entries may be made only for service extensions (and
   3738    associated keywords, parameters, or verbs) that are defined in
   3739    standards-track or experimental RFCs specifically approved by the
   3740    IESG for this purpose.
   3741 
   3742    The second registry consists of "tags" that identify forms of domain
   3743    literals other than those for IPv4 addresses (specified in RFC 821
   3744    and in this document) and IPv6 addresses (specified in this
   3745    document).  Additional literal types require standardization before
   3746    being used; none are anticipated at this time.
   3747 
   3748    The third, established by RFC 821 and renewed by this specification,
   3749    is a registry of link and protocol identifiers to be used with the
   3750    "via" and "with" subclauses of the time stamp ("Received: header")
   3751 
   3752 
   3753 
   3754 Klensin                     Standards Track                    [Page 67]
   3755 
   3756 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3757 
   3758 
   3759    described in section 4.4.  Link and protocol identifiers in addition
   3760    to those specified in this document may be registered only by
   3761    standardization or by way of an RFC-documented, IESG-approved,
   3762    Experimental protocol extension.
   3763 
   3764 9. References
   3765 
   3766    [1]  American National Standards Institute (formerly United States of
   3767         America Standards Institute), X3.4, 1968, "USA Code for
   3768         Information Interchange". ANSI X3.4-1968 has been replaced by
   3769         newer versions with slight modifications, but the 1968 version
   3770         remains definitive for the Internet.
   3771 
   3772    [2]  Braden, R., "Requirements for Internet hosts - application and
   3773         support", STD 3, RFC 1123, October 1989.
   3774 
   3775    [3]  Butler, M., Chase, D., Goldberger, J., Postel, J. and J.
   3776         Reynolds, "Post Office Protocol - version 2", RFC 937, February
   3777         1985.
   3778 
   3779    [4]  Callas, J., Donnerhacke, L., Finney, H. and R. Thayer, "OpenPGP
   3780         Message Format", RFC 2440, November 1998.
   3781 
   3782    [5]  Crispin, M., "Interactive Mail Access Protocol - Version 2", RFC
   3783         1176, August 1990.
   3784 
   3785    [6]  Crispin, M., "Internet Message Access Protocol - Version 4", RFC
   3786         2060, December 1996.
   3787 
   3788    [7]  Crocker, D., "Standard for the Format of ARPA Internet Text
   3789         Messages", RFC 822, August 1982.
   3790 
   3791    [8]  Crocker, D. and P. Overell, Eds., "Augmented BNF for Syntax
   3792         Specifications: ABNF", RFC 2234, November 1997.
   3793 
   3794    [9]  De Winter, J., "SMTP Service Extension for Remote Message Queue
   3795         Starting", RFC 1985, August 1996.
   3796 
   3797    [10] Fajman, R., "An Extensible Message Format for Message
   3798         Disposition Notifications", RFC 2298, March 1998.
   3799 
   3800    [11] Freed, N, "Behavior of and Requirements for Internet Firewalls",
   3801         RFC 2979, October 2000.
   3802 
   3803    [12] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
   3804         Extensions (MIME) Part One: Format of Internet Message Bodies",
   3805         RFC 2045, December 1996.
   3806 
   3807 
   3808 
   3809 
   3810 Klensin                     Standards Track                    [Page 68]
   3811 
   3812 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3813 
   3814 
   3815    [13] Freed, N., "SMTP Service Extension for Command Pipelining", RFC
   3816         2920, September 2000.
   3817 
   3818    [14] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security
   3819         Multiparts for MIME: Multipart/Signed and Multipart/Encrypted",
   3820         RFC 1847, October 1995.
   3821 
   3822    [15] Gellens, R. and J. Klensin, "Message Submission", RFC 2476,
   3823         December 1998.
   3824 
   3825    [16] Kille, S., "Mapping between X.400 and RFC822/MIME", RFC 2156,
   3826         January 1998.
   3827 
   3828    [17] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
   3829         Architecture", RFC 2373, July 1998.
   3830 
   3831    [18] Klensin, J., Freed, N. and K. Moore, "SMTP Service Extension for
   3832         Message Size Declaration", STD 10, RFC 1870, November 1995.
   3833 
   3834    [19] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker,
   3835         "SMTP Service Extensions", STD 10, RFC 1869, November 1995.
   3836 
   3837    [20] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker,
   3838         "SMTP Service Extension for 8bit-MIMEtransport", RFC 1652, July
   3839         1994.
   3840 
   3841    [21] Lambert, M., "PCMAIL: A distributed mail system for personal
   3842         computers", RFC 1056, July 1988.
   3843 
   3844    [22] Mockapetris, P., "Domain names - implementation and
   3845         specification", STD 13, RFC 1035, November 1987.
   3846 
   3847         Mockapetris, P., "Domain names - concepts and facilities", STD
   3848         13, RFC 1034, November 1987.
   3849 
   3850    [23] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part
   3851         Three: Message Header Extensions for Non-ASCII Text", RFC 2047,
   3852         December 1996.
   3853 
   3854    [24] Moore, K., "SMTP Service Extension for Delivery Status
   3855         Notifications", RFC 1891, January 1996.
   3856 
   3857    [25] Moore, K., and G. Vaudreuil, "An Extensible Message Format for
   3858         Delivery Status Notifications", RFC 1894, January 1996.
   3859 
   3860    [26] Myers, J. and M. Rose, "Post Office Protocol - Version 3", STD
   3861         53, RFC 1939, May 1996.
   3862 
   3863 
   3864 
   3865 
   3866 Klensin                     Standards Track                    [Page 69]
   3867 
   3868 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3869 
   3870 
   3871    [27] Partridge, C., "Mail routing and the domain system", RFC 974,
   3872         January 1986.
   3873 
   3874    [28] Partridge, C., "Duplicate messages and SMTP", RFC 1047, February
   3875         1988.
   3876 
   3877    [29] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
   3878         Program Protocol Specification", STD 7, RFC 793, September 1981.
   3879 
   3880    [30] Postel, J., "Simple Mail Transfer Protocol", RFC 821, August
   3881         1982.
   3882 
   3883    [31] Ramsdell, B., Ed., "S/MIME Version 3 Message Specification", RFC
   3884         2633, June 1999.
   3885 
   3886    [32] Resnick, P., Ed., "Internet Message Format", RFC 2822, April
   3887         2001.
   3888 
   3889    [33] Vaudreuil, G., "SMTP Service Extensions for Transmission of
   3890         Large and Binary MIME Messages", RFC 1830, August 1995.
   3891 
   3892    [34] Vaudreuil, G., "Enhanced Mail System Status Codes", RFC 1893,
   3893         January 1996.
   3894 
   3895 10. Editor's Address
   3896 
   3897    John C. Klensin
   3898    AT&T Laboratories
   3899    99 Bedford St
   3900    Boston, MA 02111 USA
   3901 
   3902    Phone: 617-574-3076
   3903    EMail: klensin@research.att.com
   3904 
   3905 11. Acknowledgments
   3906 
   3907    Many people worked long and hard on the many iterations of this
   3908    document.  There was wide-ranging debate in the IETF DRUMS Working
   3909    Group, both on its mailing list and in face to face discussions,
   3910    about many technical issues and the role of a revised standard for
   3911    Internet mail transport, and many contributors helped form the
   3912    wording in this specification.  The hundreds of participants in the
   3913    many discussions since RFC 821 was produced are too numerous to
   3914    mention, but they all helped this document become what it is.
   3915 
   3916 
   3917 
   3918 
   3919 
   3920 
   3921 
   3922 Klensin                     Standards Track                    [Page 70]
   3923 
   3924 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3925 
   3926 
   3927 APPENDICES
   3928 
   3929 A. TCP Transport Service
   3930 
   3931    The TCP connection supports the transmission of 8-bit bytes.  The
   3932    SMTP data is 7-bit ASCII characters.  Each character is transmitted
   3933    as an 8-bit byte with the high-order bit cleared to zero.  Service
   3934    extensions may modify this rule to permit transmission of full 8-bit
   3935    data bytes as part of the message body, but not in SMTP commands or
   3936    responses.
   3937 
   3938 B. Generating SMTP Commands from RFC 822 Headers
   3939 
   3940    Some systems use RFC 822 headers (only) in a mail submission
   3941    protocol, or otherwise generate SMTP commands from RFC 822 headers
   3942    when such a message is handed to an MTA from a UA.  While the MTA-UA
   3943    protocol is a private matter, not covered by any Internet Standard,
   3944    there are problems with this approach.  For example, there have been
   3945    repeated problems with proper handling of "bcc" copies and
   3946    redistribution lists when information that conceptually belongs to a
   3947    mail envelopes is not separated early in processing from header
   3948    information (and kept separate).
   3949 
   3950    It is recommended that the UA provide its initial ("submission
   3951    client") MTA with an envelope separate from the message itself.
   3952    However, if the envelope is not supplied, SMTP commands SHOULD be
   3953    generated as follows:
   3954 
   3955    1. Each recipient address from a TO, CC, or BCC header field SHOULD
   3956       be copied to a RCPT command (generating multiple message copies if
   3957       that is required for queuing or delivery).  This includes any
   3958       addresses listed in a RFC 822 "group".  Any BCC fields SHOULD then
   3959       be removed from the headers.  Once this process is completed, the
   3960       remaining headers SHOULD be checked to verify that at least one
   3961       To:, Cc:, or Bcc: header remains.  If none do, then a bcc: header
   3962       with no additional information SHOULD be inserted as specified in
   3963       [32].
   3964 
   3965    2. The return address in the MAIL command SHOULD, if possible, be
   3966       derived from the system's identity for the submitting (local)
   3967       user, and the "From:" header field otherwise.  If there is a
   3968       system identity available, it SHOULD also be copied to the Sender
   3969       header field if it is different from the address in the From
   3970       header field.  (Any Sender field that was already there SHOULD be
   3971       removed.)  Systems may provide a way for submitters to override
   3972       the envelope return address, but may want to restrict its use to
   3973       privileged users.  This will not prevent mail forgery, but may
   3974       lessen its incidence; see section 7.1.
   3975 
   3976 
   3977 
   3978 Klensin                     Standards Track                    [Page 71]
   3979 
   3980 RFC 2821             Simple Mail Transfer Protocol            April 2001
   3981 
   3982 
   3983    When an MTA is being used in this way, it bears responsibility for
   3984    ensuring that the message being transmitted is valid.  The mechanisms
   3985    for checking that validity, and for handling (or returning) messages
   3986    that are not valid at the time of arrival, are part of the MUA-MTA
   3987    interface and not covered by this specification.
   3988 
   3989    A submission protocol based on Standard RFC 822 information alone
   3990    MUST NOT be used to gateway a message from a foreign (non-SMTP) mail
   3991    system into an SMTP environment.  Additional information to construct
   3992    an envelope must come from some source in the other environment,
   3993    whether supplemental headers or the foreign system's envelope.
   3994 
   3995    Attempts to gateway messages using only their header "to" and "cc"
   3996    fields have repeatedly caused mail loops and other behavior adverse
   3997    to the proper functioning of the Internet mail environment.  These
   3998    problems have been especially common when the message originates from
   3999    an Internet mailing list and is distributed into the foreign
   4000    environment using envelope information.  When these messages are then
   4001    processed by a header-only remailer, loops back to the Internet
   4002    environment (and the mailing list) are almost inevitable.
   4003 
   4004 C. Source Routes
   4005 
   4006    Historically, the <reverse-path> was a reverse source routing list of
   4007    hosts and a source mailbox.  The first host in the <reverse-path>
   4008    SHOULD be the host sending the MAIL command.  Similarly, the
   4009    <forward-path> may be a source routing lists of hosts and a
   4010    destination mailbox.  However, in general, the <forward-path> SHOULD
   4011    contain only a mailbox and domain name, relying on the domain name
   4012    system to supply routing information if required.  The use of source
   4013    routes is deprecated; while servers MUST be prepared to receive and
   4014    handle them as discussed in section 3.3 and F.2, clients SHOULD NOT
   4015    transmit them and this section was included only to provide context.
   4016 
   4017    For relay purposes, the forward-path may be a source route of the
   4018    form "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully-
   4019    qualified domain names.  This form is used to emphasize the
   4020    distinction between an address and a route.  The mailbox is an
   4021    absolute address, and the route is information about how to get
   4022    there.  The two concepts should not be confused.
   4023 
   4024    If source routes are used, RFC 821 and the text below should be
   4025    consulted for the mechanisms for constructing and updating the
   4026    forward- and reverse-paths.
   4027 
   4028 
   4029 
   4030 
   4031 
   4032 
   4033 
   4034 Klensin                     Standards Track                    [Page 72]
   4035 
   4036 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4037 
   4038 
   4039    The SMTP server transforms the command arguments by moving its own
   4040    identifier (its domain name or that of any domain for which it is
   4041    acting as a mail exchanger), if it appears, from the forward-path to
   4042    the beginning of the reverse-path.
   4043 
   4044    Notice that the forward-path and reverse-path appear in the SMTP
   4045    commands and replies, but not necessarily in the message.  That is,
   4046    there is no need for these paths and especially this syntax to appear
   4047    in the "To:" , "From:", "CC:", etc. fields of the message header.
   4048    Conversely, SMTP servers MUST NOT derive final message delivery
   4049    information from message header fields.
   4050 
   4051    When the list of hosts is present, it is a "reverse" source route and
   4052    indicates that the mail was relayed through each host on the list
   4053    (the first host in the list was the most recent relay).  This list is
   4054    used as a source route to return non-delivery notices to the sender.
   4055    As each relay host adds itself to the beginning of the list, it MUST
   4056    use its name as known in the transport environment to which it is
   4057    relaying the mail rather than that of the transport environment from
   4058    which the mail came (if they are different).
   4059 
   4060 D. Scenarios
   4061 
   4062    This section presents complete scenarios of several types of SMTP
   4063    sessions.  In the examples, "C:" indicates what is said by the SMTP
   4064    client, and "S:" indicates what is said by the SMTP server.
   4065 
   4066 D.1 A Typical SMTP Transaction Scenario
   4067 
   4068    This SMTP example shows mail sent by Smith at host bar.com, to Jones,
   4069    Green, and Brown at host foo.com.  Here we assume that host bar.com
   4070    contacts host foo.com directly.  The mail is accepted for Jones and
   4071    Brown.  Green does not have a mailbox at host foo.com.
   4072 
   4073       S: 220 foo.com Simple Mail Transfer Service Ready
   4074       C: EHLO bar.com
   4075       S: 250-foo.com greets bar.com
   4076       S: 250-8BITMIME
   4077       S: 250-SIZE
   4078       S: 250-DSN
   4079       S: 250 HELP
   4080       C: MAIL FROM:<Smith@bar.com>
   4081       S: 250 OK
   4082       C: RCPT TO:<Jones@foo.com>
   4083       S: 250 OK
   4084       C: RCPT TO:<Green@foo.com>
   4085       S: 550 No such user here
   4086       C: RCPT TO:<Brown@foo.com>
   4087 
   4088 
   4089 
   4090 Klensin                     Standards Track                    [Page 73]
   4091 
   4092 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4093 
   4094 
   4095       S: 250 OK
   4096       C: DATA
   4097       S: 354 Start mail input; end with <CRLF>.<CRLF>
   4098       C: Blah blah blah...
   4099       C: ...etc. etc. etc.
   4100       C: .
   4101       S: 250 OK
   4102       C: QUIT
   4103       S: 221 foo.com Service closing transmission channel
   4104 
   4105 D.2 Aborted SMTP Transaction Scenario
   4106 
   4107       S: 220 foo.com Simple Mail Transfer Service Ready
   4108       C: EHLO bar.com
   4109       S: 250-foo.com greets bar.com
   4110       S: 250-8BITMIME
   4111       S: 250-SIZE
   4112       S: 250-DSN
   4113       S: 250 HELP
   4114       C: MAIL FROM:<Smith@bar.com>
   4115       S: 250 OK
   4116       C: RCPT TO:<Jones@foo.com>
   4117       S: 250 OK
   4118       C: RCPT TO:<Green@foo.com>
   4119       S: 550 No such user here
   4120       C: RSET
   4121       S: 250 OK
   4122       C: QUIT
   4123       S: 221 foo.com Service closing transmission channel
   4124 
   4125 D.3 Relayed Mail Scenario
   4126 
   4127    Step 1  --  Source Host to Relay Host
   4128 
   4129       S: 220 foo.com Simple Mail Transfer Service Ready
   4130       C: EHLO bar.com
   4131       S: 250-foo.com greets bar.com
   4132       S: 250-8BITMIME
   4133       S: 250-SIZE
   4134       S: 250-DSN
   4135       S: 250 HELP
   4136       C: MAIL FROM:<JQP@bar.com>
   4137       S: 250 OK
   4138       C: RCPT TO:<@foo.com:Jones@XYZ.COM>
   4139       S: 250 OK
   4140       C: DATA
   4141       S: 354 Start mail input; end with <CRLF>.<CRLF>
   4142       C: Date: Thu, 21 May 1998 05:33:29 -0700
   4143 
   4144 
   4145 
   4146 Klensin                     Standards Track                    [Page 74]
   4147 
   4148 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4149 
   4150 
   4151       C: From: John Q. Public <JQP@bar.com>
   4152       C: Subject:  The Next Meeting of the Board
   4153       C: To: Jones@xyz.com
   4154       C:
   4155       C: Bill:
   4156       C: The next meeting of the board of directors will be
   4157       C: on Tuesday.
   4158       C:                         John.
   4159       C: .
   4160       S: 250 OK
   4161       C: QUIT
   4162       S: 221 foo.com Service closing transmission channel
   4163 
   4164    Step 2  --  Relay Host to Destination Host
   4165 
   4166       S: 220 xyz.com Simple Mail Transfer Service Ready
   4167       C: EHLO foo.com
   4168       S: 250 xyz.com is on the air
   4169       C: MAIL FROM:<@foo.com:JQP@bar.com>
   4170       S: 250 OK
   4171       C: RCPT TO:<Jones@XYZ.COM>
   4172       S: 250 OK
   4173       C: DATA
   4174       S: 354 Start mail input; end with <CRLF>.<CRLF>
   4175       C: Received: from bar.com by foo.com ; Thu, 21 May 1998
   4176       C:     05:33:29 -0700
   4177       C: Date: Thu, 21 May 1998 05:33:22 -0700
   4178       C: From: John Q. Public <JQP@bar.com>
   4179       C: Subject:  The Next Meeting of the Board
   4180       C: To: Jones@xyz.com
   4181       C:
   4182       C: Bill:
   4183       C: The next meeting of the board of directors will be
   4184       C: on Tuesday.
   4185       C:                         John.
   4186       C: .
   4187       S: 250 OK
   4188       C: QUIT
   4189       S: 221 foo.com Service closing transmission channel
   4190 
   4191 D.4 Verifying and Sending Scenario
   4192 
   4193       S: 220 foo.com Simple Mail Transfer Service Ready
   4194       C: EHLO bar.com
   4195       S: 250-foo.com greets bar.com
   4196       S: 250-8BITMIME
   4197       S: 250-SIZE
   4198       S: 250-DSN
   4199 
   4200 
   4201 
   4202 Klensin                     Standards Track                    [Page 75]
   4203 
   4204 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4205 
   4206 
   4207       S: 250-VRFY
   4208       S: 250 HELP
   4209       C: VRFY Crispin
   4210       S: 250 Mark Crispin <Admin.MRC@foo.com>
   4211       C: SEND FROM:<EAK@bar.com>
   4212       S: 250 OK
   4213       C: RCPT TO:<Admin.MRC@foo.com>
   4214       S: 250 OK
   4215       C: DATA
   4216       S: 354 Start mail input; end with <CRLF>.<CRLF>
   4217       C: Blah blah blah...
   4218       C: ...etc. etc. etc.
   4219       C: .
   4220       S: 250 OK
   4221       C: QUIT
   4222       S: 221 foo.com Service closing transmission channel
   4223 
   4224 E. Other Gateway Issues
   4225 
   4226    In general, gateways between the Internet and other mail systems
   4227    SHOULD attempt to preserve any layering semantics across the
   4228    boundaries between the two mail systems involved.  Gateway-
   4229    translation approaches that attempt to take shortcuts by mapping,
   4230    (such as envelope information from one system to the message headers
   4231    or body of another) have generally proven to be inadequate in
   4232    important ways.  Systems translating between environments that do not
   4233    support both envelopes and headers and Internet mail must be written
   4234    with the understanding that some information loss is almost
   4235    inevitable.
   4236 
   4237 F. Deprecated Features of RFC 821
   4238 
   4239    A few features of RFC 821 have proven to be problematic and SHOULD
   4240    NOT be used in Internet mail.
   4241 
   4242 F.1 TURN
   4243 
   4244    This command, described in RFC 821, raises important security issues
   4245    since, in the absence of strong authentication of the host requesting
   4246    that the client and server switch roles, it can easily be used to
   4247    divert mail from its correct destination.  Its use is deprecated;
   4248    SMTP systems SHOULD NOT use it unless the server can authenticate the
   4249    client.
   4250 
   4251 
   4252 
   4253 
   4254 
   4255 
   4256 
   4257 
   4258 Klensin                     Standards Track                    [Page 76]
   4259 
   4260 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4261 
   4262 
   4263 F.2 Source Routing
   4264 
   4265    RFC 821 utilized the concept of explicit source routing to get mail
   4266    from one host to another via a series of relays.  The requirement to
   4267    utilize source routes in regular mail traffic was eliminated by the
   4268    introduction of the domain name system "MX" record and the last
   4269    significant justification for them was eliminated by the
   4270    introduction, in RFC 1123, of a clear requirement that addresses
   4271    following an "@" must all be fully-qualified domain names.
   4272    Consequently, the only remaining justifications for the use of source
   4273    routes are support for very old SMTP clients or MUAs and in mail
   4274    system debugging.  They can, however, still be useful in the latter
   4275    circumstance and for routing mail around serious, but temporary,
   4276    problems such as problems with the relevant DNS records.
   4277 
   4278    SMTP servers MUST continue to accept source route syntax as specified
   4279    in the main body of this document and in RFC 1123.  They MAY, if
   4280    necessary, ignore the routes and utilize only the target domain in
   4281    the address.  If they do utilize the source route, the message MUST
   4282    be sent to the first domain shown in the address.  In particular, a
   4283    server MUST NOT guess at shortcuts within the source route.
   4284 
   4285    Clients SHOULD NOT utilize explicit source routing except under
   4286    unusual circumstances, such as debugging or potentially relaying
   4287    around firewall or mail system configuration errors.
   4288 
   4289 F.3 HELO
   4290 
   4291    As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to
   4292    HELO when the server will accept the former.  Servers must continue
   4293    to accept and process HELO in order to support older clients.
   4294 
   4295 F.4 #-literals
   4296 
   4297    RFC 821 provided for specifying an Internet address as a decimal
   4298    integer host number prefixed by a pound sign, "#".  In practice, that
   4299    form has been obsolete since the introduction of TCP/IP.  It is
   4300    deprecated and MUST NOT be used.
   4301 
   4302 F.5 Dates and Years
   4303 
   4304    When dates are inserted into messages by SMTP clients or servers
   4305    (e.g., in trace fields), four-digit years MUST BE used.  Two-digit
   4306    years are deprecated; three-digit years were never permitted in the
   4307    Internet mail system.
   4308 
   4309 
   4310 
   4311 
   4312 
   4313 
   4314 Klensin                     Standards Track                    [Page 77]
   4315 
   4316 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4317 
   4318 
   4319 F.6 Sending versus Mailing
   4320 
   4321    In addition to specifying a mechanism for delivering messages to
   4322    user's mailboxes, RFC 821 provided additional, optional, commands to
   4323    deliver messages directly to the user's terminal screen.  These
   4324    commands (SEND, SAML, SOML) were rarely implemented, and changes in
   4325    workstation technology and the introduction of other protocols may
   4326    have rendered them obsolete even where they are implemented.
   4327 
   4328    Clients SHOULD NOT provide SEND, SAML, or SOML as services.  Servers
   4329    MAY implement them.  If they are implemented by servers, the
   4330    implementation model specified in RFC 821 MUST be used and the
   4331    command names MUST be published in the response to the EHLO command.
   4332 
   4333 
   4334 
   4335 
   4336 
   4337 
   4338 
   4339 
   4340 
   4341 
   4342 
   4343 
   4344 
   4345 
   4346 
   4347 
   4348 
   4349 
   4350 
   4351 
   4352 
   4353 
   4354 
   4355 
   4356 
   4357 
   4358 
   4359 
   4360 
   4361 
   4362 
   4363 
   4364 
   4365 
   4366 
   4367 
   4368 
   4369 
   4370 Klensin                     Standards Track                    [Page 78]
   4371 
   4372 RFC 2821             Simple Mail Transfer Protocol            April 2001
   4373 
   4374 
   4375 Full Copyright Statement
   4376 
   4377    Copyright (C) The Internet Society (2001).  All Rights Reserved.
   4378 
   4379    This document and translations of it may be copied and furnished to
   4380    others, and derivative works that comment on or otherwise explain it
   4381    or assist in its implementation may be prepared, copied, published
   4382    and distributed, in whole or in part, without restriction of any
   4383    kind, provided that the above copyright notice and this paragraph are
   4384    included on all such copies and derivative works.  However, this
   4385    document itself may not be modified in any way, such as by removing
   4386    the copyright notice or references to the Internet Society or other
   4387    Internet organizations, except as needed for the purpose of
   4388    developing Internet standards in which case the procedures for
   4389    copyrights defined in the Internet Standards process must be
   4390    followed, or as required to translate it into languages other than
   4391    English.
   4392 
   4393    The limited permissions granted above are perpetual and will not be
   4394    revoked by the Internet Society or its successors or assigns.
   4395 
   4396    This document and the information contained herein is provided on an
   4397    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   4398    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   4399    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   4400    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   4401    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
   4402 
   4403 Acknowledgement
   4404 
   4405    Funding for the RFC Editor function is currently provided by the
   4406    Internet Society.
   4407 
   4408 
   4409 
   4410 
   4411 
   4412 
   4413 
   4414 
   4415 
   4416 
   4417 
   4418 
   4419 
   4420 
   4421 
   4422 
   4423 
   4424 
   4425 
   4426 Klensin                     Standards Track                    [Page 79]
   4427