Short answer: The first digit tells you the outcome: 2 success, 4 temporary failure (the server will retry), 5 permanent failure (the message bounces). In the enhanced code (for example 5.7.1), the second number is the subject: .1 addressing, .2 mailbox, .4 network and routing, .7 security and policy.
How to read an SMTP error code
Every SMTP reply has two parts: a three-digit basic code (RFC 5321) and a dotted enhanced status code (RFC 3463). Take 550 5.7.1:
550: requested action not taken, permanent failure.5.7.1: permanent (5) or temporary (4).- 5.
7.1: the subject class; 7 means security and policy. - 5.7.
1: the detail within that class; 7.1 is "delivery not authorized, message refused".
The human-readable text after the code is usually more informative than the code itself: the same 5.7.1 can mean a blocklist rejection on one server and a relay denial on another.
Code classes
| Class | Meaning | Example |
|---|---|---|
| X.1.X | Addressing: invalid recipient or sender address | 5.1.1 user unknown |
| X.2.X | Mailbox: full, disabled | 5.2.2 mailbox full |
| X.3.X | Receiving mail system problems | 4.3.0 temporary system error |
| X.4.X | Network and routing | 5.4.1 recipient rejected (Microsoft) |
| X.5.X | Protocol | 5.5.1 invalid command |
| X.7.X | Security and policy: blocklists, SPF, DMARC, relaying | 5.7.1, 5.7.23, 5.7.26 |
Common SMTP errors
| Code | Meaning | Type |
|---|---|---|
| 550 5.1.1 | User unknown (recipient does not exist) | Permanent error |
| 550 5.4.1 | Recipient address rejected: Access denied (Microsoft 365) | Permanent error |
| 550 5.7.1 | Message rejected: policy or permission failure | Permanent error |
| 550 5.7.23 | SPF validation failed | Permanent error |
| 550 5.7.26 | Unauthenticated sender or DMARC policy rejection | Permanent error |
| 554 5.7.1 | Transaction failed: relay denied or blocked | Permanent error |
| 421 4.7.0 | Temporary rejection: rate limit or reputation | Temporary error |
| 451 4.7.1 | Temporary rejection: greylisting (try again later) | Temporary error |
| 552 5.2.2 | Recipient mailbox full | Permanent error (on most servers) |
Each code's page has real bounce message examples, causes and step-by-step fixes.
Three first steps when an email bounces
- Read the whole bounce. The text next to the code says which server rejected the message and why.
- Check whether it's 4xx or 5xx. With 4xx, waiting is often enough; with 5xx, something has to be fixed.
- Verify with tools. For suspected blocklisting use the blacklist check, for SPF/DMARC issues the SPF, DKIM, DMARC checker, and for the receiving server the MX record lookup.
If your mail isn't bouncing but landing in spam, see why are my emails going to spam?
Protect your inbox from spam, malware and phishing: point your MX record to Spambil and try it free for 7 days. No credit card required.
Frequently asked questions
What happens to a message that gets a 4xx error?
The sending server keeps it in its queue and retries at intervals. If the problem is fixed in time, the message is delivered; if the retry period runs out (a few days on most servers), the sender gets a bounce.
Does the same code mean different things at different providers?
The class means the same thing, but the details vary. 5.7.1 in particular is very generic; read the explanation text.
Why are bounce messages always in English?
The technical part of a bounce comes from the rejecting server and is almost always in English. Localized email clients translate the summary at the top, but the original server response is at the bottom of the report.