Deliverability

Email bounce codes explained: 550, 552, 421 and what to do

A plain-English cheat sheet for SMTP status codes. What 4xx vs 5xx means, the specific codes you will actually see, and the one pattern that tells you when the fix is on your side.

September 28, 2026 · 5 min read

Every bounce message carries a numeric code that tells you exactly why the email was rejected. Once you can read it, a scary-looking delivery failure becomes a two-second diagnosis. Here’s what the numbers mean and what to do about each one.

From our complete guide, Mail delivery failed: returning message to sender — where these codes sit in the wider picture of reading and fixing bounces.

The one digit that matters most

SMTP codes come in two parts: a three-digit basic code (like 550) and a dotted “enhanced” code (like 5.1.1). The very first digit tells you almost everything:

  • 4xx — temporary. A passing problem. The sending server keeps retrying, usually for a day or two.
  • 5xx — permanent. The server is refusing outright. Retrying won’t help; something has to change.

That single digit maps directly onto the two kinds of bounce:

Permanent Hard bounce

The address will never accept mail. Don’t retry.

  • Address doesn’t exist / typo
  • Domain doesn’t exist
  • Recipient server blocked you

Do: fix the typo or remove the address. Repeated sends to dead addresses hurt your reputation.

Temporary Soft bounce

A passing problem. It may work if you try again later.

  • Mailbox full
  • Message too large
  • Server down or greylisting

Do: usually nothing — servers auto-retry soft bounces for a day or two before giving up.

The codes you’ll actually see

Code Type What it means What to do
550 5.1.1 Permanent No such user / address doesn’t exist Fix the typo or remove it
550 5.7.1 Permanent Rejected — spam, policy, or blocklist Check SPF/DKIM & reputation
552 5.2.2 Permanent Mailbox full / over quota Ask recipient to clear space
552 5.3.4 Permanent Message too large Send a link, not an attachment
421 4.7.0 Temporary Service unavailable / rate-limited Wait — it will auto-retry
451 4.7.1 Temporary Greylisted — try again shortly Nothing; normal anti-spam step
450 4.2.1 Temporary Mailbox busy / temporarily blocked Let the retry handle it

The pattern worth memorising

A 5.1.x code is about the address — it doesn’t exist, or it’s mistyped. A 5.2.x code is about the mailbox — usually full. And a 5.7.x code is about policy and reputation — the receiver thinks your mail is spam or can’t verify it’s really from you.

That last group is the one you can fix at the source. A 5.7.1 almost always traces back to missing or misaligned authentication — set up SPF, DKIM and DMARC and those rejections disappear. If instead you’re getting bounces for mail you never sent, that’s backscatter, not a code problem.

Related reading

Fix email delivery on your site

SecureSMTP delivers WordPress, Shopify, and custom form emails with SPF + DKIM + DMARC alignment. Free tier covers most small sites.