What do SMTP error codes (550, 421, etc.) actually mean for reporting?
Still have a question, spotted an error, or have a better explanation or a source we should cite?
When an email doesn't get delivered, the receiving server sends back a three-digit SMTP code explaining why. Your ESP reads that code and translates it into "hard bounce" or "soft bounce" in your report. Understanding the codes yourself means you can tell whether a delivery problem is permanent or temporary before your ESP tells you.
The two families you need to know: 5xx codes are permanent failures. 4xx codes are temporary. It's that simple as a starting point.
Common 5xx codes: 550 is the most frequent hard bounce you'll see. It means the address doesn't exist or was rejected by policy. 551 means the user isn't local and the server won't forward. 554 means the transaction failed for various reasons, often spam or authentication rejection. Any 5xx code tells your ESP to suppress that address and stop retrying.
Common 4xx codes: 421 means the service is temporarily unavailable (the server is overloaded or rate-limiting your connection). 452 means insufficient storage, which usually means the recipient's mailbox is full. 4xx codes trigger a retry, typically for 24-72 hours. If retries keep failing, many ESPs convert the address to a hard bounce status after a set number of attempts.
Where this matters for reporting: if your ESP lumps all bounces together without showing codes, you lose visibility into what's fixable. A 550 (invalid address) and a 421 (server temporarily busy) require completely different responses. If you can see raw codes in your logs, you can triage your bounce rate accurately. If you're reading email headers to debug a specific delivery failure, our free Email Header Analyzer can help.
Contributors
Who worked on this answer
Every name links to their profile. Every company links to their site. Real people, real accountability.