rfc2821.txt
上传用户:horngjaan
上传日期:2009-12-12
资源大小:2882k
文件大小:188k
源码类别:

Email服务器

开发平台:

C#

  1.    The last command in a session MUST be the QUIT command.  The QUIT
  2.    command cannot be used at any other time in a session, but SHOULD be
  3.    used by the client SMTP to request connection closure, even when no
  4.    session opening command was sent and accepted.
  5. 4.1.5 Private-use Commands
  6.    As specified in section 2.2.2, commands starting in "X" may be used
  7.    by bilateral agreement between the client (sending) and server
  8.    (receiving) SMTP agents.  An SMTP server that does not recognize such
  9.    a command is expected to reply with "500 Command not recognized".  An
  10.    extended SMTP server MAY list the feature names associated with these
  11.    private commands in the response to the EHLO command.
  12.    Commands sent or accepted by SMTP systems that do not start with "X"
  13.    MUST conform to the requirements of section 2.2.2.
  14. 4.2 SMTP Replies
  15.    Replies to SMTP commands serve to ensure the synchronization of
  16.    requests and actions in the process of mail transfer and to guarantee
  17.    that the SMTP client always knows the state of the SMTP server.
  18.    Every command MUST generate exactly one reply.
  19. Klensin                     Standards Track                    [Page 40]
  20. RFC 2821             Simple Mail Transfer Protocol            April 2001
  21.    The details of the command-reply sequence are described in section
  22.    4.3.
  23.    An SMTP reply consists of a three digit number (transmitted as three
  24.    numeric characters) followed by some text unless specified otherwise
  25.    in this document.  The number is for use by automata to determine
  26.    what state to enter next; the text is for the human user.  The three
  27.    digits contain enough encoded information that the SMTP client need
  28.    not examine the text and may either discard it or pass it on to the
  29.    user, as appropriate.  Exceptions are as noted elsewhere in this
  30.    document.  In particular, the 220, 221, 251, 421, and 551 reply codes
  31.    are associated with message text that must be parsed and interpreted
  32.    by machines.  In the general case, the text may be receiver dependent
  33.    and context dependent, so there are likely to be varying texts for
  34.    each reply code.  A discussion of the theory of reply codes is given
  35.    in section 4.2.1.  Formally, a reply is defined to be the sequence: a
  36.    three-digit code, <SP>, one line of text, and <CRLF>, or a multiline
  37.    reply (as defined in section 4.2.1).  Since, in violation of this
  38.    specification, the text is sometimes not sent, clients which do not
  39.    receive it SHOULD be prepared to process the code alone (with or
  40.    without a trailing space character).  Only the EHLO, EXPN, and HELP
  41.    commands are expected to result in multiline replies in normal
  42.    circumstances, however, multiline replies are allowed for any
  43.    command.
  44.    In ABNF, server responses are:
  45.       Greeting = "220 " Domain [ SP text ] CRLF
  46.       Reply-line = Reply-code [ SP text ] CRLF
  47.    where "Greeting" appears only in the 220 response that announces that
  48.    the server is opening its part of the connection.
  49.    An SMTP server SHOULD send only the reply codes listed in this
  50.    document.  An SMTP server SHOULD use the text shown in the examples
  51.    whenever appropriate.
  52.    An SMTP client MUST determine its actions only by the reply code, not
  53.    by the text (except for the "change of address" 251 and 551 and, if
  54.    necessary, 220, 221, and 421 replies); in the general case, any text,
  55.    including no text at all (although senders SHOULD NOT send bare
  56.    codes), MUST be acceptable.  The space (blank) following the reply
  57.    code is considered part of the text.  Whenever possible, a receiver-
  58.    SMTP SHOULD test the first digit (severity indication) of the reply
  59.    code.
  60. Klensin                     Standards Track                    [Page 41]
  61. RFC 2821             Simple Mail Transfer Protocol            April 2001
  62.    The list of codes that appears below MUST NOT be construed as
  63.    permanent.  While the addition of new codes should be a rare and
  64.    significant activity, with supplemental information in the textual
  65.    part of the response being preferred, new codes may be added as the
  66.    result of new Standards or Standards-track specifications.
  67.    Consequently, a sender-SMTP MUST be prepared to handle codes not
  68.    specified in this document and MUST do so by interpreting the first
  69.    digit only.
  70. 4.2.1 Reply Code Severities and Theory
  71.    The three digits of the reply each have a special significance.  The
  72.    first digit denotes whether the response is good, bad or incomplete.
  73.    An unsophisticated SMTP client, or one that receives an unexpected
  74.    code, will be able to determine its next action (proceed as planned,
  75.    redo, retrench, etc.) by examining this first digit.  An SMTP client
  76.    that wants to know approximately what kind of error occurred (e.g.,
  77.    mail system error, command syntax error) may examine the second
  78.    digit.  The third digit and any supplemental information that may be
  79.    present is reserved for the finest gradation of information.
  80.    There are five values for the first digit of the reply code:
  81.    1yz   Positive Preliminary reply
  82.       The command has been accepted, but the requested action is being
  83.       held in abeyance, pending confirmation of the information in this
  84.       reply.  The SMTP client should send another command specifying
  85.       whether to continue or abort the action.  Note: unextended SMTP
  86.       does not have any commands that allow this type of reply, and so
  87.       does not have continue or abort commands.
  88.    2yz   Positive Completion reply
  89.       The requested action has been successfully completed.  A new
  90.       request may be initiated.
  91.    3yz   Positive Intermediate reply
  92.       The command has been accepted, but the requested action is being
  93.       held in abeyance, pending receipt of further information.  The
  94.       SMTP client should send another command specifying this
  95.       information.  This reply is used in command sequence groups (i.e.,
  96.       in DATA).
  97.    4yz   Transient Negative Completion reply
  98.       The command was not accepted, and the requested action did not
  99.       occur.  However, the error condition is temporary and the action
  100.       may be requested again.  The sender should return to the beginning
  101.       of the command sequence (if any).  It is difficult to assign a
  102.       meaning to "transient" when two different sites (receiver- and
  103. Klensin                     Standards Track                    [Page 42]
  104. RFC 2821             Simple Mail Transfer Protocol            April 2001
  105.       sender-SMTP agents) must agree on the interpretation.  Each reply
  106.       in this category might have a different time value, but the SMTP
  107.       client is encouraged to try again.  A rule of thumb to determine
  108.       whether a reply fits into the 4yz or the 5yz category (see below)
  109.       is that replies are 4yz if they can be successful if repeated
  110.       without any change in command form or in properties of the sender
  111.       or receiver (that is, the command is repeated identically and the
  112.       receiver does not put up a new implementation.)
  113.    5yz   Permanent Negative Completion reply
  114.       The command was not accepted and the requested action did not
  115.       occur.  The SMTP client is discouraged from repeating the exact
  116.       request (in the same sequence).  Even some "permanent" error
  117.       conditions can be corrected, so the human user may want to direct
  118.       the SMTP client to reinitiate the command sequence by direct
  119.       action at some point in the future (e.g., after the spelling has
  120.       been changed, or the user has altered the account status).
  121.    The second digit encodes responses in specific categories:
  122.    x0z   Syntax: These replies refer to syntax errors, syntactically
  123.       correct commands that do not fit any functional category, and
  124.       unimplemented or superfluous commands.
  125.    x1z   Information:  These are replies to requests for information,
  126.       such as status or help.
  127.    x2z   Connections: These are replies referring to the transmission
  128.       channel.
  129.    x3z   Unspecified.
  130.    x4z   Unspecified.
  131.    x5z   Mail system: These replies indicate the status of the receiver
  132.       mail system vis-a-vis the requested transfer or other mail system
  133.       action.
  134.    The third digit gives a finer gradation of meaning in each category
  135.    specified by the second digit.  The list of replies illustrates this.
  136.    Each reply text is recommended rather than mandatory, and may even
  137.    change according to the command with which it is associated.  On the
  138.    other hand, the reply codes must strictly follow the specifications
  139.    in this section.  Receiver implementations should not invent new
  140.    codes for slightly different situations from the ones described here,
  141.    but rather adapt codes already defined.
  142. Klensin                     Standards Track                    [Page 43]
  143. RFC 2821             Simple Mail Transfer Protocol            April 2001
  144.    For example, a command such as NOOP, whose successful execution does
  145.    not offer the SMTP client any new information, will return a 250
  146.    reply.  The reply is 502 when the command requests an unimplemented
  147.    non-site-specific action.  A refinement of that is the 504 reply for
  148.    a command that is implemented, but that requests an unimplemented
  149.    parameter.
  150.    The reply text may be longer than a single line; in these cases the
  151.    complete text must be marked so the SMTP client knows when it can
  152.    stop reading the reply.  This requires a special format to indicate a
  153.    multiple line reply.
  154.    The format for multiline replies requires that every line, except the
  155.    last, begin with the reply code, followed immediately by a hyphen,
  156.    "-" (also known as minus), followed by text.  The last line will
  157.    begin with the reply code, followed immediately by <SP>, optionally
  158.    some text, and <CRLF>.  As noted above, servers SHOULD send the <SP>
  159.    if subsequent text is not sent, but clients MUST be prepared for it
  160.    to be omitted.
  161.    For example:
  162.       123-First line
  163.       123-Second line
  164.       123-234 text beginning with numbers
  165.       123 The last line
  166.    In many cases the SMTP client then simply needs to search for a line
  167.    beginning with the reply code followed by <SP> or <CRLF> and ignore
  168.    all preceding lines.  In a few cases, there is important data for the
  169.    client in the reply "text".  The client will be able to identify
  170.    these cases from the current context.
  171. 4.2.2 Reply Codes by Function Groups
  172.       500 Syntax error, command unrecognized
  173.          (This may include errors such as command line too long)
  174.       501 Syntax error in parameters or arguments
  175.       502 Command not implemented  (see section 4.2.4)
  176.       503 Bad sequence of commands
  177.       504 Command parameter not implemented
  178.       211 System status, or system help reply
  179.       214 Help message
  180.          (Information on how to use the receiver or the meaning of a
  181.          particular non-standard command; this reply is useful only
  182.          to the human user)
  183. Klensin                     Standards Track                    [Page 44]
  184. RFC 2821             Simple Mail Transfer Protocol            April 2001
  185.       220 <domain> Service ready
  186.       221 <domain> Service closing transmission channel
  187.       421 <domain> Service not available, closing transmission channel
  188.          (This may be a reply to any command if the service knows it
  189.          must shut down)
  190.       250 Requested mail action okay, completed
  191.       251 User not local; will forward to <forward-path>
  192.          (See section 3.4)
  193.       252 Cannot VRFY user, but will accept message and attempt
  194.           delivery
  195.          (See section 3.5.3)
  196.       450 Requested mail action not taken: mailbox unavailable
  197.          (e.g., mailbox busy)
  198.       550 Requested action not taken: mailbox unavailable
  199.          (e.g., mailbox not found, no access, or command rejected
  200.          for policy reasons)
  201.       451 Requested action aborted: error in processing
  202.       551 User not local; please try <forward-path>
  203.          (See section 3.4)
  204.       452 Requested action not taken: insufficient system storage
  205.       552 Requested mail action aborted: exceeded storage allocation
  206.       553 Requested action not taken: mailbox name not allowed
  207.          (e.g., mailbox syntax incorrect)
  208.       354 Start mail input; end with <CRLF>.<CRLF>
  209.       554 Transaction failed (Or, in the case of a connection-opening
  210.           response, "No SMTP service here")
  211. 4.2.3  Reply Codes in Numeric Order
  212.       211 System status, or system help reply
  213.       214 Help message
  214.          (Information on how to use the receiver or the meaning of a
  215.          particular non-standard command; this reply is useful only
  216.          to the human user)
  217.       220 <domain> Service ready
  218.       221 <domain> Service closing transmission channel
  219.       250 Requested mail action okay, completed
  220.       251 User not local; will forward to <forward-path>
  221.          (See section 3.4)
  222.       252 Cannot VRFY user, but will accept message and attempt
  223.          delivery
  224.          (See section 3.5.3)
  225.       354 Start mail input; end with <CRLF>.<CRLF>
  226. Klensin                     Standards Track                    [Page 45]
  227. RFC 2821             Simple Mail Transfer Protocol            April 2001
  228.       421 <domain> Service not available, closing transmission channel
  229.          (This may be a reply to any command if the service knows it
  230.          must shut down)
  231.       450 Requested mail action not taken: mailbox unavailable
  232.          (e.g., mailbox busy)
  233.       451 Requested action aborted: local error in processing
  234.       452 Requested action not taken: insufficient system storage
  235.       500 Syntax error, command unrecognized
  236.          (This may include errors such as command line too long)
  237.       501 Syntax error in parameters or arguments
  238.       502 Command not implemented (see section 4.2.4)
  239.       503 Bad sequence of commands
  240.       504 Command parameter not implemented
  241.       550 Requested action not taken: mailbox unavailable
  242.          (e.g., mailbox not found, no access, or command rejected
  243.          for policy reasons)
  244.       551 User not local; please try <forward-path>
  245.          (See section 3.4)
  246.       552 Requested mail action aborted: exceeded storage allocation
  247.       553 Requested action not taken: mailbox name not allowed
  248.          (e.g., mailbox syntax incorrect)
  249.       554 Transaction failed  (Or, in the case of a connection-opening
  250.           response, "No SMTP service here")
  251. 4.2.4 Reply Code 502
  252.    Questions have been raised as to when reply code 502 (Command not
  253.    implemented) SHOULD be returned in preference to other codes.  502
  254.    SHOULD be used when the command is actually recognized by the SMTP
  255.    server, but not implemented.  If the command is not recognized, code
  256.    500 SHOULD be returned.  Extended SMTP systems MUST NOT list
  257.    capabilities in response to EHLO for which they will return 502 (or
  258.    500) replies.
  259. 4.2.5 Reply Codes After DATA and the Subsequent <CRLF>.<CRLF>
  260.    When an SMTP server returns a positive completion status (2yz code)
  261.    after the DATA command is completed with <CRLF>.<CRLF>, it accepts
  262.    responsibility for:
  263.    -  delivering the message (if the recipient mailbox exists), or
  264.    -  if attempts to deliver the message fail due to transient
  265.       conditions, retrying delivery some reasonable number of times at
  266.       intervals as specified in section 4.5.4.
  267. Klensin                     Standards Track                    [Page 46]
  268. RFC 2821             Simple Mail Transfer Protocol            April 2001
  269.    -  if attempts to deliver the message fail due to permanent
  270.       conditions, or if repeated attempts to deliver the message fail
  271.       due to transient conditions, returning appropriate notification to
  272.       the sender of the original message (using the address in the SMTP
  273.       MAIL command).
  274.    When an SMTP server returns a permanent error status (5yz) code after
  275.    the DATA command is completed with <CRLF>.<CRLF>, it MUST NOT make
  276.    any subsequent attempt to deliver that message.  The SMTP client
  277.    retains responsibility for delivery of that message and may either
  278.    return it to the user or requeue it for a subsequent attempt (see
  279.    section 4.5.4.1).
  280.    The user who originated the message SHOULD be able to interpret the
  281.    return of a transient failure status (by mail message or otherwise)
  282.    as a non-delivery indication, just as a permanent failure would be
  283.    interpreted.  I.e., if the client SMTP successfully handles these
  284.    conditions, the user will not receive such a reply.
  285.    When an SMTP server returns a permanent error status (5yz) code after
  286.    the DATA command is completely with <CRLF>.<CRLF>, it MUST NOT make
  287.    any subsequent attempt to deliver the message.  As with temporary
  288.    error status codes, the SMTP client retains responsibility for the
  289.    message, but SHOULD not again attempt delivery to the same server
  290.    without user review and intervention of the message.
  291. 4.3 Sequencing of Commands and Replies
  292. 4.3.1 Sequencing Overview
  293.    The communication between the sender and receiver is an alternating
  294.    dialogue, controlled by the sender.  As such, the sender issues a
  295.    command and the receiver responds with a reply.  Unless other
  296.    arrangements are negotiated through service extensions, the sender
  297.    MUST wait for this response before sending further commands.
  298.    One important reply is the connection greeting.  Normally, a receiver
  299.    will send a 220 "Service ready" reply when the connection is
  300.    completed.  The sender SHOULD wait for this greeting message before
  301.    sending any commands.
  302.    Note: all the greeting-type replies have the official name (the
  303.    fully-qualified primary domain name) of the server host as the first
  304.    word following the reply code.  Sometimes the host will have no
  305.    meaningful name.  See 4.1.3 for a discussion of alternatives in these
  306.    situations.
  307. Klensin                     Standards Track                    [Page 47]
  308. RFC 2821             Simple Mail Transfer Protocol            April 2001
  309.    For example,
  310.       220 ISIF.USC.EDU Service ready
  311.    or
  312.       220 mail.foo.com SuperSMTP v 6.1.2 Service ready
  313.    or
  314.       220 [10.0.0.1] Clueless host service ready
  315.    The table below lists alternative success and failure replies for
  316.    each command.  These SHOULD be strictly adhered to: a receiver may
  317.    substitute text in the replies, but the meaning and action implied by
  318.    the code numbers and by the specific command reply sequence cannot be
  319.    altered.
  320. 4.3.2 Command-Reply Sequences
  321.    Each command is listed with its usual possible replies.  The prefixes
  322.    used before the possible replies are "I" for intermediate, "S" for
  323.    success, and "E" for error.  Since some servers may generate other
  324.    replies under special circumstances, and to allow for future
  325.    extension, SMTP clients SHOULD, when possible, interpret only the
  326.    first digit of the reply and MUST be prepared to deal with
  327.    unrecognized reply codes by interpreting the first digit only.
  328.    Unless extended using the mechanisms described in section 2.2, SMTP
  329.    servers MUST NOT transmit reply codes to an SMTP client that are
  330.    other than three digits or that do not start in a digit between 2 and
  331.    5 inclusive.
  332.    These sequencing rules and, in principle, the codes themselves, can
  333.    be extended or modified by SMTP extensions offered by the server and
  334.    accepted (requested) by the client.
  335.    In addition to the codes listed below, any SMTP command can return
  336.    any of the following codes if the corresponding unusual circumstances
  337.    are encountered:
  338.    500  For the "command line too long" case or if the command name was
  339.       not recognized.  Note that producing a "command not recognized"
  340.       error in response to the required subset of these commands is a
  341.       violation of this specification.
  342.    501  Syntax error in command or arguments.  In order to provide for
  343.       future extensions, commands that are specified in this document as
  344.       not accepting arguments (DATA, RSET, QUIT) SHOULD return a 501
  345.       message if arguments are supplied in the absence of EHLO-
  346.       advertised extensions.
  347.    421  Service shutting down and closing transmission channel
  348. Klensin                     Standards Track                    [Page 48]
  349. RFC 2821             Simple Mail Transfer Protocol            April 2001
  350.    Specific sequences are:
  351.    CONNECTION ESTABLISHMENT
  352.       S: 220
  353.       E: 554
  354.    EHLO or HELO
  355.       S: 250
  356.       E: 504, 550
  357.    MAIL
  358.       S: 250
  359.       E: 552, 451, 452, 550, 553, 503
  360.    RCPT
  361.       S: 250, 251 (but see section 3.4 for discussion of 251 and 551)
  362.       E: 550, 551, 552, 553, 450, 451, 452, 503, 550
  363.    DATA
  364.       I: 354 -> data -> S: 250
  365.                         E: 552, 554, 451, 452
  366.       E: 451, 554, 503
  367.    RSET
  368.       S: 250
  369.    VRFY
  370.       S: 250, 251, 252
  371.       E: 550, 551, 553, 502, 504
  372.    EXPN
  373.       S: 250, 252
  374.       E: 550, 500, 502, 504
  375.    HELP
  376.       S: 211, 214
  377.       E: 502, 504
  378.    NOOP
  379.       S: 250
  380.    QUIT
  381.       S: 221
  382. 4.4 Trace Information
  383.    When an SMTP server receives a message for delivery or further
  384.    processing, it MUST insert trace ("time stamp" or "Received")
  385.    information at the beginning of the message content, as discussed in
  386.    section 4.1.1.4.
  387.    This line MUST be structured as follows:
  388.    -  The FROM field, which MUST be supplied in an SMTP environment,
  389.       SHOULD contain both (1) the name of the source host as presented
  390.       in the EHLO command and (2) an address literal containing the IP
  391.       address of the source, determined from the TCP connection.
  392. Klensin                     Standards Track                    [Page 49]
  393. RFC 2821             Simple Mail Transfer Protocol            April 2001
  394.    -  The ID field MAY contain an "@" as suggested in RFC 822, but this
  395.       is not required.
  396.    -  The FOR field MAY contain a list of <path> entries when multiple
  397.       RCPT commands have been given.  This may raise some security
  398.       issues and is usually not desirable; see section 7.2.
  399.    An Internet mail program MUST NOT change a Received: line that was
  400.    previously added to the message header.  SMTP servers MUST prepend
  401.    Received lines to messages; they MUST NOT change the order of
  402.    existing lines or insert Received lines in any other location.
  403.    As the Internet grows, comparability of Received fields is important
  404.    for detecting problems, especially slow relays.  SMTP servers that
  405.    create Received fields SHOULD use explicit offsets in the dates
  406.    (e.g., -0800), rather than time zone names of any type.  Local time
  407.    (with an offset) is preferred to UT when feasible.  This formulation
  408.    allows slightly more information about local circumstances to be
  409.    specified.  If UT is needed, the receiver need merely do some simple
  410.    arithmetic to convert the values.  Use of UT loses information about
  411.    the time zone-location of the server.  If it is desired to supply a
  412.    time zone name, it SHOULD be included in a comment.
  413.    When the delivery SMTP server makes the "final delivery" of a
  414.    message, it inserts a return-path line at the beginning of the mail
  415.    data.  This use of return-path is required; mail systems MUST support
  416.    it.  The return-path line preserves the information in the <reverse-
  417.    path> from the MAIL command.  Here, final delivery means the message
  418.    has left the SMTP environment.  Normally, this would mean it had been
  419.    delivered to the destination user or an associated mail drop, but in
  420.    some cases it may be further processed and transmitted by another
  421.    mail system.
  422.    It is possible for the mailbox in the return path to be different
  423.    from the actual sender's mailbox, for example, if error responses are
  424.    to be delivered to a special error handling mailbox rather than to
  425.    the message sender.  When mailing lists are involved, this
  426.    arrangement is common and useful as a means of directing errors to
  427.    the list maintainer rather than the message originator.
  428.    The text above implies that the final mail data will begin with a
  429.    return path line, followed by one or more time stamp lines.  These
  430.    lines will be followed by the mail data headers and body [32].
  431.    It is sometimes difficult for an SMTP server to determine whether or
  432.    not it is making final delivery since forwarding or other operations
  433.    may occur after the message is accepted for delivery.  Consequently,
  434. Klensin                     Standards Track                    [Page 50]
  435. RFC 2821             Simple Mail Transfer Protocol            April 2001
  436.    any further (forwarding, gateway, or relay) systems MAY remove the
  437.    return path and rebuild the MAIL command as needed to ensure that
  438.    exactly one such line appears in a delivered message.
  439.    A message-originating SMTP system SHOULD NOT send a message that
  440.    already contains a Return-path header.  SMTP servers performing a
  441.    relay function MUST NOT inspect the message data, and especially not
  442.    to the extent needed to determine if Return-path headers are present.
  443.    SMTP servers making final delivery MAY remove Return-path headers
  444.    before adding their own.
  445.    The primary purpose of the Return-path is to designate the address to
  446.    which messages indicating non-delivery or other mail system failures
  447.    are to be sent.  For this to be unambiguous, exactly one return path
  448.    SHOULD be present when the message is delivered.  Systems using RFC
  449.    822 syntax with non-SMTP transports SHOULD designate an unambiguous
  450.    address, associated with the transport envelope, to which error
  451.    reports (e.g., non-delivery messages) should be sent.
  452.    Historical note: Text in RFC 822 that appears to contradict the use
  453.    of the Return-path header (or the envelope reverse path address from
  454.    the MAIL command) as the destination for error messages is not
  455.    applicable on the Internet.  The reverse path address (as copied into
  456.    the Return-path) MUST be used as the target of any mail containing
  457.    delivery error messages.
  458.    In particular:
  459.    -  a gateway from SMTP->elsewhere SHOULD insert a return-path header,
  460.       unless it is known that the "elsewhere" transport also uses
  461.       Internet domain addresses and maintains the envelope sender
  462.       address separately.
  463.    -  a gateway from elsewhere->SMTP SHOULD delete any return-path
  464.       header present in the message, and either copy that information to
  465.       the SMTP envelope or combine it with information present in the
  466.       envelope of the other transport system to construct the reverse
  467.       path argument to the MAIL command in the SMTP envelope.
  468.    The server must give special treatment to cases in which the
  469.    processing following the end of mail data indication is only
  470.    partially successful.  This could happen if, after accepting several
  471.    recipients and the mail data, the SMTP server finds that the mail
  472.    data could be successfully delivered to some, but not all, of the
  473.    recipients.  In such cases, the response to the DATA command MUST be
  474.    an OK reply.  However, the SMTP server MUST compose and send an
  475.    "undeliverable mail" notification message to the originator of the
  476.    message.
  477. Klensin                     Standards Track                    [Page 51]
  478. RFC 2821             Simple Mail Transfer Protocol            April 2001
  479.    A single notification listing all of the failed recipients or
  480.    separate notification messages MUST be sent for each failed
  481.    recipient.  For economy of processing by the sender, the former is
  482.    preferred when possible.  All undeliverable mail notification
  483.    messages are sent using the MAIL command (even if they result from
  484.    processing the obsolete SEND, SOML, or SAML commands) and use a null
  485.    return path as discussed in section 3.7.
  486.    The time stamp line and the return path line are formally defined as
  487.    follows:
  488. Return-path-line = "Return-Path:" FWS Reverse-path <CRLF>
  489. Time-stamp-line = "Received:" FWS Stamp <CRLF>
  490. Stamp = From-domain By-domain Opt-info ";"  FWS date-time
  491.       ; where "date-time" is as defined in [32]
  492.       ; but the "obs-" forms, especially two-digit
  493.       ; years, are prohibited in SMTP and MUST NOT be used.
  494. From-domain = "FROM" FWS Extended-Domain CFWS
  495. By-domain = "BY" FWS Extended-Domain CFWS
  496. Extended-Domain = Domain /
  497.            ( Domain FWS "(" TCP-info ")" ) /
  498.            ( Address-literal FWS "(" TCP-info ")" )
  499. TCP-info = Address-literal / ( Domain FWS Address-literal )
  500.       ; Information derived by server from TCP connection
  501.       ; not client EHLO.
  502. Opt-info = [Via] [With] [ID] [For]
  503. Via = "VIA" FWS Link CFWS
  504. With = "WITH" FWS Protocol CFWS
  505. ID = "ID" FWS String / msg-id CFWS
  506. For = "FOR" FWS 1*( Path / Mailbox ) CFWS
  507. Link = "TCP" / Addtl-Link
  508. Addtl-Link = Atom
  509.       ; Additional standard names for links are registered with the
  510.          ; Internet Assigned Numbers Authority (IANA).  "Via" is
  511.          ; primarily of value with non-Internet transports.  SMTP
  512. Klensin                     Standards Track                    [Page 52]
  513. RFC 2821             Simple Mail Transfer Protocol            April 2001
  514.          ; servers SHOULD NOT use unregistered names.
  515. Protocol = "ESMTP" / "SMTP" / Attdl-Protocol
  516. Attdl-Protocol = Atom
  517.       ; Additional standard names for protocols are registered with the
  518.          ; Internet Assigned Numbers Authority (IANA).  SMTP servers
  519.          ; SHOULD NOT use unregistered names.
  520. 4.5 Additional Implementation Issues
  521. 4.5.1 Minimum Implementation
  522.    In order to make SMTP workable, the following minimum implementation
  523.    is required for all receivers.  The following commands MUST be
  524.    supported to conform to this specification:
  525.       EHLO
  526.       HELO
  527.       MAIL
  528.       RCPT
  529.       DATA
  530.       RSET
  531.       NOOP
  532.       QUIT
  533.       VRFY
  534.    Any system that includes an SMTP server supporting mail relaying or
  535.    delivery MUST support the reserved mailbox "postmaster" as a case-
  536.    insensitive local name.  This postmaster address is not strictly
  537.    necessary if the server always returns 554 on connection opening (as
  538.    described in section 3.1).  The requirement to accept mail for
  539.    postmaster implies that RCPT commands which specify a mailbox for
  540.    postmaster at any of the domains for which the SMTP server provides
  541.    mail service, as well as the special case of "RCPT TO:<Postmaster>"
  542.    (with no domain specification), MUST be supported.
  543.    SMTP systems are expected to make every reasonable effort to accept
  544.    mail directed to Postmaster from any other system on the Internet.
  545.    In extreme cases --such as to contain a denial of service attack or
  546.    other breach of security-- an SMTP server may block mail directed to
  547.    Postmaster.  However, such arrangements SHOULD be narrowly tailored
  548.    so as to avoid blocking messages which are not part of such attacks.
  549. 4.5.2 Transparency
  550.    Without some provision for data transparency, the character sequence
  551.    "<CRLF>.<CRLF>" ends the mail text and cannot be sent by the user.
  552.    In general, users are not aware of such "forbidden" sequences.  To
  553. Klensin                     Standards Track                    [Page 53]
  554. RFC 2821             Simple Mail Transfer Protocol            April 2001
  555.    allow all user composed text to be transmitted transparently, the
  556.    following procedures are used:
  557.    -  Before sending a line of mail text, the SMTP client checks the
  558.       first character of the line.  If it is a period, one additional
  559.       period is inserted at the beginning of the line.
  560.    -  When a line of mail text is received by the SMTP server, it checks
  561.       the line.  If the line is composed of a single period, it is
  562.       treated as the end of mail indicator.  If the first character is a
  563.       period and there are other characters on the line, the first
  564.       character is deleted.
  565.    The mail data may contain any of the 128 ASCII characters.  All
  566.    characters are to be delivered to the recipient's mailbox, including
  567.    spaces, vertical and horizontal tabs, and other control characters.
  568.    If the transmission channel provides an 8-bit byte (octet) data
  569.    stream, the 7-bit ASCII codes are transmitted right justified in the
  570.    octets, with the high order bits cleared to zero.  See 3.7 for
  571.    special treatment of these conditions in SMTP systems serving a relay
  572.    function.
  573.    In some systems it may be necessary to transform the data as it is
  574.    received and stored.  This may be necessary for hosts that use a
  575.    different character set than ASCII as their local character set, that
  576.    store data in records rather than strings, or which use special
  577.    character sequences as delimiters inside mailboxes.  If such
  578.    transformations are necessary, they MUST be reversible, especially if
  579.    they are applied to mail being relayed.
  580. 4.5.3 Sizes and Timeouts
  581. 4.5.3.1 Size limits and minimums
  582.    There are several objects that have required minimum/maximum sizes.
  583.    Every implementation MUST be able to receive objects of at least
  584.    these sizes.  Objects larger than these sizes SHOULD be avoided when
  585.    possible.  However, some Internet mail constructs such as encoded
  586.    X.400 addresses [16] will often require larger objects: clients MAY
  587.    attempt to transmit these, but MUST be prepared for a server to
  588.    reject them if they cannot be handled by it.  To the maximum extent
  589.    possible, implementation techniques which impose no limits on the
  590.    length of these objects should be used.
  591.    local-part
  592.       The maximum total length of a user name or other local-part is 64
  593.       characters.
  594. Klensin                     Standards Track                    [Page 54]
  595. RFC 2821             Simple Mail Transfer Protocol            April 2001
  596.    domain
  597.       The maximum total length of a domain name or number is 255
  598.       characters.
  599.    path
  600.       The maximum total length of a reverse-path or forward-path is 256
  601.       characters (including the punctuation and element separators).
  602.    command line
  603.       The maximum total length of a command line including the command
  604.       word and the <CRLF> is 512 characters.  SMTP extensions may be
  605.       used to increase this limit.
  606.    reply line
  607.       The maximum total length of a reply line including the reply code
  608.       and the <CRLF> is 512 characters.  More information may be
  609.       conveyed through multiple-line replies.
  610.    text line
  611.       The maximum total length of a text line including the <CRLF> is
  612.       1000 characters (not counting the leading dot duplicated for
  613.       transparency).  This number may be increased by the use of SMTP
  614.       Service Extensions.
  615.    message content
  616.       The maximum total length of a message content (including any
  617.       message headers as well as the message body) MUST BE at least 64K
  618.       octets.  Since the introduction of Internet standards for
  619.       multimedia mail [12], message lengths on the Internet have grown
  620.       dramatically, and message size restrictions should be avoided if
  621.       at all possible.  SMTP server systems that must impose
  622.       restrictions SHOULD implement the "SIZE" service extension [18],
  623.       and SMTP client systems that will send large messages SHOULD
  624.       utilize it when possible.
  625.    recipients buffer
  626.       The minimum total number of recipients that must be buffered is
  627.       100 recipients.  Rejection of messages (for excessive recipients)
  628.       with fewer than 100 RCPT commands is a violation of this
  629.       specification.  The general principle that relaying SMTP servers
  630.       MUST NOT, and delivery SMTP servers SHOULD NOT, perform validation
  631.       tests on message headers suggests that rejecting a message based
  632.       on the total number of recipients shown in header fields is to be
  633.       discouraged.  A server which imposes a limit on the number of
  634.       recipients MUST behave in an orderly fashion,  such as to reject
  635.       additional addresses over its limit rather than silently
  636.       discarding addresses previously accepted.  A client that needs to
  637. Klensin                     Standards Track                    [Page 55]
  638. RFC 2821             Simple Mail Transfer Protocol            April 2001
  639.       deliver a message containing over 100 RCPT commands SHOULD be
  640.       prepared to transmit in 100-recipient "chunks" if the server
  641.       declines to accept more than 100 recipients in a single message.
  642.    Errors due to exceeding these limits may be reported by using the
  643.    reply codes.  Some examples of reply codes are:
  644.       500 Line too long.
  645.    or
  646.       501 Path too long
  647.    or
  648.       452 Too many recipients  (see below)
  649.    or
  650.       552 Too much mail data.
  651.    RFC 821 [30] incorrectly listed the error where an SMTP server
  652.    exhausts its implementation limit on the number of RCPT commands
  653.    ("too many recipients") as having reply code 552.  The correct reply
  654.    code for this condition is 452.  Clients SHOULD treat a 552 code in
  655.    this case as a temporary, rather than permanent, failure so the logic
  656.    below works.
  657.    When a conforming SMTP server encounters this condition, it has at
  658.    least 100 successful RCPT commands in its recipients buffer.  If the
  659.    server is able to accept the message, then at least these 100
  660.    addresses will be removed from the SMTP client's queue.  When the
  661.    client attempts retransmission of those addresses which received 452
  662.    responses, at least 100 of these will be able to fit in the SMTP
  663.    server's recipients buffer.  Each retransmission attempt which is
  664.    able to deliver anything will be able to dispose of at least 100 of
  665.    these recipients.
  666.    If an SMTP server has an implementation limit on the number of RCPT
  667.    commands and this limit is exhausted, it MUST use a response code of
  668.    452 (but the client SHOULD also be prepared for a 552, as noted
  669.    above).  If the server has a configured site-policy limitation on the
  670.    number of RCPT commands, it MAY instead use a 5XX response code.
  671.    This would be most appropriate if the policy limitation was intended
  672.    to apply if the total recipient count for a particular message body
  673.    were enforced even if that message body was sent in multiple mail
  674.    transactions.
  675. 4.5.3.2 Timeouts
  676.    An SMTP client MUST provide a timeout mechanism.  It MUST use per-
  677.    command timeouts rather than somehow trying to time the entire mail
  678.    transaction.  Timeouts SHOULD be easily reconfigurable, preferably
  679.    without recompiling the SMTP code.  To implement this, a timer is set
  680. Klensin                     Standards Track                    [Page 56]
  681. RFC 2821             Simple Mail Transfer Protocol            April 2001
  682.    for each SMTP command and for each buffer of the data transfer.  The
  683.    latter means that the overall timeout is inherently proportional to
  684.    the size of the message.
  685.    Based on extensive experience with busy mail-relay hosts, the minimum
  686.    per-command timeout values SHOULD be as follows:
  687.    Initial 220 Message: 5 minutes
  688.       An SMTP client process needs to distinguish between a failed TCP
  689.       connection and a delay in receiving the initial 220 greeting
  690.       message.  Many SMTP servers accept a TCP connection but delay
  691.       delivery of the 220 message until their system load permits more
  692.       mail to be processed.
  693.    MAIL Command: 5 minutes
  694.    RCPT Command: 5 minutes
  695.       A longer timeout is required if processing of mailing lists and
  696.       aliases is not deferred until after the message was accepted.
  697.    DATA Initiation: 2 minutes
  698.       This is while awaiting the "354 Start Input" reply to a DATA
  699.       command.
  700.    Data Block: 3 minutes
  701.       This is while awaiting the completion of each TCP SEND call
  702.       transmitting a chunk of data.
  703.    DATA Termination: 10 minutes.
  704.       This is while awaiting the "250 OK" reply.  When the receiver gets
  705.       the final period terminating the message data, it typically
  706.       performs processing to deliver the message to a user mailbox.  A
  707.       spurious timeout at this point would be very wasteful and would
  708.       typically result in delivery of multiple copies of the message,
  709.       since it has been successfully sent and the server has accepted
  710.       responsibility for delivery.  See section 6.1 for additional
  711.       discussion.
  712.    An SMTP server SHOULD have a timeout of at least 5 minutes while it
  713.    is awaiting the next command from the sender.
  714. 4.5.4 Retry Strategies
  715.    The common structure of a host SMTP implementation includes user
  716.    mailboxes, one or more areas for queuing messages in transit, and one
  717.    or more daemon processes for sending and receiving mail.  The exact
  718.    structure will vary depending on the needs of the users on the host
  719. Klensin                     Standards Track                    [Page 57]
  720. RFC 2821             Simple Mail Transfer Protocol            April 2001
  721.    and the number and size of mailing lists supported by the host.  We
  722.    describe several optimizations that have proved helpful, particularly
  723.    for mailers supporting high traffic levels.
  724.    Any queuing strategy MUST include timeouts on all activities on a
  725.    per-command basis.  A queuing strategy MUST NOT send error messages
  726.    in response to error messages under any circumstances.
  727. 4.5.4.1 Sending Strategy
  728.    The general model for an SMTP client is one or more processes that
  729.    periodically attempt to transmit outgoing mail.  In a typical system,
  730.    the program that composes a message has some method for requesting
  731.    immediate attention for a new piece of outgoing mail, while mail that
  732.    cannot be transmitted immediately MUST be queued and periodically
  733.    retried by the sender.  A mail queue entry will include not only the
  734.    message itself but also the envelope information.
  735.    The sender MUST delay retrying a particular destination after one
  736.    attempt has failed.  In general, the retry interval SHOULD be at
  737.    least 30 minutes; however, more sophisticated and variable strategies
  738.    will be beneficial when the SMTP client can determine the reason for
  739.    non-delivery.
  740.    Retries continue until the message is transmitted or the sender gives
  741.    up; the give-up time generally needs to be at least 4-5 days.  The
  742.    parameters to the retry algorithm MUST be configurable.
  743.    A client SHOULD keep a list of hosts it cannot reach and
  744.    corresponding connection timeouts, rather than just retrying queued
  745.    mail items.
  746.    Experience suggests that failures are typically transient (the target
  747.    system or its connection has crashed), favoring a policy of two
  748.    connection attempts in the first hour the message is in the queue,
  749.    and then backing off to one every two or three hours.
  750.    The SMTP client can shorten the queuing delay in cooperation with the
  751.    SMTP server.  For example, if mail is received from a particular
  752.    address, it is likely that mail queued for that host can now be sent.
  753.    Application of this principle may, in many cases, eliminate the
  754.    requirement for an explicit "send queues now" function such as ETRN
  755.    [9].
  756.    The strategy may be further modified as a result of multiple
  757.    addresses per host (see below) to optimize delivery time vs. resource
  758.    usage.
  759. Klensin                     Standards Track                    [Page 58]
  760. RFC 2821             Simple Mail Transfer Protocol            April 2001
  761.    An SMTP client may have a large queue of messages for each
  762.    unavailable destination host.  If all of these messages were retried
  763.    in every retry cycle, there would be excessive Internet overhead and
  764.    the sending system would be blocked for a long period.  Note that an
  765.    SMTP client can generally determine that a delivery attempt has
  766.    failed only after a timeout of several minutes and even a one-minute
  767.    timeout per connection will result in a very large delay if retries
  768.    are repeated for dozens, or even hundreds, of queued messages to the
  769.    same host.
  770.    At the same time, SMTP clients SHOULD use great care in caching
  771.    negative responses from servers.  In an extreme case, if EHLO is
  772.    issued multiple times during the same SMTP connection, different
  773.    answers may be returned by the server.  More significantly, 5yz
  774.    responses to the MAIL command MUST NOT be cached.
  775.    When a mail message is to be delivered to multiple recipients, and
  776.    the SMTP server to which a copy of the message is to be sent is the
  777.    same for multiple recipients, then only one copy of the message
  778.    SHOULD be transmitted.  That is, the SMTP client SHOULD use the
  779.    command sequence:  MAIL, RCPT, RCPT,... RCPT, DATA instead of the
  780.    sequence: MAIL, RCPT, DATA, ..., MAIL, RCPT, DATA.  However, if there
  781.    are very many addresses, a limit on the number of RCPT commands per
  782.    MAIL command MAY be imposed.  Implementation of this efficiency
  783.    feature is strongly encouraged.
  784.    Similarly, to achieve timely delivery, the SMTP client MAY support
  785.    multiple concurrent outgoing mail transactions.  However, some limit
  786.    may be appropriate to protect the host from devoting all its
  787.    resources to mail.
  788. 4.5.4.2 Receiving Strategy
  789.    The SMTP server SHOULD attempt to keep a pending listen on the SMTP
  790.    port at all times.  This requires the support of multiple incoming
  791.    TCP connections for SMTP.  Some limit MAY be imposed but servers that
  792.    cannot handle more than one SMTP transaction at a time are not in
  793.    conformance with the intent of this specification.
  794.    As discussed above, when the SMTP server receives mail from a
  795.    particular host address, it could activate its own SMTP queuing
  796.    mechanisms to retry any mail pending for that host address.
  797. 4.5.5   Messages with a null reverse-path
  798.    There are several types of notification messages which are required
  799.    by existing and proposed standards to be sent with a null reverse
  800.    path, namely non-delivery notifications as discussed in section 3.7,
  801. Klensin                     Standards Track                    [Page 59]
  802. RFC 2821             Simple Mail Transfer Protocol            April 2001
  803.    other kinds of Delivery Status Notifications (DSNs) [24], and also
  804.    Message Disposition Notifications (MDNs) [10].  All of these kinds of
  805.    messages are notifications about a previous message, and they are
  806.    sent to the reverse-path of the previous mail message.  (If the
  807.    delivery of such a notification message fails, that usually indicates
  808.    a problem with the mail system of the host to which the notification
  809.    message is addressed.  For this reason, at some hosts the MTA is set
  810.    up to forward such failed notification messages to someone who is
  811.    able to fix problems with the mail system, e.g., via the postmaster
  812.    alias.)
  813.    All other types of messages (i.e., any message which is not required
  814.    by a standards-track RFC to have a null reverse-path) SHOULD be sent
  815.    with with a valid, non-null reverse-path.
  816.    Implementors of automated email processors should be careful to make
  817.    sure that the various kinds of messages with null reverse-path are
  818.    handled correctly, in particular such systems SHOULD NOT reply to
  819.    messages with null reverse-path.
  820. 5. Address Resolution and Mail Handling
  821.    Once an SMTP client lexically identifies a domain to which mail will
  822.    be delivered for processing (as described in sections 3.6 and 3.7), a
  823.    DNS lookup MUST be performed to resolve the domain name [22].  The
  824.    names are expected to be fully-qualified domain names (FQDNs):
  825.    mechanisms for inferring FQDNs from partial names or local aliases
  826.    are outside of this specification and, due to a history of problems,
  827.    are generally discouraged.  The lookup first attempts to locate an MX
  828.    record associated with the name.  If a CNAME record is found instead,
  829.    the resulting name is processed as if it were the initial name.  If
  830.    no MX records are found, but an A RR is found, the A RR is treated as
  831.    if it was associated with an implicit MX RR, with a preference of 0,
  832.    pointing to that host.  If one or more MX RRs are found for a given
  833.    name, SMTP systems MUST NOT utilize any A RRs associated with that
  834.    name unless they are located using the MX RRs; the "implicit MX" rule
  835.    above applies only if there are no MX records present.  If MX records
  836.    are present, but none of them are usable, this situation MUST be
  837.    reported as an error.
  838.    When the lookup succeeds, the mapping can result in a list of
  839.    alternative delivery addresses rather than a single address, because
  840.    of multiple MX records, multihoming, or both.  To provide reliable
  841.    mail transmission, the SMTP client MUST be able to try (and retry)
  842.    each of the relevant addresses in this list in order, until a
  843.    delivery attempt succeeds.  However, there MAY also be a configurable
  844.    limit on the number of alternate addresses that can be tried.  In any
  845.    case, the SMTP client SHOULD try at least two addresses.
  846. Klensin                     Standards Track                    [Page 60]
  847. RFC 2821             Simple Mail Transfer Protocol            April 2001
  848.    Two types of information is used to rank the host addresses: multiple
  849.    MX records, and multihomed hosts.
  850.    Multiple MX records contain a preference indication that MUST be used
  851.    in sorting (see below).  Lower numbers are more preferred than higher
  852.    ones.  If there are multiple destinations with the same preference
  853.    and there is no clear reason to favor one (e.g., by recognition of an
  854.    easily-reached address), then the sender-SMTP MUST randomize them to
  855.    spread the load across multiple mail exchangers for a specific
  856.    organization.
  857.    The destination host (perhaps taken from the preferred MX record) may
  858.    be multihomed, in which case the domain name resolver will return a
  859.    list of alternative IP addresses.  It is the responsibility of the
  860.    domain name resolver interface to have ordered this list by
  861.    decreasing preference if necessary, and SMTP MUST try them in the
  862.    order presented.
  863.    Although the capability to try multiple alternative addresses is
  864.    required, specific installations may want to limit or disable the use
  865.    of alternative addresses.  The question of whether a sender should
  866.    attempt retries using the different addresses of a multihomed host
  867.    has been controversial.  The main argument for using the multiple
  868.    addresses is that it maximizes the probability of timely delivery,
  869.    and indeed sometimes the probability of any delivery; the counter-
  870.    argument is that it may result in unnecessary resource use.  Note
  871.    that resource use is also strongly determined by the sending strategy
  872.    discussed in section 4.5.4.1.
  873.    If an SMTP server receives a message with a destination for which it
  874.    is a designated Mail eXchanger, it MAY relay the message (potentially
  875.    after having rewritten the MAIL FROM and/or RCPT TO addresses), make
  876.    final delivery of the message, or hand it off using some mechanism
  877.    outside the SMTP-provided transport environment.  Of course, neither
  878.    of the latter require that the list of MX records be examined
  879.    further.
  880.    If it determines that it should relay the message without rewriting
  881.    the address, it MUST sort the MX records to determine candidates for
  882.    delivery.  The records are first ordered by preference, with the
  883.    lowest-numbered records being most preferred.  The relay host MUST
  884.    then inspect the list for any of the names or addresses by which it
  885.    might be known in mail transactions.  If a matching record is found,
  886.    all records at that preference level and higher-numbered ones MUST be
  887.    discarded from consideration.  If there are no records left at that
  888.    point, it is an error condition, and the message MUST be returned as
  889.    undeliverable.  If records do remain, they SHOULD be tried, best
  890.    preference first, as described above.
  891. Klensin                     Standards Track                    [Page 61]
  892. RFC 2821             Simple Mail Transfer Protocol            April 2001
  893. 6. Problem Detection and Handling
  894. 6.1 Reliable Delivery and Replies by Email
  895.    When the receiver-SMTP accepts a piece of mail (by sending a "250 OK"
  896.    message in response to DATA), it is accepting responsibility for
  897.    delivering or relaying the message.  It must take this responsibility
  898.    seriously.  It MUST NOT lose the message for frivolous reasons, such
  899.    as because the host later crashes or because of a predictable
  900.    resource shortage.
  901.    If there is a delivery failure after acceptance of a message, the
  902.    receiver-SMTP MUST formulate and mail a notification message.  This
  903.    notification MUST be sent using a null ("<>") reverse path in the
  904.    envelope.  The recipient of this notification MUST be the address
  905.    from the envelope return path (or the Return-Path: line).  However,
  906.    if this address is null ("<>"), the receiver-SMTP MUST NOT send a
  907.    notification.  Obviously, nothing in this section can or should
  908.    prohibit local decisions (i.e., as part of the same system
  909.    environment as the receiver-SMTP) to log or otherwise transmit
  910.    information about null address events locally if that is desired.  If
  911.    the address is an explicit source route, it MUST be stripped down to
  912.    its final hop.
  913.    For example, suppose that an error notification must be sent for a
  914.    message that arrived with:
  915.       MAIL FROM:<@a,@b:user@d>
  916.    The notification message MUST be sent using:
  917.       RCPT TO:<user@d>
  918.    Some delivery failures after the message is accepted by SMTP will be
  919.    unavoidable.  For example, it may be impossible for the receiving
  920.    SMTP server to validate all the delivery addresses in RCPT command(s)
  921.    due to a "soft" domain system error, because the target is a mailing
  922.    list (see earlier discussion of RCPT), or because the server is
  923.    acting as a relay and has no immediate access to the delivering
  924.    system.
  925.    To avoid receiving duplicate messages as the result of timeouts, a
  926.    receiver-SMTP MUST seek to minimize the time required to respond to
  927.    the final <CRLF>.<CRLF> end of data indicator.  See RFC 1047 [28] for
  928.    a discussion of this problem.
  929. Klensin                     Standards Track                    [Page 62]
  930. RFC 2821             Simple Mail Transfer Protocol            April 2001
  931. 6.2 Loop Detection
  932.    Simple counting of the number of "Received:" headers in a message has
  933.    proven to be an effective, although rarely optimal, method of
  934.    detecting loops in mail systems.  SMTP servers using this technique
  935.    SHOULD use a large rejection threshold, normally at least 100
  936.    Received entries.  Whatever mechanisms are used, servers MUST contain
  937.    provisions for detecting and stopping trivial loops.
  938. 6.3 Compensating for Irregularities
  939.    Unfortunately, variations, creative interpretations, and outright
  940.    violations of Internet mail protocols do occur; some would suggest
  941.    that they occur quite frequently.  The debate as to whether a well-
  942.    behaved SMTP receiver or relay should reject a malformed message,
  943.    attempt to pass it on unchanged, or attempt to repair it to increase
  944.    the odds of successful delivery (or subsequent reply) began almost
  945.    with the dawn of structured network mail and shows no signs of
  946.    abating.  Advocates of rejection claim that attempted repairs are
  947.    rarely completely adequate and that rejection of bad messages is the
  948.    only way to get the offending software repaired.  Advocates of
  949.    "repair" or "deliver no matter what" argue that users prefer that
  950.    mail go through it if at all possible and that there are significant
  951.    market pressures in that direction.  In practice, these market
  952.    pressures may be more important to particular vendors than strict
  953.    conformance to the standards, regardless of the preference of the
  954.    actual developers.
  955.    The problems associated with ill-formed messages were exacerbated by
  956.    the introduction of the split-UA mail reading protocols [3, 26, 5,
  957.    21].  These protocols have encouraged the use of SMTP as a posting
  958.    protocol, and SMTP servers as relay systems for these client hosts
  959.    (which are often only intermittently connected to the Internet).
  960.    Historically, many of those client machines lacked some of the
  961.    mechanisms and information assumed by SMTP (and indeed, by the mail
  962.    format protocol [7]).  Some could not keep adequate track of time;
  963.    others had no concept of time zones; still others could not identify
  964.    their own names or addresses; and, of course, none could satisfy the
  965.    assumptions that underlay RFC 822's conception of authenticated
  966.    addresses.
  967.    In response to these weak SMTP clients, many SMTP systems now
  968.    complete messages that are delivered to them in incomplete or
  969.    incorrect form.  This strategy is generally considered appropriate
  970.    when the server can identify or authenticate the client, and there
  971.    are prior agreements between them.  By contrast, there is at best
  972.    great concern about fixes applied by a relay or delivery SMTP server
  973.    that has little or no knowledge of the user or client machine.
  974. Klensin                     Standards Track                    [Page 63]
  975. RFC 2821             Simple Mail Transfer Protocol            April 2001
  976.    The following changes to a message being processed MAY be applied
  977.    when necessary by an originating SMTP server, or one used as the
  978.    target of SMTP as an initial posting protocol:
  979.    -  Addition of a message-id field when none appears
  980.    -  Addition of a date, time or time zone when none appears
  981.    -  Correction of addresses to proper FQDN format
  982.    The less information the server has about the client, the less likely
  983.    these changes are to be correct and the more caution and conservatism
  984.    should be applied when considering whether or not to perform fixes
  985.    and how.  These changes MUST NOT be applied by an SMTP server that
  986.    provides an intermediate relay function.
  987.    In all cases, properly-operating clients supplying correct
  988.    information are preferred to corrections by the SMTP server.  In all
  989.    cases, documentation of actions performed by the servers (in trace
  990.    fields and/or header comments) is strongly encouraged.
  991. 7. Security Considerations
  992. 7.1 Mail Security and Spoofing
  993.    SMTP mail is inherently insecure in that it is feasible for even
  994.    fairly casual users to negotiate directly with receiving and relaying
  995.    SMTP servers and create messages that will trick a naive recipient
  996.    into believing that they came from somewhere else.  Constructing such
  997.    a message so that the "spoofed" behavior cannot be detected by an
  998.    expert is somewhat more difficult, but not sufficiently so as to be a
  999.    deterrent to someone who is determined and knowledgeable.
  1000.    Consequently, as knowledge of Internet mail increases, so does the
  1001.    knowledge that SMTP mail inherently cannot be authenticated, or
  1002.    integrity checks provided, at the transport level.  Real mail
  1003.    security lies only in end-to-end methods involving the message
  1004.    bodies, such as those which use digital signatures (see [14] and,
  1005.    e.g., PGP [4] or S/MIME [31]).
  1006.    Various protocol extensions and configuration options that provide
  1007.    authentication at the transport level (e.g., from an SMTP client to
  1008.    an SMTP server) improve somewhat on the traditional situation
  1009.    described above.  However, unless they are accompanied by careful
  1010.    handoffs of responsibility in a carefully-designed trust environment,
  1011.    they remain inherently weaker than end-to-end mechanisms which use
  1012.    digitally signed messages rather than depending on the integrity of
  1013.    the transport system.
  1014. Klensin                     Standards Track                    [Page 64]
  1015. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1016.    Efforts to make it more difficult for users to set envelope return
  1017.    path and header "From" fields to point to valid addresses other than
  1018.    their own are largely misguided: they frustrate legitimate
  1019.    applications in which mail is sent by one user on behalf of another
  1020.    or in which error (or normal) replies should be directed to a special
  1021.    address.  (Systems that provide convenient ways for users to alter
  1022.    these fields on a per-message basis should attempt to establish a
  1023.    primary and permanent mailbox address for the user so that Sender
  1024.    fields within the message data can be generated sensibly.)
  1025.    This specification does not further address the authentication issues
  1026.    associated with SMTP other than to advocate that useful functionality
  1027.    not be disabled in the hope of providing some small margin of
  1028.    protection against an ignorant user who is trying to fake mail.
  1029. 7.2 "Blind" Copies
  1030.    Addresses that do not appear in the message headers may appear in the
  1031.    RCPT commands to an SMTP server for a number of reasons.  The two
  1032.    most common involve the use of a mailing address as a "list exploder"
  1033.    (a single address that resolves into multiple addresses) and the
  1034.    appearance of "blind copies".  Especially when more than one RCPT
  1035.    command is present, and in order to avoid defeating some of the
  1036.    purpose of these mechanisms, SMTP clients and servers SHOULD NOT copy
  1037.    the full set of RCPT command arguments into the headers, either as
  1038.    part of trace headers or as informational or private-extension
  1039.    headers.  Since this rule is often violated in practice, and cannot
  1040.    be enforced, sending SMTP systems that are aware of "bcc" use MAY
  1041.    find it helpful to send each blind copy as a separate message
  1042.    transaction containing only a single RCPT command.
  1043.    There is no inherent relationship between either "reverse" (from
  1044.    MAIL, SAML, etc., commands) or "forward" (RCPT) addresses in the SMTP
  1045.    transaction ("envelope") and the addresses in the headers.  Receiving
  1046.    systems SHOULD NOT attempt to deduce such relationships and use them
  1047.    to alter the headers of the message for delivery.  The popular
  1048.    "Apparently-to" header is a violation of this principle as well as a
  1049.    common source of unintended information disclosure and SHOULD NOT be
  1050.    used.
  1051. 7.3 VRFY, EXPN, and Security
  1052.    As discussed in section 3.5, individual sites may want to disable
  1053.    either or both of VRFY or EXPN for security reasons.  As a corollary
  1054.    to the above, implementations that permit this MUST NOT appear to
  1055.    have verified addresses that are not, in fact, verified.  If a site
  1056. Klensin                     Standards Track                    [Page 65]
  1057. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1058.    disables these commands for security reasons, the SMTP server MUST
  1059.    return a 252 response, rather than a code that could be confused with
  1060.    successful or unsuccessful verification.
  1061.    Returning a 250 reply code with the address listed in the VRFY
  1062.    command after having checked it only for syntax violates this rule.
  1063.    Of course, an implementation that "supports" VRFY by always returning
  1064.    550 whether or not the address is valid is equally not in
  1065.    conformance.
  1066.    Within the last few years, the contents of mailing lists have become
  1067.    popular as an address information source for so-called "spammers."
  1068.    The use of EXPN to "harvest" addresses has increased as list
  1069.    administrators have installed protections against inappropriate uses
  1070.    of the lists themselves.  Implementations SHOULD still provide
  1071.    support for EXPN, but sites SHOULD carefully evaluate the tradeoffs.
  1072.    As authentication mechanisms are introduced into SMTP, some sites may
  1073.    choose to make EXPN available only to authenticated requestors.
  1074. 7.4 Information Disclosure in Announcements
  1075.    There has been an ongoing debate about the tradeoffs between the
  1076.    debugging advantages of announcing server type and version (and,
  1077.    sometimes, even server domain name) in the greeting response or in
  1078.    response to the HELP command and the disadvantages of exposing
  1079.    information that might be useful in a potential hostile attack.  The
  1080.    utility of the debugging information is beyond doubt.  Those who
  1081.    argue for making it available point out that it is far better to
  1082.    actually secure an SMTP server rather than hope that trying to
  1083.    conceal known vulnerabilities by hiding the server's precise identity
  1084.    will provide more protection.  Sites are encouraged to evaluate the
  1085.    tradeoff with that issue in mind; implementations are strongly
  1086.    encouraged to minimally provide for making type and version
  1087.    information available in some way to other network hosts.
  1088. 7.5 Information Disclosure in Trace Fields
  1089.    In some circumstances, such as when mail originates from within a LAN
  1090.    whose hosts are not directly on the public Internet, trace
  1091.    ("Received") fields produced in conformance with this specification
  1092.    may disclose host names and similar information that would not
  1093.    normally be available.  This ordinarily does not pose a problem, but
  1094.    sites with special concerns about name disclosure should be aware of
  1095.    it.  Also, the optional FOR clause should be supplied with caution or
  1096.    not at all when multiple recipients are involved lest it
  1097.    inadvertently disclose the identities of "blind copy" recipients to
  1098.    others.
  1099. Klensin                     Standards Track                    [Page 66]
  1100. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1101. 7.6 Information Disclosure in Message Forwarding
  1102.    As discussed in section 3.4, use of the 251 or 551 reply codes to
  1103.    identify the replacement address associated with a mailbox may
  1104.    inadvertently disclose sensitive information.  Sites that are
  1105.    concerned about those issues should ensure that they select and
  1106.    configure servers appropriately.
  1107. 7.7 Scope of Operation of SMTP Servers
  1108.    It is a well-established principle that an SMTP server may refuse to
  1109.    accept mail for any operational or technical reason that makes sense
  1110.    to the site providing the server.  However, cooperation among sites
  1111.    and installations makes the Internet possible.  If sites take
  1112.    excessive advantage of the right to reject traffic, the ubiquity of
  1113.    email availability (one of the strengths of the Internet) will be
  1114.    threatened; considerable care should be taken and balance maintained
  1115.    if a site decides to be selective about the traffic it will accept
  1116.    and process.
  1117.    In recent years, use of the relay function through arbitrary sites
  1118.    has been used as part of hostile efforts to hide the actual origins
  1119.    of mail.  Some sites have decided to limit the use of the relay
  1120.    function to known or identifiable sources, and implementations SHOULD
  1121.    provide the capability to perform this type of filtering.  When mail
  1122.    is rejected for these or other policy reasons, a 550 code SHOULD be
  1123.    used in response to EHLO, MAIL, or RCPT as appropriate.
  1124. 8. IANA Considerations
  1125.    IANA will maintain three registries in support of this specification.
  1126.    The first consists of SMTP service extensions with the associated
  1127.    keywords, and, as needed, parameters and verbs.  As specified in
  1128.    section 2.2.2, no entry may be made in this registry that starts in
  1129.    an "X".  Entries may be made only for service extensions (and
  1130.    associated keywords, parameters, or verbs) that are defined in
  1131.    standards-track or experimental RFCs specifically approved by the
  1132.    IESG for this purpose.
  1133.    The second registry consists of "tags" that identify forms of domain
  1134.    literals other than those for IPv4 addresses (specified in RFC 821
  1135.    and in this document) and IPv6 addresses (specified in this
  1136.    document).  Additional literal types require standardization before
  1137.    being used; none are anticipated at this time.
  1138.    The third, established by RFC 821 and renewed by this specification,
  1139.    is a registry of link and protocol identifiers to be used with the
  1140.    "via" and "with" subclauses of the time stamp ("Received: header")
  1141. Klensin                     Standards Track                    [Page 67]
  1142. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1143.    described in section 4.4.  Link and protocol identifiers in addition
  1144.    to those specified in this document may be registered only by
  1145.    standardization or by way of an RFC-documented, IESG-approved,
  1146.    Experimental protocol extension.
  1147. 9. References
  1148.    [1]  American National Standards Institute (formerly United States of
  1149.         America Standards Institute), X3.4, 1968, "USA Code for
  1150.         Information Interchange". ANSI X3.4-1968 has been replaced by
  1151.         newer versions with slight modifications, but the 1968 version
  1152.         remains definitive for the Internet.
  1153.    [2]  Braden, R., "Requirements for Internet hosts - application and
  1154.         support", STD 3, RFC 1123, October 1989.
  1155.    [3]  Butler, M., Chase, D., Goldberger, J., Postel, J. and J.
  1156.         Reynolds, "Post Office Protocol - version 2", RFC 937, February
  1157.         1985.
  1158.    [4]  Callas, J., Donnerhacke, L., Finney, H. and R. Thayer, "OpenPGP
  1159.         Message Format", RFC 2440, November 1998.
  1160.    [5]  Crispin, M., "Interactive Mail Access Protocol - Version 2", RFC
  1161.         1176, August 1990.
  1162.    [6]  Crispin, M., "Internet Message Access Protocol - Version 4", RFC
  1163.         2060, December 1996.
  1164.    [7]  Crocker, D., "Standard for the Format of ARPA Internet Text
  1165.         Messages", RFC 822, August 1982.
  1166.    [8]  Crocker, D. and P. Overell, Eds., "Augmented BNF for Syntax
  1167.         Specifications: ABNF", RFC 2234, November 1997.
  1168.    [9]  De Winter, J., "SMTP Service Extension for Remote Message Queue
  1169.         Starting", RFC 1985, August 1996.
  1170.    [10] Fajman, R., "An Extensible Message Format for Message
  1171.         Disposition Notifications", RFC 2298, March 1998.
  1172.    [11] Freed, N, "Behavior of and Requirements for Internet Firewalls",
  1173.         RFC 2979, October 2000.
  1174.    [12] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
  1175.         Extensions (MIME) Part One: Format of Internet Message Bodies",
  1176.         RFC 2045, December 1996.
  1177. Klensin                     Standards Track                    [Page 68]
  1178. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1179.    [13] Freed, N., "SMTP Service Extension for Command Pipelining", RFC
  1180.         2920, September 2000.
  1181.    [14] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security
  1182.         Multiparts for MIME: Multipart/Signed and Multipart/Encrypted",
  1183.         RFC 1847, October 1995.
  1184.    [15] Gellens, R. and J. Klensin, "Message Submission", RFC 2476,
  1185.         December 1998.
  1186.    [16] Kille, S., "Mapping between X.400 and RFC822/MIME", RFC 2156,
  1187.         January 1998.
  1188.    [17] Hinden, R and S. Deering, Eds. "IP Version 6 Addressing
  1189.         Architecture", RFC 2373, July 1998.
  1190.    [18] Klensin, J., Freed, N. and K. Moore, "SMTP Service Extension for
  1191.         Message Size Declaration", STD 10, RFC 1870, November 1995.
  1192.    [19] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker,
  1193.         "SMTP Service Extensions", STD 10, RFC 1869, November 1995.
  1194.    [20] Klensin, J., Freed, N., Rose, M., Stefferud, E. and D. Crocker,
  1195.         "SMTP Service Extension for 8bit-MIMEtransport", RFC 1652, July
  1196.         1994.
  1197.    [21] Lambert, M., "PCMAIL: A distributed mail system for personal
  1198.         computers", RFC 1056, July 1988.
  1199.    [22] Mockapetris, P., "Domain names - implementation and
  1200.         specification", STD 13, RFC 1035, November 1987.
  1201.         Mockapetris, P., "Domain names - concepts and facilities", STD
  1202.         13, RFC 1034, November 1987.
  1203.    [23] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part
  1204.         Three: Message Header Extensions for Non-ASCII Text", RFC 2047,
  1205.         December 1996.
  1206.    [24] Moore, K., "SMTP Service Extension for Delivery Status
  1207.         Notifications", RFC 1891, January 1996.
  1208.    [25] Moore, K., and G. Vaudreuil, "An Extensible Message Format for
  1209.         Delivery Status Notifications", RFC 1894, January 1996.
  1210.    [26] Myers, J. and M. Rose, "Post Office Protocol - Version 3", STD
  1211.         53, RFC 1939, May 1996.
  1212. Klensin                     Standards Track                    [Page 69]
  1213. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1214.    [27] Partridge, C., "Mail routing and the domain system", RFC 974,
  1215.         January 1986.
  1216.    [28] Partridge, C., "Duplicate messages and SMTP", RFC 1047, February
  1217.         1988.
  1218.    [29] Postel, J., ed., "Transmission Control Protocol - DARPA Internet
  1219.         Program Protocol Specification", STD 7, RFC 793, September 1981.
  1220.    [30] Postel, J., "Simple Mail Transfer Protocol", RFC 821, August
  1221.         1982.
  1222.    [31] Ramsdell, B., Ed., "S/MIME Version 3 Message Specification", RFC
  1223.         2633, June 1999.
  1224.    [32] Resnick, P., Ed., "Internet Message Format", RFC 2822, April
  1225.         2001.
  1226.    [33] Vaudreuil, G., "SMTP Service Extensions for Transmission of
  1227.         Large and Binary MIME Messages", RFC 1830, August 1995.
  1228.    [34] Vaudreuil, G., "Enhanced Mail System Status Codes", RFC 1893,
  1229.         January 1996.
  1230. 10. Editor's Address
  1231.    John C. Klensin
  1232.    AT&T Laboratories
  1233.    99 Bedford St
  1234.    Boston, MA 02111 USA
  1235.    Phone: 617-574-3076
  1236.    EMail: klensin@research.att.com
  1237. 11. Acknowledgments
  1238.    Many people worked long and hard on the many iterations of this
  1239.    document.  There was wide-ranging debate in the IETF DRUMS Working
  1240.    Group, both on its mailing list and in face to face discussions,
  1241.    about many technical issues and the role of a revised standard for
  1242.    Internet mail transport, and many contributors helped form the
  1243.    wording in this specification.  The hundreds of participants in the
  1244.    many discussions since RFC 821 was produced are too numerous to
  1245.    mention, but they all helped this document become what it is.
  1246. Klensin                     Standards Track                    [Page 70]
  1247. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1248. APPENDICES
  1249. A. TCP Transport Service
  1250.    The TCP connection supports the transmission of 8-bit bytes.  The
  1251.    SMTP data is 7-bit ASCII characters.  Each character is transmitted
  1252.    as an 8-bit byte with the high-order bit cleared to zero.  Service
  1253.    extensions may modify this rule to permit transmission of full 8-bit
  1254.    data bytes as part of the message body, but not in SMTP commands or
  1255.    responses.
  1256. B. Generating SMTP Commands from RFC 822 Headers
  1257.    Some systems use RFC 822 headers (only) in a mail submission
  1258.    protocol, or otherwise generate SMTP commands from RFC 822 headers
  1259.    when such a message is handed to an MTA from a UA.  While the MTA-UA
  1260.    protocol is a private matter, not covered by any Internet Standard,
  1261.    there are problems with this approach.  For example, there have been
  1262.    repeated problems with proper handling of "bcc" copies and
  1263.    redistribution lists when information that conceptually belongs to a
  1264.    mail envelopes is not separated early in processing from header
  1265.    information (and kept separate).
  1266.    It is recommended that the UA provide its initial ("submission
  1267.    client") MTA with an envelope separate from the message itself.
  1268.    However, if the envelope is not supplied, SMTP commands SHOULD be
  1269.    generated as follows:
  1270.    1. Each recipient address from a TO, CC, or BCC header field SHOULD
  1271.       be copied to a RCPT command (generating multiple message copies if
  1272.       that is required for queuing or delivery).  This includes any
  1273.       addresses listed in a RFC 822 "group".  Any BCC fields SHOULD then
  1274.       be removed from the headers.  Once this process is completed, the
  1275.       remaining headers SHOULD be checked to verify that at least one
  1276.       To:, Cc:, or Bcc: header remains.  If none do, then a bcc: header
  1277.       with no additional information SHOULD be inserted as specified in
  1278.       [32].
  1279.    2. The return address in the MAIL command SHOULD, if possible, be
  1280.       derived from the system's identity for the submitting (local)
  1281.       user, and the "From:" header field otherwise.  If there is a
  1282.       system identity available, it SHOULD also be copied to the Sender
  1283.       header field if it is different from the address in the From
  1284.       header field.  (Any Sender field that was already there SHOULD be
  1285.       removed.)  Systems may provide a way for submitters to override
  1286.       the envelope return address, but may want to restrict its use to
  1287.       privileged users.  This will not prevent mail forgery, but may
  1288.       lessen its incidence; see section 7.1.
  1289. Klensin                     Standards Track                    [Page 71]
  1290. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1291.    When an MTA is being used in this way, it bears responsibility for
  1292.    ensuring that the message being transmitted is valid.  The mechanisms
  1293.    for checking that validity, and for handling (or returning) messages
  1294.    that are not valid at the time of arrival, are part of the MUA-MTA
  1295.    interface and not covered by this specification.
  1296.    A submission protocol based on Standard RFC 822 information alone
  1297.    MUST NOT be used to gateway a message from a foreign (non-SMTP) mail
  1298.    system into an SMTP environment.  Additional information to construct
  1299.    an envelope must come from some source in the other environment,
  1300.    whether supplemental headers or the foreign system's envelope.
  1301.    Attempts to gateway messages using only their header "to" and "cc"
  1302.    fields have repeatedly caused mail loops and other behavior adverse
  1303.    to the proper functioning of the Internet mail environment.  These
  1304.    problems have been especially common when the message originates from
  1305.    an Internet mailing list and is distributed into the foreign
  1306.    environment using envelope information.  When these messages are then
  1307.    processed by a header-only remailer, loops back to the Internet
  1308.    environment (and the mailing list) are almost inevitable.
  1309. C. Source Routes
  1310.    Historically, the <reverse-path> was a reverse source routing list of
  1311.    hosts and a source mailbox.  The first host in the <reverse-path>
  1312.    SHOULD be the host sending the MAIL command.  Similarly, the
  1313.    <forward-path> may be a source routing lists of hosts and a
  1314.    destination mailbox.  However, in general, the <forward-path> SHOULD
  1315.    contain only a mailbox and domain name, relying on the domain name
  1316.    system to supply routing information if required.  The use of source
  1317.    routes is deprecated; while servers MUST be prepared to receive and
  1318.    handle them as discussed in section 3.3 and F.2, clients SHOULD NOT
  1319.    transmit them and this section was included only to provide context.
  1320.    For relay purposes, the forward-path may be a source route of the
  1321.    form "@ONE,@TWO:JOE@THREE", where ONE, TWO, and THREE MUST BE fully-
  1322.    qualified domain names.  This form is used to emphasize the
  1323.    distinction between an address and a route.  The mailbox is an
  1324.    absolute address, and the route is information about how to get
  1325.    there.  The two concepts should not be confused.
  1326.    If source routes are used, RFC 821 and the text below should be
  1327.    consulted for the mechanisms for constructing and updating the
  1328.    forward- and reverse-paths.
  1329. Klensin                     Standards Track                    [Page 72]
  1330. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1331.    The SMTP server transforms the command arguments by moving its own
  1332.    identifier (its domain name or that of any domain for which it is
  1333.    acting as a mail exchanger), if it appears, from the forward-path to
  1334.    the beginning of the reverse-path.
  1335.    Notice that the forward-path and reverse-path appear in the SMTP
  1336.    commands and replies, but not necessarily in the message.  That is,
  1337.    there is no need for these paths and especially this syntax to appear
  1338.    in the "To:" , "From:", "CC:", etc. fields of the message header.
  1339.    Conversely, SMTP servers MUST NOT derive final message delivery
  1340.    information from message header fields.
  1341.    When the list of hosts is present, it is a "reverse" source route and
  1342.    indicates that the mail was relayed through each host on the list
  1343.    (the first host in the list was the most recent relay).  This list is
  1344.    used as a source route to return non-delivery notices to the sender.
  1345.    As each relay host adds itself to the beginning of the list, it MUST
  1346.    use its name as known in the transport environment to which it is
  1347.    relaying the mail rather than that of the transport environment from
  1348.    which the mail came (if they are different).
  1349. D. Scenarios
  1350.    This section presents complete scenarios of several types of SMTP
  1351.    sessions.  In the examples, "C:" indicates what is said by the SMTP
  1352.    client, and "S:" indicates what is said by the SMTP server.
  1353. D.1 A Typical SMTP Transaction Scenario
  1354.    This SMTP example shows mail sent by Smith at host bar.com, to Jones,
  1355.    Green, and Brown at host foo.com.  Here we assume that host bar.com
  1356.    contacts host foo.com directly.  The mail is accepted for Jones and
  1357.    Brown.  Green does not have a mailbox at host foo.com.
  1358.       S: 220 foo.com Simple Mail Transfer Service Ready
  1359.       C: EHLO bar.com
  1360.       S: 250-foo.com greets bar.com
  1361.       S: 250-8BITMIME
  1362.       S: 250-SIZE
  1363.       S: 250-DSN
  1364.       S: 250 HELP
  1365.       C: MAIL FROM:<Smith@bar.com>
  1366.       S: 250 OK
  1367.       C: RCPT TO:<Jones@foo.com>
  1368.       S: 250 OK
  1369.       C: RCPT TO:<Green@foo.com>
  1370.       S: 550 No such user here
  1371.       C: RCPT TO:<Brown@foo.com>
  1372. Klensin                     Standards Track                    [Page 73]
  1373. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1374.       S: 250 OK
  1375.       C: DATA
  1376.       S: 354 Start mail input; end with <CRLF>.<CRLF>
  1377.       C: Blah blah blah...
  1378.       C: ...etc. etc. etc.
  1379.       C: .
  1380.       S: 250 OK
  1381.       C: QUIT
  1382.       S: 221 foo.com Service closing transmission channel
  1383. D.2 Aborted SMTP Transaction Scenario
  1384.       S: 220 foo.com Simple Mail Transfer Service Ready
  1385.       C: EHLO bar.com
  1386.       S: 250-foo.com greets bar.com
  1387.       S: 250-8BITMIME
  1388.       S: 250-SIZE
  1389.       S: 250-DSN
  1390.       S: 250 HELP
  1391.       C: MAIL FROM:<Smith@bar.com>
  1392.       S: 250 OK
  1393.       C: RCPT TO:<Jones@foo.com>
  1394.       S: 250 OK
  1395.       C: RCPT TO:<Green@foo.com>
  1396.       S: 550 No such user here
  1397.       C: RSET
  1398.       S: 250 OK
  1399.       C: QUIT
  1400.       S: 221 foo.com Service closing transmission channel
  1401. D.3 Relayed Mail Scenario
  1402.    Step 1  --  Source Host to Relay Host
  1403.       S: 220 foo.com Simple Mail Transfer Service Ready
  1404.       C: EHLO bar.com
  1405.       S: 250-foo.com greets bar.com
  1406.       S: 250-8BITMIME
  1407.       S: 250-SIZE
  1408.       S: 250-DSN
  1409.       S: 250 HELP
  1410.       C: MAIL FROM:<JQP@bar.com>
  1411.       S: 250 OK
  1412.       C: RCPT TO:<@foo.com:Jones@XYZ.COM>
  1413.       S: 250 OK
  1414.       C: DATA
  1415.       S: 354 Start mail input; end with <CRLF>.<CRLF>
  1416.       C: Date: Thu, 21 May 1998 05:33:29 -0700
  1417. Klensin                     Standards Track                    [Page 74]
  1418. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1419.       C: From: John Q. Public <JQP@bar.com>
  1420.       C: Subject:  The Next Meeting of the Board
  1421.       C: To: Jones@xyz.com
  1422.       C:
  1423.       C: Bill:
  1424.       C: The next meeting of the board of directors will be
  1425.       C: on Tuesday.
  1426.       C:                         John.
  1427.       C: .
  1428.       S: 250 OK
  1429.       C: QUIT
  1430.       S: 221 foo.com Service closing transmission channel
  1431.    Step 2  --  Relay Host to Destination Host
  1432.       S: 220 xyz.com Simple Mail Transfer Service Ready
  1433.       C: EHLO foo.com
  1434.       S: 250 xyz.com is on the air
  1435.       C: MAIL FROM:<@foo.com:JQP@bar.com>
  1436.       S: 250 OK
  1437.       C: RCPT TO:<Jones@XYZ.COM>
  1438.       S: 250 OK
  1439.       C: DATA
  1440.       S: 354 Start mail input; end with <CRLF>.<CRLF>
  1441.       C: Received: from bar.com by foo.com ; Thu, 21 May 1998
  1442.       C:     05:33:29 -0700
  1443.       C: Date: Thu, 21 May 1998 05:33:22 -0700
  1444.       C: From: John Q. Public <JQP@bar.com>
  1445.       C: Subject:  The Next Meeting of the Board
  1446.       C: To: Jones@xyz.com
  1447.       C:
  1448.       C: Bill:
  1449.       C: The next meeting of the board of directors will be
  1450.       C: on Tuesday.
  1451.       C:                         John.
  1452.       C: .
  1453.       S: 250 OK
  1454.       C: QUIT
  1455.       S: 221 foo.com Service closing transmission channel
  1456. D.4 Verifying and Sending Scenario
  1457.       S: 220 foo.com Simple Mail Transfer Service Ready
  1458.       C: EHLO bar.com
  1459.       S: 250-foo.com greets bar.com
  1460.       S: 250-8BITMIME
  1461.       S: 250-SIZE
  1462.       S: 250-DSN
  1463. Klensin                     Standards Track                    [Page 75]
  1464. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1465.       S: 250-VRFY
  1466.       S: 250 HELP
  1467.       C: VRFY Crispin
  1468.       S: 250 Mark Crispin <Admin.MRC@foo.com>
  1469.       C: SEND FROM:<EAK@bar.com>
  1470.       S: 250 OK
  1471.       C: RCPT TO:<Admin.MRC@foo.com>
  1472.       S: 250 OK
  1473.       C: DATA
  1474.       S: 354 Start mail input; end with <CRLF>.<CRLF>
  1475.       C: Blah blah blah...
  1476.       C: ...etc. etc. etc.
  1477.       C: .
  1478.       S: 250 OK
  1479.       C: QUIT
  1480.       S: 221 foo.com Service closing transmission channel
  1481. E. Other Gateway Issues
  1482.    In general, gateways between the Internet and other mail systems
  1483.    SHOULD attempt to preserve any layering semantics across the
  1484.    boundaries between the two mail systems involved.  Gateway-
  1485.    translation approaches that attempt to take shortcuts by mapping,
  1486.    (such as envelope information from one system to the message headers
  1487.    or body of another) have generally proven to be inadequate in
  1488.    important ways.  Systems translating between environments that do not
  1489.    support both envelopes and headers and Internet mail must be written
  1490.    with the understanding that some information loss is almost
  1491.    inevitable.
  1492. F. Deprecated Features of RFC 821
  1493.    A few features of RFC 821 have proven to be problematic and SHOULD
  1494.    NOT be used in Internet mail.
  1495. F.1 TURN
  1496.    This command, described in RFC 821, raises important security issues
  1497.    since, in the absence of strong authentication of the host requesting
  1498.    that the client and server switch roles, it can easily be used to
  1499.    divert mail from its correct destination.  Its use is deprecated;
  1500.    SMTP systems SHOULD NOT use it unless the server can authenticate the
  1501.    client.
  1502. Klensin                     Standards Track                    [Page 76]
  1503. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1504. F.2 Source Routing
  1505.    RFC 821 utilized the concept of explicit source routing to get mail
  1506.    from one host to another via a series of relays.  The requirement to
  1507.    utilize source routes in regular mail traffic was eliminated by the
  1508.    introduction of the domain name system "MX" record and the last
  1509.    significant justification for them was eliminated by the
  1510.    introduction, in RFC 1123, of a clear requirement that addresses
  1511.    following an "@" must all be fully-qualified domain names.
  1512.    Consequently, the only remaining justifications for the use of source
  1513.    routes are support for very old SMTP clients or MUAs and in mail
  1514.    system debugging.  They can, however, still be useful in the latter
  1515.    circumstance and for routing mail around serious, but temporary,
  1516.    problems such as problems with the relevant DNS records.
  1517.    SMTP servers MUST continue to accept source route syntax as specified
  1518.    in the main body of this document and in RFC 1123.  They MAY, if
  1519.    necessary, ignore the routes and utilize only the target domain in
  1520.    the address.  If they do utilize the source route, the message MUST
  1521.    be sent to the first domain shown in the address.  In particular, a
  1522.    server MUST NOT guess at shortcuts within the source route.
  1523.    Clients SHOULD NOT utilize explicit source routing except under
  1524.    unusual circumstances, such as debugging or potentially relaying
  1525.    around firewall or mail system configuration errors.
  1526. F.3 HELO
  1527.    As discussed in sections 3.1 and 4.1.1, EHLO is strongly preferred to
  1528.    HELO when the server will accept the former.  Servers must continue
  1529.    to accept and process HELO in order to support older clients.
  1530. F.4 #-literals
  1531.    RFC 821 provided for specifying an Internet address as a decimal
  1532.    integer host number prefixed by a pound sign, "#".  In practice, that
  1533.    form has been obsolete since the introduction of TCP/IP.  It is
  1534.    deprecated and MUST NOT be used.
  1535. F.5 Dates and Years
  1536.    When dates are inserted into messages by SMTP clients or servers
  1537.    (e.g., in trace fields), four-digit years MUST BE used.  Two-digit
  1538.    years are deprecated; three-digit years were never permitted in the
  1539.    Internet mail system.
  1540. Klensin                     Standards Track                    [Page 77]
  1541. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1542. F.6 Sending versus Mailing
  1543.    In addition to specifying a mechanism for delivering messages to
  1544.    user's mailboxes, RFC 821 provided additional, optional, commands to
  1545.    deliver messages directly to the user's terminal screen.  These
  1546.    commands (SEND, SAML, SOML) were rarely implemented, and changes in
  1547.    workstation technology and the introduction of other protocols may
  1548.    have rendered them obsolete even where they are implemented.
  1549.    Clients SHOULD NOT provide SEND, SAML, or SOML as services.  Servers
  1550.    MAY implement them.  If they are implemented by servers, the
  1551.    implementation model specified in RFC 821 MUST be used and the
  1552.    command names MUST be published in the response to the EHLO command.
  1553. Klensin                     Standards Track                    [Page 78]
  1554. RFC 2821             Simple Mail Transfer Protocol            April 2001
  1555. Full Copyright Statement
  1556.    Copyright (C) The Internet Society (2001).  All Rights Reserved.
  1557.    This document and translations of it may be copied and furnished to
  1558.    others, and derivative works that comment on or otherwise explain it
  1559.    or assist in its implementation may be prepared, copied, published
  1560.    and distributed, in whole or in part, without restriction of any
  1561.    kind, provided that the above copyright notice and this paragraph are
  1562.    included on all such copies and derivative works.  However, this
  1563.    document itself may not be modified in any way, such as by removing
  1564.    the copyright notice or references to the Internet Society or other
  1565.    Internet organizations, except as needed for the purpose of
  1566.    developing Internet standards in which case the procedures for
  1567.    copyrights defined in the Internet Standards process must be
  1568.    followed, or as required to translate it into languages other than
  1569.    English.
  1570.    The limited permissions granted above are perpetual and will not be
  1571.    revoked by the Internet Society or its successors or assigns.
  1572.    This document and the information contained herein is provided on an
  1573.    "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  1574.    TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
  1575.    BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
  1576.    HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  1577.    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  1578. Acknowledgement
  1579.    Funding for the RFC Editor function is currently provided by the
  1580.    Internet Society.
  1581. Klensin                     Standards Track                    [Page 79]