SMTP responses look cryptic and are not. The first digit carries almost all the information, and getting the response to that digit right is one of the more consequential things a sending system does.
The first digit is the whole message
| Class | Meaning | Correct action |
|---|---|---|
| 2xx | Accepted | Nothing — the receiving server took it |
| 4xx | Temporary failure | Retry with a widening backoff |
| 5xx | Permanent failure | Suppress. Never retry |
One important nuance: a 2xx means the receiving server accepted the message, not that it placed it in the inbox. Acceptance followed by silent filing into spam is extremely common, and no SMTP code will tell you it happened.
The codes you will actually see
421 — Service not available
The most common code in bulk sending. The server is unavailable or is deliberately throttling you. Temporary. Stop sending from that account and come back later. Continuing to retry immediately is the single fastest way to turn a short throttle into a long one.
450 — Mailbox unavailable
Temporary. Often greylisting: the receiving server deliberately rejects an unfamiliar sender on first contact, expecting a legitimate one to retry. Genuine senders retry and get through; much bulk software does not. Retrying correctly here is a small but real deliverability advantage.
451 — Local error in processing
Temporary, on the receiving side. Retry normally.
452 — Insufficient storage
Temporary. The recipient's mailbox is full. Retry on a backoff, and escalate to permanent after around 72 hours.
550 — Mailbox unavailable or rejected
Permanent, and the most important one to handle correctly. Usually the address does not exist. It is also returned on policy rejection — failed authentication, blocklisted domain, content refused. The accompanying text distinguishes these. Suppress the address either way, and if the text indicates a policy rejection, investigate immediately: that is a reputation problem, not a list problem.
551, 553 — Not local / invalid mailbox name
Permanent. Malformed or misrouted address. Suppress.
552 — Message too large
Permanent for this message, though not a fault of the address. Reduce attachment size or host large files rather than attaching them, and do not suppress the recipient.
554 — Transaction failed
Permanent and generic, frequently used for outright spam rejection. If you see these at volume, the problem is your reputation rather than your list.
Enhanced status codes
Many servers return a more precise code alongside the basic one, in the form 5.1.1 or 4.7.0. The middle digit narrows the category — x.1.x concerns the address, x.7.x concerns policy and security. A 5.7.1 usually means your message was rejected on policy grounds rather than because the recipient does not exist, which is a materially different problem.
Getting the retry behaviour right
The rules are short and consequential:
- Never retry a 5xx. The outcome will not change, and repeated attempts signal software that ignores responses.
- Retry 4xx on a widening interval — minutes, then longer — not in a tight loop.
- Give up on persistent 4xx after roughly 72 hours and treat it as permanent.
- Back off the whole account on a 421 or 429, not just the individual message.
On Email.biz.pk this is handled automatically: a 421 or 429 places the account in a sixty-minute cool-down and removes it from the sending rotation, while other accounts continue. Hard bounces enter the suppression list permanently. The reasoning is covered further in our guide to hard and soft bounces.