Complete Guide to SMTP Bounce Codes and Error Messages | Emails Wipes
Decode every SMTP bounce code and error message. Learn the difference between 4xx and 5xx errors, how to fix them, and when to remove addresses from your list.
Complete Guide to SMTP Bounce Codes and Error Messages
You sent an email campaign to 10,000 addresses. 300 bounced. Your email provider shows cryptic error codes like 550 5.1.1, 421 4.7.0, or 554 5.7.1.
What do these codes mean? Which ones are permanent? Which can you retry? And most importantly - how do you fix them?
This complete guide decodes every SMTP bounce code, explains what causes each error, and shows you exactly how to fix it.
What Are SMTP Bounce Codes?
SMTP (Simple Mail Transfer Protocol) is the protocol that delivers email across the internet. When an email can't be delivered, the receiving server sends back a bounce message with an error code.
SMTP codes follow the format
XXX Y.Y.Y:First digit (X): Category (4=temporary, 5=permanent)
Three-digit code (XXX): Specific error type
Extended code (Y.Y.Y): Detailed reason
Example: 550 5.1.1 User unknown
- 550: Permanent failure
- 5.1.1: Bad destination mailbox address
- "User unknown": Human-readable explanation
Hard Bounces vs Soft Bounces
Hard Bounces (5xx Errors)
Definition: Permanent delivery failures. The email will never be delivered to this address. Learn more about the critical differences between hard and soft bounces.
Common causes:
- Email address doesn't exist
- Domain doesn't exist
- Recipient server permanently rejects your domain
Soft Bounces (4xx Errors)
Definition: Temporary delivery failures. The email might be delivered later.
Common causes:
- Recipient's mailbox is full
- Receiving server is temporarily down
- Message is too large
- Rate limiting / greylisting
The Most Common SMTP Error Codes
421 - Service Not Available
Type: Soft bounce (temporary)
What it means: The receiving server is temporarily rejecting your messages, usually due to:
- Too many spam complaints from your IP/domain
- Rate limiting (sending too fast)
- Greylisting (anti-spam technique)
How to fix:
- Slow down sending - Add delays between messages
- Check sender reputation - Use Sender Score
- Verify email authentication - Ensure your SPF, DKIM, and DMARC are properly configured
- Reduce complaints - Make unsubscribe easy, send relevant content
- Retry after 1-2 hours - Temporary blocks usually lift
450 - Mailbox Unavailable
Type: Soft bounce (temporary)
What it means: Recipient's mailbox is temporarily unavailable:
- Mailbox full
- Recipient receiving too many emails
- Server maintenance
How to fix:
- Retry after 4-6 hours
- If persists after 3-5 retries - Remove from list
- Check message size - Large attachments can cause this
451 - Local Error
Type: Soft bounce (temporary)
What it means: The receiving server encountered an error processing your email:
- Server overload
- DNS issues
- Spam filter overload
How to fix:
- Retry after 30-60 minutes
- Check your DNS records - Ensure SPF/DKIM are correct
- Verify sending IP isn't blacklisted - Use MXToolbox
550 - Mailbox Not Found
Type: Hard bounce (permanent)
What it means: The email address doesn't exist. This is the most common bounce code.
Causes:
- Typo in email address
- Account was deleted
- Never existed in the first place
How to fix:
- Remove immediately - Never retry
- Validate new emails before adding - Use bulk email validation to prevent these errors
- Check for typos - Common:
gmial.cominstead ofgmail.com
Prevent 550 Errors Before They Happen
Emails Wipes validates mailbox existence in real-time. Upload your list and remove invalid addresses in seconds.
Try Free Now551 - User Not Local
Type: Hard bounce (permanent)
What it means: The receiving server doesn't handle email for this domain. This usually indicates:
- Domain's MX records point to the wrong server
- Domain was migrated to a new email provider
- Configuration error
How to fix:
- Remove from list - Can't deliver to misconfigured domains
- Check MX records - Use
dig MX example.com - Contact recipient via other channel - Ask for updated email
552 - Mailbox Full
Type: Soft bounce (can become hard)
What it means: The recipient's mailbox has exceeded its storage limit.
How to fix:
- Retry after 24-48 hours - User might clear space
- After 3-5 retries over a week - Remove from list
- Reason: Full mailboxes are usually abandoned accounts
553 - Invalid Mailbox
Type: Hard bounce (permanent)
What it means: The domain name in the email address doesn't exist or has no mail server.
Examples:
[email protected](typo)[email protected](domain expired)
How to fix:
- Remove immediately
- Check for typos - Common mistakes:
.covs.com - Validate domains before sending - Use Emails Wipes
554 - Transaction Failed
Type: Hard bounce (permanent, but fixable)
What it means: Your sending IP/domain is blacklisted or your email failed spam checks.
Common causes:
- IP address is on a blacklist (Spamhaus, Barracuda, etc.)
- SPF/DKIM/DMARC authentication failed
- Content triggered spam filters
How to fix:
- Check blacklists - Use MXToolbox
- Request delisting - Follow blacklist provider's process
- Fix authentication - Set up SPF, DKIM, DMARC correctly (see our complete deliverability guide)
- Improve content - Avoid spam trigger words, ALL CAPS, excessive links
- Switch IP if needed - If reputation is too damaged
Provider-Specific Bounce Codes
Gmail Bounce Codes
550 5.7.1 - Suspected Spam
What it means: Gmail's AI spam filter flagged your email.
How to fix:
- Set up Gmail Postmaster Tools to monitor reputation
- Reduce link density (max 2-3 links per email)
- Use a custom domain (not @gmail.com)
- Improve engagement (opens, clicks, replies)
421 4.7.0 - Temporary Rate Limit
What it means: Your authentication failed or you're sending too fast.
How to fix:
- Set up SPF and DKIM correctly
- Slow down sending rate (Gmail recommends max 2,000/hour for new senders)
- Warm up your domain gradually
Yahoo/AOL Bounce Codes
554 5.7.9 - DMARC Policy
What it means: Yahoo enforces strict DMARC policies.
How to fix:
- Set up DMARC record with
p=quarantineorp=reject - Ensure DKIM alignment (signing domain = From domain)
- Don't send from @yahoo.com or @aol.com addresses
Microsoft/Outlook Bounce Codes
550 5.7.606 - Access Denied
What it means: Your IP is on Microsoft's internal blocklist.
How to fix:
- Use Microsoft's Smart Network Data Services to check reputation
- Request delisting via Microsoft's support form
- Reduce spam complaints and bounce rates
Quick Reference Table: All SMTP Codes
| Code | Type | Meaning | Action |
|---|---|---|---|
| 421 | Soft | Service not available | Retry in 1-2 hours |
| 450 | Soft | Mailbox unavailable | Retry in 4-6 hours |
| 451 | Soft | Local error | Retry in 30-60 min |
| 452 | Soft | Insufficient storage | Retry in 24h |
| 550 | Hard | Mailbox not found | Remove immediately |
| 551 | Hard | User not local | Remove immediately |
| 552 | Soft | Mailbox full | Retry 3x, then remove |
| 553 | Hard | Invalid mailbox | Remove immediately |
| 554 | Hard | Transaction failed | Check blacklists, fix auth |
Extended Status Codes (Y.Y.Y)
The three-part extended code provides more detail:
First Digit: Class
- 2.X.X: Success
- 4.X.X: Persistent transient failure (soft bounce)
- 5.X.X: Permanent failure (hard bounce)
Second Digit: Subject
- X.0.X: Undefined / Other
- X.1.X: Addressing (mailbox, domain issues)
- X.2.X: Mailbox status (full, disabled)
- X.3.X: Mail system (server errors)
- X.4.X: Network routing
- X.5.X: Protocol status
- X.6.X: Message content
- X.7.X: Security / Policy
Third Digit: Detail
- X.X.0: Other / undefined
- X.1.1: Bad destination mailbox address
- X.1.2: Bad destination system address
- X.2.1: Mailbox disabled
- X.2.2: Mailbox full
- X.7.1: Delivery not authorized
Best Practices for Handling Bounces
- Automate bounce processing - Don't manually review every bounce
- Remove hard bounces immediately - Never retry 5xx errors
- Retry soft bounces intelligently - Max 3-5 attempts over 72 hours
- Track bounce rates per campaign - Aim for <2%
- Validate emails before adding to list - Prevent bounces proactively
- Monitor sender reputation - Use Google Postmaster, Sender Score
- Set up proper authentication - SPF, DKIM, DMARC are mandatory
How to Prevent Bounces
1. Validate Emails Before Sending
The best way to handle bounces is to prevent them. Use an email validation service like Emails Wipes to check:
- Syntax errors
- Domain validity
- Mailbox existence
- Spam traps
- Disposable email addresses
2. Use Double Opt-In
Require users to confirm their email address by clicking a link. This ensures:
- Email address is valid
- User has access to the mailbox
- User actually wants your emails
3. Clean Your List Regularly
Run your list through validation every 3-6 months to remove:
- Old addresses that no longer exist
- Inactive subscribers (no opens in 6+ months)
- Role-based emails (info@, admin@, noreply@)
4. Monitor Engagement
Stop sending to people who never open. After 6 months of no engagement:
- Send re-engagement campaign
- If still no response, remove from list
What to Do Right Now
- Export your last campaign's bounces - Categorize by code (4xx vs 5xx)
- Remove all 5xx hard bounces - Never send to them again
- Set up retry logic for 4xx soft bounces - 3 attempts over 72 hours
- Validate your current list - Run through Emails Wipes
- Check authentication - Verify SPF, DKIM, DMARC with MXToolbox
- Monitor reputation - Set up Google Postmaster Tools
Stop Bounces Before They Happen
Emails Wipes validates your entire list in seconds. Remove invalid addresses, spam traps, and risky emails before you send.
Clean Your List NowConclusion
SMTP bounce codes aren't random numbers - they're precise signals telling you exactly what went wrong and how to fix it.
Remember the golden rules:
- 4xx = Soft Bounce - Retry up to 5 times over 72 hours
- 5xx = Hard Bounce - Remove immediately, never retry
- Prevention > Reaction - Validate emails before sending
By understanding and properly handling bounce codes, you'll protect your sender reputation, improve deliverability, and get more emails into the inbox.