SMTP Bounce Codes
Every SMTP exchange ends with a numeric reply code. The first digit tells you what category — success, transient failure, permanent failure. The full code and the optional enhanced status code tell you precisely why. Reading bounce codes correctly is the difference between retrying for hours on a message that will never be delivered and giving up on a message that just needed five more minutes.
The three-digit code classes
| First digit | Meaning | Sender behavior |
|---|---|---|
| 2xx | Success | Move on |
| 3xx | Intermediate (more data needed) | Continue exchange |
| 4xx | Temporary failure | Retry later |
| 5xx | Permanent failure | Don't retry; bounce |
The retry distinction is fundamental. A 4xx triggers the queue's retry logic (typical schedule: every few minutes for an hour, then every hour for a day or two, then bounce). A 5xx is an immediate bounce — the message is reflected back to the original sender as undeliverable.
The second digit: subject area
| Second digit | Subject |
|---|---|
| 0 | Syntax |
| 1 | Information |
| 2 | Connections |
| 3 | Reserved |
| 4 | Reserved |
| 5 | Mail system |
This is the original RFC 821 / 5321 scheme. The third digit is a specific code within the subject. So 421 means temporary failure (4) in connections (2), specifically 1; 550 means permanent failure (5) in mail system (5), specifically 0.
Enhanced status codes (RFC 3463)
The basic codes are coarse. Enhanced codes add precision via a three-part identifier:
X.Y.Z
X: class (2 success, 4 transient, 5 permanent)
Y: subject (1-7)
Z: detail
| Y | Subject |
|---|---|
| 0 | Other / undefined |
| 1 | Addressing |
| 2 | Mailbox |
| 3 | Mail system |
| 4 | Network / routing |
| 5 | Mail delivery protocol |
| 6 | Message content / conversion |
| 7 | Security / policy |
Enhanced codes appear alongside the basic code in the response:
550 5.1.1 The email account that you tried to reach does not exist.
550 is the legacy code; 5.1.1 is the enhanced code; the text is human-readable detail.
Common codes and what they mean
| Code | Meaning | What to do |
|---|---|---|
| 250 | OK — accepted | Done |
| 354 | Start mail input | Continue the exchange |
| 421 | Service unavailable / closing connection | Retry later |
| 421 4.7.0 | Try again later (rate limited) | Slow down; retry |
| 450 4.2.1 | Mailbox temporarily unavailable | Retry later |
| 451 4.4.1 | Server temporarily unavailable | Retry later |
| 452 4.2.2 | Mailbox full / quota exceeded | Retry; eventually bounce |
| 550 5.1.1 | User does not exist | Hard bounce; mark invalid |
| 550 5.7.1 | Message rejected by policy (SPF/DKIM/DMARC, spam) | Investigate and fix; don't blindly retry |
| 552 5.2.3 | Message too large | Don't retry; reduce size |
| 553 5.1.8 | Sender address rejected | Don't retry; fix sender configuration |
| 554 5.7.1 | Transaction failed; access denied | Investigate; don't retry until fixed |
The bounce message format
When a permanent failure occurs, the receiving server (or a server in between) generates a bounce message — a new email sent back to the envelope sender. The format (DSN, Delivery Status Notification, RFC 3464) includes:
- Human-readable explanation in the body.
- A machine-readable
message/delivery-statusattachment with the SMTP reply codes, recipient address, and timestamps. - Often the original message headers as another attachment.
Bounce handlers parse the DSN attachment, not the human text, to extract structured information.
Soft bounce vs hard bounce in mailing lists
For mass senders, distinguishing soft from hard bounces is important:
- Hard bounce (5.x.x): permanently remove the address from the list. Continuing to send to a known-invalid address damages sender reputation and may trigger more aggressive filtering for legitimate addresses.
- Soft bounce (4.x.x): keep on the list; mark for retry on next campaign. Multiple consecutive soft bounces (typically 3-5) escalate to a hard-bounce treatment.
Email-marketing platforms automate this tracking via their bounce processing.
Spam-related rejections
The 5.7.x family is the spam / policy reject family. Common subcodes:
- 5.7.1: generic policy reject. Could be SPF/DKIM/DMARC failure, sender reputation, or content filter.
- 5.7.0: permission denied (used for some policy issues).
- 5.7.9: authentication required but not provided.
- 5.7.26: SPF failed (sometimes seen with Microsoft).
- 5.7.25: DKIM failed (sometimes seen with Microsoft).
5.7.x rejections require investigation — they typically indicate a problem with sender configuration that won't resolve by retrying.
Parsing bounce text carefully
The human-readable text after the code can contain useful detail but is not structured. Different mail servers use different wording. Examples:
550 5.1.1 <alice@example.com>: Recipient address rejected: User unknown
550 5.1.1 The email account that you tried to reach does not exist.
550-5.1.1 The email account that you tried to reach does not exist.
550-5.1.1 Please try double-checking the recipient's email address...
All three are 550 5.1.1 hard bounces meaning "user does not exist." The wording differs by mail server vendor. Parse the code first, treat the text as descriptive only.
Frequently Asked Questions
What is the difference between a 4xx and a 5xx SMTP response?
4xx is a temporary failure — try again later. 5xx is a permanent failure — don't retry. The sending server treats them very differently: 4xx triggers retries with backoff for hours or days; 5xx generates an immediate bounce back to the original sender. Common 4xx: mailbox full, server temporarily unavailable, rate-limited. Common 5xx: user doesn't exist, message rejected as spam, mailbox closed.
What are enhanced status codes?
Three-part numeric codes (RFC 3463) that provide more specific reason information than the basic three-digit reply codes. Format X.Y.Z where X is class (2/4/5), Y is subject (1 addressing, 2 mailbox, 3 mail system, 4 network, 5 protocol, 6 content, 7 security/policy), Z is detail. So "5.1.1" means permanent (5), addressing (1), bad destination mailbox (1) — i.e., "user does not exist."
What is a soft bounce vs hard bounce?
A soft bounce is a temporary delivery failure (4xx) — the receiving server thinks the recipient might be reachable later. A hard bounce is a permanent failure (5xx) — the address doesn't exist or will never accept mail. Mass senders track both: soft bounces may resolve on retry; hard bounces should immediately cause the address to be marked invalid in mailing lists.
What does 421 mean?
Service not available — the receiving server is closing the connection. Often returned during graceful shutdowns, when the server is overloaded, or when the sender's IP has been temporarily rate-limited. The sending server should retry later. Sometimes the reason is included in the text portion of the response (e.g., "421 4.7.0 Try again later").
What does 550 5.7.1 mean?
Permanent (5xx) security/policy rejection (5.7.x). Common reasons: the message failed SPF, DKIM, or DMARC; the sending IP is on a block list; the content was identified as spam; or the recipient's policy explicitly blocks the sender. The text after the code usually contains more detail. Distinct from 550 5.1.1 (user does not exist), which is an addressing issue.
Related Guides
More From This Section
All Email Guides
SPF, DKIM, DMARC, MX records, deliverability, and email headers.
DNS Records for Email
The complete DNS-record checklist for a mail-sending domain — MX, SPF, DKIM, DMARC, MTA-STS, TLS-RPT, BIMI, and reverse…
SPF, DKIM, DMARC: How Email Authentication Works
SPF, DKIM, and DMARC explained in plain English — how the three email authentication standards work together, what each…
Run a Speed Test
Measure download, upload, ping, and jitter in your browser.