When looking up SMTP error codes, I sometimes see "550", or "5.5.0". And sometimes the number in the dotted code is different.

I found the numeric codes defined in RFC 821 and the dotted codes in RFC 3463.

Is this just different notation for the same thing, or are these different? If they are different, what parts of the protocol are responsible for returning each code, and why the different codes?


The first three digits "550" are the code that is necessary for the SMTP protocol. This is used during SMTP dialog to handle errors, success or failures.

The dotted version is the so called extended return code. In this code you can specify a more detailed response for humans or automated scripts. But they are not necessary for an SMTP server to work.

But what you need (when you use extended error codes) is the numerical error code followed by a dotted one. Not the other way round. And not only the extended error code without the numerical one.

The values don't have to be equal but they have to match. So you can have a "554 5.7.1 Service unavailable". Both have to start with a 5 but don't have to be equal in the last part.


The overview of RFC 3463 provides a pretty good answer - dotted is the modern standard, straight number response codes are the legacy standard. Edit: "legacy" is poor wording, as the old codes are still necessary for protocol signaling, but don't provide the detail of the new codes.

There is a need for a standard mechanism for the reporting of mail system errors richer than the limited set offered by SMTP and the system specific text descriptions sent in mail messages. There is a pressing need for a rich machine-readable, human language independent status code for use in delivery status notifications. This document proposes a new set of status codes for this purpose.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.