What’s the difference between hard and soft failure codes?
- SMTP response codes indicate whether failures are permanent or temporary, guiding proper handling.
- Hard failures (5xx codes):
- Permanent rejection; don't retry this message to this recipient
- The server is definitively refusing delivery
- Common types:
- 550: User unknown, mailbox unavailable
- 551: User not local
- 552: Message too large
- 553: Mailbox name invalid
- 554: Transaction failed (policy rejection)
- Action: Suppress the address, investigate the cause, don't resend
- Soft failures (4xx codes):
- Temporary issue; retry is appropriate
- The server might accept the message later
- Common types:
- 421: Service unavailable
- 450: Mailbox temporarily unavailable
- 451: Local error, try again
- 452: Insufficient storage
- Action: Queue for retry with backoff, monitor for persistence
- Why the distinction matters:
- Retrying hard failures wastes resources and can look like spam
- Not retrying soft failures loses legitimate mail
- Proper classification drives appropriate suppression logic
- ESPs should handle this automatically, but understanding the logic helps troubleshoot unexpected behavior.
Edge cases: Some servers misuse codes (returning 5xx for temporary issues). The error text often clarifies actual meaning.
Need personalized help?
Decode your bounce codes and next steps Open an AI assistant with your question pre-loaded — just add your details and send.
Was this answer helpful?
Thanks for your feedback!