Every bounce message carries a numeric code that tells you exactly why the email was rejected. Once you can read it, a scary-looking delivery failure becomes a two-second diagnosis. Here’s what the numbers mean and what to do about each one.
From our complete guide, Mail delivery failed: returning message to sender — where these codes sit in the wider picture of reading and fixing bounces.
The one digit that matters most
SMTP codes come in two parts: a three-digit basic code (like 550) and a dotted “enhanced” code (like 5.1.1). The very first digit tells you almost everything:
- 4xx — temporary. A passing problem. The sending server keeps retrying, usually for a day or two.
- 5xx — permanent. The server is refusing outright. Retrying won’t help; something has to change.
That single digit maps directly onto the two kinds of bounce:
Permanent Hard bounce
The address will never accept mail. Don’t retry.
- Address doesn’t exist / typo
- Domain doesn’t exist
- Recipient server blocked you
Do: fix the typo or remove the address. Repeated sends to dead addresses hurt your reputation.
Temporary Soft bounce
A passing problem. It may work if you try again later.
- Mailbox full
- Message too large
- Server down or greylisting
Do: usually nothing — servers auto-retry soft bounces for a day or two before giving up.
The codes you’ll actually see
| Code | Type | What it means | What to do |
|---|---|---|---|
550 5.1.1 |
Permanent | No such user / address doesn’t exist | Fix the typo or remove it |
550 5.7.1 |
Permanent | Rejected — spam, policy, or blocklist | Check SPF/DKIM & reputation |
552 5.2.2 |
Permanent | Mailbox full / over quota | Ask recipient to clear space |
552 5.3.4 |
Permanent | Message too large | Send a link, not an attachment |
421 4.7.0 |
Temporary | Service unavailable / rate-limited | Wait — it will auto-retry |
451 4.7.1 |
Temporary | Greylisted — try again shortly | Nothing; normal anti-spam step |
450 4.2.1 |
Temporary | Mailbox busy / temporarily blocked | Let the retry handle it |
The pattern worth memorising
A 5.1.x code is about the address — it doesn’t exist, or it’s mistyped. A 5.2.x code is about the mailbox — usually full. And a 5.7.x code is about policy and reputation — the receiver thinks your mail is spam or can’t verify it’s really from you.
That last group is the one you can fix at the source. A 5.7.1 almost always traces back to missing or misaligned authentication — set up SPF, DKIM and DMARC and those rejections disappear. If instead you’re getting bounces for mail you never sent, that’s backscatter, not a code problem.