When an email fails to deliver, the receiving server returns a bounce code explaining why. Understanding these codes is essential for diagnosing delivery problems, maintaining sender reputation, and managing email lists. This guide covers all major SMTP bounce codes, their meanings, and how to resolve them.
Bounce Code Structure
SMTP response codes follow a three-digit format (e.g., 550), often with an enhanced status code (e.g., 5.1.1):
- First digit: category — 2xx (success), 4xx (temporary failure), 5xx (permanent failure)
- Second digit: subcategory — x.0.x (other), x.1.x (address), x.2.x (mailbox), x.3.x (mail system), x.4.x (network), x.5.x (protocol), x.7.x (security)
- Third digit: specific detail
4xx Temporary Failures (Soft Bounces)
Your mail server should retry these automatically. They usually resolve on their own.
421 — Service Not Available
421 4.7.0 Try again later, closing connection
421 4.3.2 System not accepting network messages
Cause: Server temporarily overloaded, maintenance, or rate limiting. Action: Wait and retry. Your server handles this automatically.
450 — Mailbox Unavailable (Temporary)
450 4.2.1 Mailbox temporarily disabled
450 4.1.8 Sender address rejected: Domain not found
Cause: Mailbox temporarily full, account suspended, or greylisting. Action: Retry. If persistent, contact the recipient through other means.
451 — Local Processing Error
451 4.3.0 Mail server temporarily rejected message
451 4.7.1 Greylisting in effect, please come back later
Cause: Internal server error, greylisting, or anti-spam checks. Action: Automatic retry will succeed for greylisting. Persistent 451 errors indicate server misconfiguration.
452 — Insufficient Storage
452 4.2.2 Over quota
452 4.3.1 Insufficient system storage
Cause: Recipient's mailbox or the server disk is full. Action: Retry later. Notify recipient through other channels if urgent.
5xx Permanent Failures (Hard Bounces)
These will not succeed on retry. Remove these addresses from your mailing lists.
550 — Mailbox Unavailable (Permanent)
550 5.1.1 User unknown
550 5.1.1 The email account that you tried to reach does not exist
550 5.2.1 Mailbox disabled
550 5.7.1 Relay access denied
550 5.7.1 Service unavailable; client blocked
5.1.1 User unknown: The email address does not exist. Remove from mailing lists immediately.
5.2.1 Mailbox disabled: Account exists but is disabled. Remove from active lists.
5.7.1 Relay denied: Your server is not authorized to relay through this server. Check SMTP authentication settings.
5.7.1 Client blocked: Your IP is blocked. Check blacklists and sender reputation.
551 — User Not Local
551 5.1.6 Recipient address rejected: User moved
Action: Update the email address. The user has moved to a different server.
552 — Message Too Large
552 5.2.3 Message size exceeds maximum permitted
552 5.3.4 Message size exceeds fixed limit
Action: Reduce message size. Remove or compress large attachments. Check the recipient server's size limit.
553 — Invalid Address Format
553 5.1.3 Invalid address format
553 5.1.7 Sender address syntax error
Action: Check the email address for typos or invalid characters.
554 — Transaction Failed
554 5.7.1 Message rejected due to content restrictions
554 5.7.1 [CS] Message rejected. See https://...
554 5.7.9 Message not accepted for policy reasons
Action: The message content triggered spam filters. Review message content, check DKIM/SPF/DMARC, and verify your IP is not blacklisted.
Provider-Specific Bounce Codes
Gmail
# Too many messages
421-4.7.28 Gmail has detected an unusual rate of unsolicited mail from your IP
# Fix: Slow down sending, warm up your IP
# Reputation issue
550-5.7.1 Our system has detected that this message is likely spam
# Fix: Check SPF/DKIM/DMARC, review content, check IP reputation
# Rate limit
450 4.2.1 The user you are trying to contact is receiving mail too quickly
# Fix: Retry later, reduce sending rate to Gmail
Microsoft (Outlook/365)
# IP blocked
550 5.7.606 Access denied, banned sending IP [x.x.x.x]
# Fix: Submit delisting request at sender.office.com
# Content filter
550 5.7.708 Service unavailable. Access denied, traffic not accepted from this IP
# Fix: Authenticate with SPF/DKIM, join SNDS (Smart Network Data Services)
Handling Bounces in Your Application
# Parse bounce notifications (DSN format)
# Bounce emails arrive as multipart/report messages with:
# - Human-readable explanation
# - Machine-readable status (message/delivery-status)
# - Original message headers
# Key fields in delivery-status part:
# Status: 5.1.1 → permanent failure, user unknown
# Action: failed → delivery failed
# Diagnostic-Code: smtp; 550 5.1.1 User not found
# Final-Recipient: rfc822; bad@example.com
# Automated bounce handling:
# 1. Parse the Status field
# 2. 5.x.x → hard bounce → remove from list
# 3. 4.x.x → soft bounce → retry, remove after 3-5 failures
# 4. Log bounce reason for analytics
Preventing Bounces
- Validate email addresses at signup — use double opt-in to confirm addresses
- Clean your mailing list regularly — remove hard bounces immediately
- Authenticate your email — implement SPF, DKIM, and DMARC
- Monitor IP reputation — check blacklists at mxtoolbox.com/blacklists.aspx
- Follow sending best practices — warm up new IPs, maintain consistent volume
- Handle bounce notifications — process DSN messages automatically
- Use a dedicated IP — avoid shared IPs with potentially bad senders
Quick Reference Table
Code Enhanced Meaning Action
421 4.7.0 Rate limited/temp Wait and retry
450 4.2.1 Mailbox temp unavailable Retry automatically
451 4.3.0 Server processing error Retry automatically
452 4.2.2 Over quota Retry, notify user
550 5.1.1 User does not exist Remove from list
550 5.2.1 Mailbox disabled Remove from list
550 5.7.1 Relay denied/blocked Check auth/reputation
552 5.2.3 Message too large Reduce size
553 5.1.3 Bad address format Fix address
554 5.7.1 Content rejected Review content/auth