What is SMTP Response Code Theory?

  1. Home
  2. Knowledge Base
  3. GMS
  4. What is SMTP Response Code Theory?

Question

When any mail client or remote server attempts to send email to a mail server, the mail server will send a response to each command. The response indicates whether the command was processed correctly or not.

This KB entry is a copy of the Theory of Reply Codes as discussed in RFC821 (the Internet Mail Standard).

Answer

The three digits of the reply each have a special significance.
The first digit denotes whether the response is good, bad or
incomplete. An unsophisticated sender-SMTP will be able to
determine its next action (proceed as planned, redo, retrench,
etc.) by simply examining this first digit. A sender-SMTP that
wants to know approximately what kind of error occurred (e.g.,
mail system error, command syntax error) may examine the second
digit, reserving the third digit for the finest gradation of
information.

There are five values for the first digit of the reply code:

  • 1yz Positive Preliminary reply

    The command has been accepted, but the requested action
    is being held in abeyance, pending confirmation of the
    information in this reply. The sender-SMTP should send
    another command specifying whether to continue or abort
    the action.

    [Note: SMTP does not have any commands that allow this
    type of reply, and so does not have the continue or
    abort commands.]

  • 2yz Positive Completion reply

    The requested action has been successfully completed. A
    new request may be initiated.

  • 3yz Positive Intermediate reply

    The command has been accepted, but the requested action
    is being held in abeyance, pending receipt of further
    information. The sender-SMTP should send another command
    specifying this information. This reply is used in
    command sequence groups.

  • 4yz Transient Negative Completion reply

    The command was not accepted and the requested action did
    not occur. However, the error condition is temporary and
    the action may be requested again. The sender should

    return to the beginning of the command sequence (if any).
    It is difficult to assign a meaning to "transient" when
    two different sites (receiver- and sender- SMTPs) must
    agree on the interpretation. Each reply in this category
    might have a different time value, but the sender-SMTP is
    encouraged to try again. A rule of thumb to determine if
    a reply fits into the 4yz or the 5yz category (see below)
    is that replies are 4yz if they can be repeated without
    any change in command form or in properties of the sender
    or receiver. (E.g., the command is repeated identically
    and the receiver does not put up a new implementation.)

  • 5yz Permanent Negative Completion reply

    The command was not accepted and the requested action did
    not occur. The sender-SMTP is discouraged from repeating
    the exact request (in the same sequence). Even some
    "permanent" error conditions can be corrected, so the
    human user may want to direct the sender-SMTP to
    reinitiate the command sequence by direct action at some
    point in the future (e.g., after the spelling has been
    changed, or the user has altered the account status).

The second digit encodes responses in specific categories:

  • x0z Syntax
    These replies refer to syntax errors,
    syntactically correct commands that don’t fit any
    functional category, and unimplemented or superfluous
    commands.

    • x1z Information
      These are replies to requests for
      information, such as status or help.

    • x2z Connections
      These are replies referring to the
      transmission channel.

    • x3z Unspecified as yet.

    • x4z Unspecified as yet.


    • x5z Mail system

      These replies indicate the status of
      the receiver mail system vis-a-vis the requested
      transfer or other mail system action.

    The third digit gives a finer gradation of meaning in each
    category specified by the second digit. The list of replies
    illustrates this. Each reply text is recommended rather than
    mandatory, and may even change according to the command with
    which it is associated. On the other hand, the reply codes
    must strictly follow the specifications in this section.
    Receiver implementations should not invent new codes for
    slightly different situations from the ones described here, but
    rather adapt codes already defined.

    For example, a command such as NOOP whose successful execution
    does not offer the sender-SMTP any new information will return
    a 250 reply. The response is 502 when the command requests an
    unimplemented non-site-specific action. A refinement of that
    is the 504 reply for a command that is implemented, but that
    requests an unimplemented parameter.

    The reply text may be longer than a single line; in these cases
    the complete text must be marked so the sender-SMTP knows when it
    can stop reading the reply. This requires a special format to
    indicate a multiple line reply.

    The format for multiline replies requires that every line,
    except the last, begin with the reply code, followed
    immediately by a hyphen, "-" (also known as minus), followed by
    text. The last line will begin with the reply code, followed
    immediately by <SP>, optionally some text, and <CRLF>.

    For example:

    123-First line
    123-Second line
    123-234 text beginning with numbers
    123 The last line
    


    In many cases the sender-SMTP then simply needs to search for
    the reply code followed by at the beginning of a line, and
    ignore all preceding lines. In a few cases, there is important
    data for the sender in the reply "text". The sender will know
    these cases from the current context.

    Keywords:SMTP response code theory error

  • Was this article helpful?

    Related Articles