List of SMTP server return codes

Last updated

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.

Contents

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:

The second digit encodes responses in specific categories:

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:

class "." subject "." detail    class   = "2" / "4" / "5"    subject = 1 to 3 digits    detail  = 1 to 3 digits

The classes are defined as follows:

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

The subjects are defined as follows:

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. [1]

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

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

211System status, or system help reply
214Help message (A response to the HELP command)
220<domain> Service ready
221<domain> Service closing transmission channel
221 2.0.0Goodbye [1]
235 2.7.0Authentication succeeded [3]
240QUIT
250Requested mail action okay, completed
251User not local; will forward
252Cannot 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) [3]
354Start 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.

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

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

Example

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

S: 220 smtp.example.com ESMTP Postfix C: HELO relay.example.com S: 250 smtp.example.com, I am glad to meet you C: MAIL FROM:<bob@example.com> S: 250 Ok C: RCPT TO:<alice@example.com> S: 250 Ok C: RCPT TO:<theboss@example.com> S: 250 Ok C: DATA S: 354 End data with <CR><LF>.<CR><LF> C: From: "Bob Example" <bob@example.com> C: To: Alice Example <alice@example.com> C: Cc: theboss@example.com C: Date: Tue, 15 Jan 2008 16:02:43 -0500 C: Subject: Test message C:  C: Hello Alice. C: This is a test message with 5 header fields and 4 lines in the message body. C: Your friend, C: Bob C: . S: 250 Ok: queued as 12345 C: QUIT S: 221 Bye {The server closes the connection}

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

S: 220 dbc.mtview.ca.us SMTP service ready C: EHLO ymir.claremont.edu S: 250-dbc.mtview.ca.us says helloS: 250 ENHANCEDSTATUSCODES C: MAIL FROM:<ned@ymir.example.edu> S: 250 2.1.0 Originator <ned@ymir.example.edu> ok C: RCPT TO:<mrose@dbc.mtview.example.us> S: 250 2.1.5 Recipient <mrose@dbc.mtview.example.us> ok C: RCPT TO:<nosuchuser@dbc.mtview.example.us> S: 550 5.1.1 Mailbox "nosuchuser" does not exist C: RCPT TO:<remoteuser@example.edu> S: 551-5.7.1 Forwarding to remote hosts disabledS: 551 5.7.1 Select another host to act as your forwarder C: DATA S: 354 Send message, ending in CRLF.CRLF.  ... C: . S: 250 2.6.0 Message accepted C: QUIT S: 221 2.0.0 Goodbye {The server closes the connection}

References