Email Bounce Codes Decoded: Every SMTP Error Code Explained
When an email fails to deliver, the receiving server responds with an SMTP error code that explains exactly what went wrong. Understanding these codes is essential for diagnosing delivery problems, maintaining list hygiene, and protecting your sender reputation. This guide covers every major SMTP response code, the enhanced status code system, and what action to take for each.
How SMTP Error Codes Work
SMTP (Simple Mail Transfer Protocol) uses a three-digit numeric response code system defined in RFC 5321. Every response from an SMTP server begins with a three-digit code followed by a human-readable explanation. The first digit indicates the category:
- 2xx — Success. The requested action was completed successfully. For example,
250 OKmeans the message was accepted. - 3xx — Intermediate. The server needs more information to complete the action. The most common is
354 Start mail inputafter the DATA command. - 4xx — Temporary failure. The action failed but may succeed if retried later. These are soft bounces.
- 5xx — Permanent failure. The action failed and should not be retried. These are hard bounces.
Soft Bounces vs Hard Bounces
Understanding the difference between soft and hard bounces is critical for email list management and deliverability:
Soft bounces (4xx codes) indicate temporary problems. The mailbox might be full, the server might be temporarily unavailable, or there could be a network issue. Your mail server will typically retry delivery for a period (usually 1-5 days) before giving up. A single soft bounce is not cause for concern, but repeated soft bounces to the same address suggest a persistent problem.
Hard bounces (5xx codes) indicate permanent failures. The address does not exist, the domain has no mail server, or the recipient server is explicitly rejecting your message. Hard bounces should result in immediate removal of the address from your mailing list. Continuing to send to hard-bouncing addresses damages your sender reputation. Use our Bounce Analyzer to parse and categorize bounce messages automatically.
Common SMTP Error Codes Explained
421 — Service Not Available
The receiving server is temporarily unable to process your message. This often occurs during server maintenance, rate limiting, or when the server is overloaded. The sending server should retry automatically. If you see persistent 421 errors, the receiving server may be throttling your connections due to sending volume or reputation concerns.
450 — Mailbox Unavailable
The mailbox exists but is temporarily unavailable. Common causes include a full mailbox, an inactive account, or a greylisting system that temporarily rejects first-time senders. Greylisting intentionally returns a 450 to force a retry, which filters out spam bots that do not implement retry logic.
550 — Mailbox Not Found
The most common hard bounce. The email address does not exist on the receiving server. This could mean the address was mistyped, the account was deleted, or the domain does not accept email at that address. The exact wording varies — you might see "User unknown", "No such user", or "Mailbox not found". Always remove 550-bouncing addresses immediately. Verify addresses before sending with our Email Verifier.
551 — User Not Local
The recipient is not hosted on the contacted server. Some servers include a forwarding address in the response. This code is relatively rare in modern email systems, as most servers either accept or reject outright rather than providing redirect information.
552 — Storage Exceeded
The recipient's mailbox has exceeded its storage quota. While technically a hard bounce (5xx), this can sometimes be temporary if the user clears space. Some servers return 452 (temporary) instead of 552 for quota issues, depending on their configuration.
553 — Invalid Address Format
The email address syntax is invalid. This happens when the address contains illegal characters, is malformed, or uses an unsupported format. Double-check the address for typos, missing @ symbols, or extra spaces.
554 — Transaction Failed
A general permanent failure. This is a catch-all code used when the server rejects the message for policy reasons. Common causes include spam filtering, blacklisting, DMARC policy failures, or content filtering. The accompanying text usually provides more detail. If you see 554 responses mentioning your IP or domain reputation, check your blacklist status immediately.
Enhanced Status Codes (RFC 3463)
Modern SMTP servers supplement the three-digit code with an enhanced status code in the format class.subject.detail. These provide much more specific diagnostic information:
- 5.1.1 — Bad destination mailbox address. The specific user account does not exist.
- 5.1.2 — Bad destination system address. The domain part of the address is invalid or has no MX records.
- 5.2.1 — Mailbox disabled or not accepting messages. The account exists but is deactivated.
- 5.2.2 — Mailbox full. Storage quota exceeded.
- 5.3.0 — Other mail system issue. A catch-all for system-level problems.
- 5.7.1 — Message rejected due to policy. Typically spam filtering or authentication failure (SPF/DKIM/DMARC).
- 5.7.26 — DMARC validation failed. The message did not pass DMARC alignment checks.
- 4.7.1 — Temporary policy rejection. Often greylisting or rate limiting.
How to Fix Common Bounce Issues
The fix depends on the bounce category. Here is a systematic approach:
- For 550/5.1.1 (user not found): Remove the address from your list. Verify addresses before adding them using the Email Verifier.
- For 554/5.7.1 (policy rejection): Check your SPF, DKIM, and DMARC records. Verify your IP is not blacklisted. Review your email content for spam triggers.
- For 421/4.7.1 (rate limiting): Reduce your sending rate. Implement proper throttling and respect the receiving server's retry-after hints.
- For 452/5.2.2 (mailbox full): Retry later. If the condition persists for weeks, consider removing the address.
- For 553/5.1.3 (invalid address): Validate the address format and correct any typos or encoding issues.
Monitoring Bounce Rates
Industry best practices recommend keeping your hard bounce rate below 2%. A rate above 5% will trigger warnings from email service providers, and rates above 10% can result in account suspension. Track your bounce rates by category:
- Hard bounce rate — Should be under 2%. Remove bouncing addresses immediately.
- Soft bounce rate — Under 5% is healthy. Investigate addresses that soft-bounce repeatedly.
- Complaint rate — Keep under 0.1%. High complaint rates indicate permission or relevance issues.
Regular list cleaning is the most effective way to maintain low bounce rates. Verify your list periodically and remove inactive addresses before they become invalid.