Soft Bounces vs Hard Bounces
When an email can't be delivered, the receiving server returns an SMTP reply code explaining why. These bounce codes fall into two categories:
- Soft bounce (4xx) — Temporary failure. The server might accept the message later.
- Hard bounce (5xx) — Permanent failure. The message will never be delivered.
Common Soft Bounces (4xx)
421 — Service Not Available
The receiving server is temporarily refusing connections. Causes:
- Server is overloaded
- Rate limiting on incoming connections
- Temporary greylisting
Action: Your mail server should retry automatically (typically for 48-72 hours).
450 — Mailbox Temporarily Unavailable
The mailbox exists but can't accept mail right now. Often caused by:
- Greylisting (deliberate delay for first-time senders)
- Mailbox locked by another process
Action: Retry. Greylisting resolves on the second attempt.
452 — Insufficient Storage
The recipient's mailbox is full.
Action: Retry for a few days. If persistent, the address may be abandoned.
Common Hard Bounces (5xx)
550 — Mailbox Not Found
The email address does not exist. The most common hard bounce.
Action: Remove the address from your list immediately. Continuing to send to invalid addresses damages your sender reputation.
551 — User Not Local
The server doesn't handle mail for this user.
Action: Remove from list or check if the address is correct.
552 — Message Size Exceeded
The message (including attachments) exceeds the server's size limit.
Action: Reduce attachment size. Host files externally and link to them.
553 — Mailbox Name Not Allowed
The email address format is invalid.
Action: Validate the address format and remove if invalid.
554 — Transaction Failed
A catch-all rejection. Often means:
- Content flagged as spam
- IP address is blacklisted
- SPF/DKIM/DMARC authentication failure
Action: Check your content, IP reputation, and authentication records.
Enhanced Status Codes (RFC 3463)
Many servers include enhanced codes in the format X.Y.Z:
5.1.1— Bad destination mailbox address5.2.2— Mailbox full5.7.1— Delivery not authorized (policy rejection)4.7.0— Temporary rate limit4.4.1— Connection timeout
List Hygiene Best Practices
- Remove hard bounces immediately
- After 3 soft bounces across different sends, treat as hard bounce
- Validate email addresses at sign-up (confirmation email)
- Use a bounce processing webhook from your ESP (SendGrid, SES)
- Monitor your bounce rate — above 2% signals reputation risk
Reading Bounce Messages
The bounce email (DSN — Delivery Status Notification) contains:
- The SMTP reply code (e.g., 550)
- Enhanced status code (e.g., 5.1.1)
- Human-readable explanation from the receiving server
- Original message headers for reference