List of SMTP server return codes
# List of SMTP server return codes

This is a list of Simple Mail Transfer Protocol (SMTP) response status codes. Status codes are issued by a server in response to a client's request made to the server.

Unless otherwise stated, all status codes described here is part of the current SMTP standard, RFC 5321. The message phrases shown are typical, but any human-readable alternative may be provided.

## Basic status code

A "Basic Status Code" SMTP reply consists of a three digit number (transmitted as three numeric characters) followed by some text. The number is for use by automata (e.g., email clients) to determine what state to enter next; the text ("Text Part") is for the human user.

The first digit denotes whether the response is good, bad, or incomplete:

* 2yz (Positive Completion Reply): The requested action has been successfully completed.
* 3yz (Positive Intermediate Reply): The command has been accepted, but the requested action is being held in abeyance, pending receipt of further information.
* 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.
* 5yz (Permanent Negative Completion Reply): The command was not accepted and the requested action did not occur. The SMTP client SHOULD NOT repeat the exact request (in the same sequence).

The second digit encodes responses in specific categories:

* x0z (Syntax): These replies refer to syntax errors, syntactically correct commands that do not fit any functional category, and unimplemented or superfluous commands.
* x1z (Information): These are replies to requests for information.
* x2z (Connections): These are replies referring to the transmission channel.
* x3z : Unspecified.
* x4z : Unspecified.
* x5z (Mail system): These replies indicate the status of the receiver mail system.

## Enhanced status code

The Basic Status Codes have been in SMTP from the beginning, with RFC 821 in 1982, but were extended rather extensively, and haphazardly so that by 2003 RFC 3463 rather grumpily noted that: "SMTP suffers some scars from history, most notably the unfortunate damage to the reply code extension mechanism by uncontrolled use."

RFC 3463 defines a separate series of enhanced mail system status codes which is intended to be better structured, consisting of three numerical fields separated by ".", as follows:

The classes are defined as follows:

* 2.XXX.XXX Success: Report of a positive delivery action.
* 4.XXX.XXX Persistent Transient Failure: Message as sent is valid, but persistence of some temporary conditions has caused abandonment or delay.
* 5.XXX.XXX Permanent Failure: Not likely to be resolved by resending the message in current form.

In general the class identifier MUST match the first digit of the Basic Status Code to which it applies.

The subjects are defined as follows:

* X.0.XXX Other or Undefined Status
* X.1.XXX Addressing Status
* X.2.XXX Mailbox Status
* X.3.XXX Mail System Status
* X.4.XXX Network and Routing Status
* X.5.XXX Mail Delivery Protocol Status
* X.6.XXX Message Content or Media Status
* X.7.XXX Security or Policy Status

The meaning of the "detail" field depends on the class and the subject, and are listed in RFC 3463 and RFC 5248.

A server capable of replying with an Enhanced Status Code MUST preface (prepend) the Text Part of SMTP Server responses with the Enhanced Status Code followed by one or more spaces. For example, the "221 Bye" reply (after QUIT command) MUST be sent as "221 2.0.0 Bye" instead.

The Internet Assigned Numbers Authority (IANA) maintains the official registry of these enhanced status codes.

## Common status codes

This section list some of the more commonly encountered SMTP Status Codes. This list is not exhaustive, and the actual text message (outside of the 3-field Enhanced Status Code) might be different.

### — 2yz Positive completion

       211 System status, or system help reply
       214 Help message (A response to the HELP command)
       220 <domain> Service ready
       221 <domain> Service closing transmission channel
       221 2.0.0 Goodbye
       235 2.7.0 Authentication succeeded
       240 QUIT
       250 Requested mail action okay, completed
       251 User not local; will forward
       252 Cannot verify the user, but it will try to deliver the message anyway

### — 3yz Positive intermediate

       334 (Server challenge - the text part contains the Base64-encoded challenge)
       354 Start mail input

### — 4yz Transient negative completion

"Transient Negative" means 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).

The accurate meaning of "transient" needs to be agreed upon between the two different sites (receiver- and sender-SMTP agents) must agree on the interpretation. Each reply in this category might have a different time value, but the SMTP client SHOULD try again.

       421 Service not available, closing transmission channel (This may be a reply to any command if the service knows it must shut down)
       432 4.7.12 A password transition is needed
       450 Requested mail action not taken: mailbox unavailable (e.g., mailbox busy or temporarily blocked for policy reasons)
       451 Requested action aborted: local error in processing
       451 4.4.1 IMAP server unavailable
       452 Requested action not taken: insufficient system storage
       454 4.7.0 Temporary authentication failure
       455 Server unable to accommodate parameters

### — 5yz Permanent negative completion

The SMTP client SHOULD NOT repeat the exact request (in the same sequence). Even some "permanent" error conditions can be corrected, so the human user may want to direct the SMTP client to reinitiate the command sequence by direct action at some point in the future.

       500 Syntax error, command unrecognized (This may include errors such as command line too long)
       500 5.5.6 Authentication Exchange line is too long
       501 Syntax error in parameters or arguments
       501 5.5.2 Cannot Base64-decode Client responses
       501 5.7.0 Client initiated Authentication Exchange (only when the SASL mechanism specified that client does not begin the authentication exchange)
       502 Command not implemented
       503 Bad sequence of commands
       504 Command parameter is not implemented
       504 5.5.4 Unrecognized authentication type
       521 Server does not accept mail
       523 Encryption Needed
       530 5.7.0 Authentication required
       534 5.7.9 Authentication mechanism is too weak
       535 5.7.8 Authentication credentials invalid
       538 5.7.11 Encryption required for requested authentication mechanism
       550 Requested action not taken: mailbox unavailable (e.g., mailbox not found, no access, or command rejected for policy reasons)
       551 User not local; please try <forward-path>
       552 Requested mail action aborted: exceeded storage allocation
       553 Requested action not taken: mailbox name not allowed
       554 Transaction has failed (Or, in the case of a connection-opening response, "No SMTP service here")
       554 5.3.4 Message too big for system
       556 Domain does not accept mail

## Example

Below is an example SMTP connection, where a client "C" is sending to server "S":

And below is an example of an SMTP connection in which the SMTP Server supports the Enhanced Status Code, taken from RFC 2034:

