What is the difference between 3-digit and dotted SMTP error 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.