Last updated: July 2026
Every SMTP response starts with a three-digit code. The first digit tells you almost everything:
- 2xx — success (
250 OK= message accepted) - 3xx — go on (
354= “start sending the message body”) - 4xx — temporary failure: the sender should retry later
- 5xx — permanent failure: don’t retry, fix the problem
The codes you’ll actually meet
| Code | Meaning | What to do |
|---|---|---|
| 421 | Service not available / too many connections | Server is throttling you — slow your sending rate, retry later |
| 450 | Mailbox unavailable (temporary) | Often greylisting; a legitimate server’s retry succeeds |
| 451 | Local error in processing | Receiving server hiccup — retry |
| 452 | Insufficient storage | Recipient mailbox full — retry later |
| 550 | Mailbox unavailable / not found | Bad address, or you’re blocked — verify the address, check blocklists |
| 551 | User not local | Wrong server for this recipient |
| 552 | Message exceeds storage allocation | Message too large for the mailbox |
| 553 | Mailbox name not allowed | Malformed recipient address |
| 554 | Transaction failed | Catch-all rejection — usually spam filtering; read the text after the code |
Enhanced status codes (the x.y.z after the number)
Modern servers append a second code like 550 5.1.1 or 550 5.7.1:
- 5.1.1 — bad destination mailbox: the address genuinely doesn’t exist
- 5.2.2 — mailbox full
- 5.7.1 — delivery not authorized: you were rejected as a sender — the classic SPF/DKIM/DMARC or blocklist failure
5.1.x codes mean fix the address; 5.7.x codes mean fix your sending reputation.
Debugging a 5.7.1 / 554 rejection
- Read the full bounce text — Gmail and Outlook include a URL explaining exactly which policy you failed.
- Check your DNS: SPF record includes your sending server, DKIM signing is on, DMARC exists. (SPF setup is covered in my SPF record guide.)
- Check your server IP against blocklists (mxtoolbox.com’s blocklist check covers the major ones).
- Since 2024, Gmail/Yahoo require bulk senders to authenticate and honor one-click unsubscribe — unauthenticated bulk mail gets
550 5.7.xrejections by policy.
A rule worth automating
Treat 4xx as “retry with backoff” and 5xx as “stop and alert”. Retrying 5xx bounces into oblivion is exactly how sending IPs earn a place on blocklists.
