What are SMTP 4xx vs 5xx error codes?

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

You send an email. The receiving server talks back. That conversation happens in a language made of three-digit numbers, and the first digit tells you everything you need to know fast.

SMTP (Simple Mail Transfer Protocol) is the protocol that moves email between servers. When something goes wrong during delivery, the receiving server sends back a response code. Those codes split into two buckets that matter for how bounces are handled.

4xx codes mean "not right now." The receiving server is temporarily unavailable, the mailbox is full, or something's off on their end. The key word is temporary. Your sending infrastructure should queue the message and retry later. Common ones you'll see:

  • 421. Service temporarily unavailable (server overloaded or in maintenance)
  • 450. Mailbox temporarily unavailable
  • 451. Processing error on the receiving server's end
  • 452. Insufficient storage on the receiving server

5xx codes mean "not ever." These are permanent rejections. The receiving server is telling you this delivery will never succeed, no matter how many times you try. Your system should log it, suppress the address, and stop sending there. Common ones:

  • 550. Mailbox not found (address doesn't exist)
  • 551. User not local or forwarding rejected
  • 552. Message too large for this mailbox
  • 553. Mailbox name invalid (often a formatting issue)
  • 554. Transaction failed (catch-all for policy rejections, often spam-related)

The practical difference comes down to what your sending infrastructure does next. A 4xx triggers a deferral, meaning the message sits in a retry queue and gets attempted again on a schedule. A 5xx triggers an immediate hard bounce. Retrying a 5xx address is one of the fastest ways to hurt your sender reputation. You're essentially ignoring a server telling you the address is gone.

Most ESPs handle this automatically. But if you're managing your own infrastructure, or you're debugging logs from a service like Postmark or Mailgun, knowing which bucket you're in tells you whether to wait it out or suppress and move on.

If you're seeing a flood of 5xx codes from addresses that looked valid, it's worth running your list through a cleanup. Addresses can go stale without warning, and sending repeatedly to a dead inbox does real damage to your deliverability. We clean lists at RME if you want a hand with that ;)

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

Paste your SMTP codes and get a plain-English breakdown

I'm seeing SMTP bounce codes in my sending logs and I want to understand what to do with them. Here's what I'm working with: paste the codes or error messages you're seeing. Can you tell me which are temporary (4xx) and which are permanent (5xx), what each code likely means in my specific situation, and what action I should take for each one, whether that's retry, suppress, investigate, or something else?

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