Soft Bounce vs Hard Bounce: What to Do With Each
Temporary failures vs permanent — how to read SMTP codes and clean your lists.
Not every bounce means delete the contact. Understanding codes saves good leads and removes dead addresses that hurt reputation.
Quick summary
- Soft bounce — a temporary failure. The receiving server replied with a 4xx code: mailbox full, server busy, or “try again later”. Sending servers retry automatically.
- Hard bounce — a permanent failure. The server replied with a 5xx code: the address does not exist, the domain has no mail server, or the message was refused by policy.
- 550 5.1.1 — user unknown; the address does not exist
- 552 or 452 with 5.2.2 or 4.2.2 — mailbox full
- 421 or 451 — temporary problem or rate limiting at the receiver; retry later
The difference
- Soft bounce — a temporary failure. The receiving server replied with a 4xx code: mailbox full, server busy, or “try again later”. Sending servers retry automatically.
- Hard bounce — a permanent failure. The server replied with a 5xx code: the address does not exist, the domain has no mail server, or the message was refused by policy.
Codes you will see
- 550 5.1.1 — user unknown; the address does not exist
- 552 or 452 with 5.2.2 or 4.2.2 — mailbox full
- 421 or 451 — temporary problem or rate limiting at the receiver; retry later
- 550 or 554 with 5.7.x — rejected by policy, often authentication or reputation
What to do with each
- Hard bounce for a bad address: remove it from your lists straight away
- Hard bounce for a policy reason (5.7.x): read the message text — it often names the problem, such as a failed SPF or DKIM check
- Soft bounce: let retries run; if the same address soft-bounces for days, treat it as dead
- Many bounces at once usually means a DNS or authentication problem, not bad addresses
Where to find the reason
OquMail records the receiving server’s response for every delivery attempt, so you can read the exact code and message instead of guessing. See how to handle bounced emails for more.