A bounce is a receiving server refusing or deferring a message, and the code it sends back is the only explanation you get. Most sending tools reduce that to a red row. These pages restore the detail: for each code, which providers send it and with what wording, what it actually means, and what to do — with the emphasis on the mistake that costs the most, which is scrubbing a good address after a reputation block.
Hard bounces — remove the address
| Code | Meaning | Typical source |
|---|---|---|
| 550 | Requested action not taken — mailbox unavailable or policy | Any |
| 5.1.1 | Mailbox does not exist | Gmail |
| 5.1.2 | Domain does not exist | Any |
| 5.1.3 | Bad recipient address syntax | Any |
| 5.1.8 | Bad sender address | Any |
| 5.1.10 | Recipient address rejected (Microsoft 365) | Any |
| 5.2.1 | Mailbox disabled or not accepting mail | Any |
| 5.2.3 | Message too large | Any |
| 5.4.1 | Recipient address rejected: Access denied (Microsoft 365) | Any |
| 5.4.4 | Unable to route — no MX or unreachable | Microsoft 365 |
| 5.4.14 | Hop count exceeded (Microsoft 365) | Any |
| 5.5.3 | Too many recipients | Any |
Soft bounces — retry, then remove
| Code | Meaning | Typical source |
|---|---|---|
| 421 | Service not available, closing connection | Any |
| 450 | Mailbox unavailable — temporary | Any |
| 4.2.2 | Mailbox full (temporary) | Any |
| 4.4.1 | Connection timed out | Microsoft 365 |
| 4.7.0 | Temporary policy rejection — rate limit or greylisting | Gmail |
| 4.7.1 | Greylisted or temporarily blocked | Any |
| 4.7.28 | Temporarily rate limited — Gmail | Any |
| 4.7.650 | Sending IP under review (Microsoft 365) | Any |
| 4.7.850 | Traffic deferred, reputation building (Microsoft 365) | Any |
| 5.2.2 | Mailbox full | Any |
| 5.4.7 | Delivery time expired | Any |
Policy blocks — fix the sending side
| Code | Meaning | Typical source |
|---|---|---|
| 554 | Transaction failed | Gmail |
| 5.7.0 | Delivery not authorised — generic policy | Any |
| 5.7.1 | Delivery not authorised — message refused | Gmail |
| 5.7.9 | Authentication required or failed | Gmail |
| 5.7.23 | SPF validation failed | Any |
| 5.7.25 | Reverse DNS failed | Gmail |
| 5.7.26 | Unauthenticated email — Gmail sender requirements | Any |
| 5.7.27 | Sender address has null MX | Any |
| 5.7.28 | Unusual rate or reputation — Gmail | Any |
| 5.7.32 | DMARC policy rejection | Any |
| 5.7.133 | Recipient not authorised to accept external mail (Microsoft 365) | Any |
| 5.7.501 | Blocked by spam filtering (Microsoft 365) | Any |
| 5.7.510 | Access denied, bad outbound sender (Microsoft 365) | Microsoft 365 |
| 5.7.511 | Access denied, banned sender (Microsoft 365) | Any |
| 5.7.606 | Banned sending IP (Microsoft 365) | Any |
| 5.7.708 | Traffic not accepted from this IP (Microsoft 365) | Any |
| 5.7.750 | Sending from unregistered domain (Microsoft 365) | Any |
Decode a bounce you are holding
Common questions
What is the difference between a 4xx and a 5xx code?
4xx is temporary: the receiver is asking you to try again, and your server does so automatically. 5xx is permanent for that message: do not retry.
What are enhanced status codes?
The dotted codes like 5.7.1, defined in RFC 3463. The first digit repeats temporary or permanent, the second names the area (1 addressing, 2 mailbox, 4 routing, 7 policy), the third is the specific reason. Providers add their own third digits, which is why 5.7.606 exists only at Microsoft.
Why do the same codes mean different things at different providers?
The standard leaves room, and Google, Microsoft and Yahoo have each filled it. The text after the code is the receiver's own explanation and is usually the most precise part.