Email Bounce Codes Explained: What They Mean
SMTP reply codes like 550, 421, and 450 tell you exactly why an email bounced. Here is what each one means and the right action for permanent versus temporary failures.
Every bounced email comes with a reason, and most of the time that reason is a three-digit number buried in a log or a mailbox provider's reply. Learn to read those numbers and you stop guessing about why mail fails. The codes tell you whether the address is dead, whether the receiving server is just busy, and whether you should retry or delete and move on.
This is a plain-English guide to SMTP reply codes: what 550, 421, and 450 actually mean, the line between permanent and temporary failures, and the right action for each.
The two families: permanent (5xx) and temporary (4xx)
SMTP groups its replies by the first digit. For bounces, only two ranges matter day to day.
- 5xx is a permanent failure. The server is saying "do not bother trying again." The mailbox does not exist, the domain rejected you, or the message was refused on policy grounds. These show up as hard bounces.
- 4xx is a temporary failure. The server is saying "not right now, try later." The mailbox might be full, the server might be rate-limiting you, or greylisting is in play. These are soft bounces, and a healthy sender usually retries them automatically for a day or two.
The 2xx range (like 250 OK) means accepted, and 3xx is part of the conversation mid-handshake. You will not see those as bounces.
The codes you will actually see
550 , mailbox unavailable or rejected
The most common hard bounce. Usually it means "no such user here," the address does not exist. It can also mean the server blocked you on reputation or a blocklist hit. Read the text that follows the number: "User unknown" and "recipient address rejected" point at the address; "blocked using spamhaus" or "policy" points at your sending reputation. If it is a dead address, remove it. If it is a block, the problem is your IP or domain, not the recipient.
551, 552, 553, 554 , the rest of the 5xx pack
- 551 user not local. The recipient moved; sometimes the reply names a forwarding address.
- 552 mailbox full or message too large. Technically over quota, but treat a persistent 552 as undeliverable.
- 553 mailbox name not allowed, often a malformed or invalid address. Fix the syntax or drop it.
- 554 transaction failed, the catch-all rejection. Frequently a spam or policy refusal with no detail. Check your content and authentication.
421 , service not available
Temporary. The receiving server is shutting down the connection, often because it is overloaded or because you are sending too fast. Microsoft and Google both throw 421 when they want you to slow your rate. Back off, spread the send over more time, and your queue will clear. If 421 is constant, your IP reputation may be flagged for throttling.
450 and 451 , mailbox busy or local error
Both temporary. 450 usually means the mailbox is unavailable right now or you have been greylisted, a deliberate "come back in a few minutes" trick that filters out spammers who never retry. A legitimate sender retries and gets through. 451 means the receiving server had a local processing error or is deferring you for policy reasons. Let your retry schedule handle these.
Permanent vs temporary, and what to do
| Code | Type | Plain meaning | Action |
|---|---|---|---|
| 250 | Success | Accepted | Nothing, it delivered |
| 421 | Temporary | Server busy or throttling you | Slow down, retry |
| 450 | Temporary | Mailbox busy or greylisted | Retry on schedule |
| 451 | Temporary | Local server error or deferral | Retry, then investigate |
| 550 | Permanent | Mailbox does not exist or blocked | Remove address or fix reputation |
| 552 | Permanent | Over quota or message too big | Remove if persistent |
| 554 | Permanent | Refused, usually spam or policy | Fix content and auth |
The rule of thumb: a single 4xx is noise, repeated 4xx is a signal, and any 5xx for a bad address is final. Your mail server retries 4xx codes automatically, typically for 24 to 72 hours, then converts an unresolved soft bounce into a hard bounce.
Enhanced status codes give you the detail
Most modern servers also return a finer code in the format X.X.X, defined in RFC 3463. So a 550 often arrives as "550 5.1.1 user unknown." The first digit matches the SMTP class (5 = permanent), and the rest narrows it down. A few worth knowing:
- 5.1.1 bad destination mailbox, the address does not exist.
- 5.1.10 recipient address is a null or non-existent route, common from Microsoft 365 for unknown users.
- 5.7.1 delivery not authorised, a policy or spam block.
- 4.2.2 mailbox full, temporary.
Stop the bounce before it happens
Reading bounce codes is reactive. By the time you see a 550, the damage to your sender reputation is already counted. The cleaner play is to verify addresses before you send, so the dead ones never enter your campaign. That is the whole point of a free email verifier: it runs the SMTP conversation up to the point where the server would say 550, without delivering anything, and tells you which addresses are real. Pair that with steady email list hygiene and you keep bounce rates low enough to stay out of the throttling tier. For the wider picture, see how this fits into reducing your bounce rate and improving deliverability.
What is the difference between a hard bounce and a soft bounce?
A hard bounce is a permanent failure (a 5xx code) where the address is dead or the message was flatly refused, so it will never deliver. A soft bounce is a temporary failure (a 4xx code) like a full mailbox or a busy server, which usually clears on retry. Remove hard bounces from your list immediately; let soft bounces retry before acting.
Should I retry an email that got a 550?
No. A 550 is permanent, so retrying wastes sending capacity and signals to the receiving server that you are not honouring its rejections, which hurts your reputation. Remove the address. The only exception is when the 550 text clearly references a temporary block on your IP rather than the recipient, in which case fix the block first.
Why do I keep getting 421 errors from one provider?
A persistent 421 from a single provider, often Microsoft or Google, almost always means rate limiting. You are sending faster than they will accept from your IP, or your reputation with them is low enough that they throttle you on purpose. Slow your send rate, warm the IP gradually, and clean your list so a smaller share of your volume bounces.