Reading bounce codes properly

The number tells you almost nothing. The text after it tells you everything.

Your sending platform shows you hard bounces and soft bounces. That is a two-bucket summary of a protocol with dozens of distinct outcomes, and the summary throws away the diagnosis.

550 5.1.1 means the mailbox does not exist. Suppress that address permanently and move on. 550 5.7.1 also starts with 550 and means something completely different: your message was refused by policy, the mailbox is probably fine, and the problem is your reputation or your authentication.

Both land in the same hard bounce bucket. One is a list problem and one is a sending problem, and treating them alike means either deleting good contacts or ignoring a blocklist listing for weeks.

The 4xx codes are worse served. 421 is a rate limit, 450 is often greylisting, 452 is frequently a full mailbox. All three appear as a soft bounce, and all three want a different response.

The codes worth knowing by sight

550 5.1.1: no such user. Permanent, and the cleanest signal in the protocol.

550 5.7.1: blocked by policy. Read the text after it, which usually names a blocklist or an authentication failure.

554: transaction failed, the vaguest permanent code there is. The extended text is the only useful part.

552: over quota. The address is valid and the mailbox is full, which is temporary until it is not.

421: service unavailable, almost always a rate limit aimed at your connection rather than at the recipient.

252: cannot verify but will accept. Yahoo's anti-harvesting response, and not a verdict about anything.

Where this argument costs us something

The short version

  • Read the text after the code, not the hard or soft label your platform shows.
  • Split 550 5.1.1 from 550 5.7.1 in your analysis, because they need opposite responses.
  • Never convert a 4xx into a permanent verdict, in a bounce log or in a verification result.

Questions people ask

Is every 5xx a hard bounce?

Technically permanent, and not always about the address. A 552 over-quota response is a 5xx and the mailbox is real. A 550 policy rejection is a 5xx and the recipient did nothing wrong.

Where do I find the full bounce text?

In your sending platform's logs rather than its report screen. Some platforms keep the whole SMTP exchange and some discard everything but the category.

See both numbers on your own list

100 free checks a month, no card. Addresses we could not get an answer on come back labeled, and we do not bill them.