What is the difference between a 2xx, 4xx, and 5xx SMTP response?

Still have a question, spotted an error, or have a better explanation or a source we should cite?

When your mail server sends an email, the receiving server responds with a three-digit code. That code tells you whether the message made it through, got temporarily held up, or failed permanently. These codes are grouped by their first digit: 2xx means success, 4xx means try again later, and 5xx means it's not happening.

2xx codes: success. Your email was accepted. The most common is 250 OK. It doesn't guarantee inbox placement (spam filters still run after acceptance), but it means the receiving server took delivery and will attempt to deliver it.

4xx codes: soft bounce. Something went wrong, but it's temporary. Common examples:

  • 421 Service not available (the server's too busy right now)
  • 450 Mailbox unavailable (the recipient's inbox is full or temporarily offline)
  • 451 Local error in processing (the server had an internal hiccup)
  • 452 Insufficient system storage (the server ran out of disk space)

Your ESP will automatically retry 4xx errors over several hours or days. If the issue clears up, the email goes through. If it doesn't, the bounce eventually becomes permanent.

5xx codes: hard bounce. Permanent failure. The message is never getting delivered. Common examples:

  • 550 Mailbox not found (the email address doesn't exist)
  • 551 User not local (the domain doesn't handle mail for this address)
  • 552 Mailbox full (inbox is at capacity and not accepting new mail)
  • 553 Mailbox name not allowed (the address is invalid or blocked)
  • 554 Transaction failed (generic rejection, often spam-related)

5xx bounces should be removed from your list immediately. Sending to them repeatedly tanks your sender reputation.

Why this matters: mailbox providers watch your bounce rates. High hard bounce rates signal that you're sending to stale lists or purchased addresses, which damages your reputation and hurts future deliverability. Soft bounces are less damaging but still count against you if they don't resolve. Most ESPs (Mailchimp, Brevo, Postmark) handle this automatically by suppressing addresses that hard bounce and retrying soft bounces on a schedule.

Now if you're seeing a spike in 5xx bounces, it usually means your list has aged or you added unverified addresses. Run your list through validation before your next send. If you're seeing a lot of 4xx bounces, it's often a sign of rate limiting or reputation issues (the receiving server doesn't trust you yet). Either way, don't just keep hammering the same addresses hoping they'll work eventually.

And one One more thing: some ESPs and analytics platforms group these into "soft bounce" (4xx) and "hard bounce" (5xx) categories. That's shorthand for temporary vs. permanent, and now you know what's underneath.

Contributors

Who worked on this answer

Every name links to their profile. Every company links to their site. Real people, real accountability.

Ask an AI · tailored to your setup

Get personalized SMTP response advice →

I read this on the Email Almanac about SMTP response codes (2xx, 4xx, 5xx): "When your mail server sends an email, the receiving server responds with a three-digit code. 2xx means success. 4xx means temporary failure (soft bounce), like a full inbox or busy server. 5xx means permanent failure (hard bounce), like an address that doesn't exist. High bounce rates damage your sender reputation." Help me understand how this applies to MY specific situation. I need: 1. What bounce rates are normal vs. concerning for my setup? 2. What I should check if I'm seeing high 4xx or 5xx rates 3. How to clean my list and prevent future bounces 4. Whether my ESP is handling bounces correctly --- My details (fill in what applies): - Email platform/ESP: e.g. Mailchimp, SendGrid, Postmark, custom SMTP - Current bounce rate: if known: e.g. 2% soft, 5% hard - Sending volume: e.g. 5,000/month or 500/day - List age: how old is your list? when did you last clean it? - Recent changes: new domain, list import, campaign type change - What I'm seeing: describe the bounce behavior you're troubleshooting

Edit the yellow boxes, then send to the AI of your choice.