Skip to content
Blog/Infrastructure
SMTP bounce codes explained: 4xx, 5xx, and what each one tells a cold-email operator
Infrastructure · 6 min read

SMTP bounce codes explained: 4xx, 5xx, and what each one tells a cold-email operator

Every cold-email bounce returns a numeric SMTP code. Most operators ignore them. Reading the codes turns a black-box bounce into a specific problem you can fix.

Rejwan NirobRejwan Nirob·May 23, 2026·6 min read

Every email that fails to deliver returns an SMTP status code from the receiving server. The codes follow a specific structure - first digit is the result category, second and third digits give increasing specificity. Most cold-email operators treat all bounces as the same. Reading the actual code turns a vague "soft bounce" into a precise diagnostic.

The 4xx family - temporary failures

4xx codes mean "try again later." The sending tool retries automatically; if all retries fail the bounce escalates to hard. Common 4xx codes for cold email:

  • 421 - service not available, try later (often greylisting or temporary overload)
  • 450 - mailbox unavailable, try later (often mailbox quota nearly full)
  • 451 - local error, try later (receiver-side issue, retry usually works)
  • 452 - insufficient storage (recipient mailbox full, retry rarely works)
  • 4.7.x - policy reasons (sender reputation flagged, may not resolve on retry)

The 5xx family - permanent failures

5xx codes mean "do not retry." The sending tool suppresses the recipient immediately. Common 5xx codes for cold email:

  • 550 - mailbox unavailable (most common hard bounce - address does not exist)
  • 551 - user not local (recipient does not exist at this server)
  • 552 - storage allocation exceeded (mailbox full and permanent)
  • 553 - mailbox name not allowed (invalid syntax)
  • 554 - transaction failed (often policy rejection, listed in spam database)
  • 5.7.1 - delivery not authorized (DMARC reject, SPF fail, or sender blocked)
  • 5.7.26 - sender IP not authorized (SPF authentication failure at the IP level)

The signal hidden in the code

A burst of 550 codes on one campaign tells you the list quality is bad. A burst of 5.7.x codes tells you your DNS authentication has a problem. A pattern of 421s from one specific receiver suggests greylisting. The same bounce volume can mean very different problems depending on which codes dominate.

Reading codes operationally

  • Group bounces by code, not by recipient - patterns appear at the code level
  • 550 spike - validate the list before next send
  • 5.7.x spike - audit SPF/DKIM/DMARC immediately
  • 4.7.x persistent - investigate sender reputation drop
  • 452 spike - target audience may be enterprise users with strict quotas
  • 554 from specific senders - check Spamhaus listings on the affected domains
A bounce code is a free diagnostic. The receiving server is telling you exactly what failed. Most cold-email programs ignore the signal and treat every bounce identically.

What sending tools surface

Smartlead, Instantly, Lemlist, and Apollo all log the SMTP response per send, including the bounce code and reason text. The data is usually accessible under "campaign analytics" or "bounce details." Most operators do not look at it. The 30 seconds it takes to glance at the dominant code on a bounced campaign is the highest-leverage diagnostic available.

On Inboxlee

Inboxlee surfaces bounce-code patterns in the deliverability dashboard, grouped by code family across the mailbox cohort. A campaign that produces 4 percent 550 bounces from one cohort and 0.5 percent from another tells you which lists or which mailboxes are the problem.

Apply this now

Group bounces by SMTP code on your next campaign. Whichever code dominates tells you what to fix - list quality, DNS auth, or sender reputation. Each is a different intervention.

See deliverability dashboard

Frequently asked

What do SMTP bounce codes mean for cold email?

SMTP codes follow a structure: first digit is the result category (2xx success, 3xx more info needed, 4xx temporary failure, 5xx permanent failure). For cold email, 4xx means retry (sending tool handles automatically) and 5xx means permanent failure. The second and third digits give specificity - 550 means "mailbox does not exist," 5.7.1 means "delivery not authorized" (usually DMARC), 421 often means greylisting.

What does a 550 bounce mean in cold email?

550 is the most common hard bounce code - "mailbox unavailable, recipient address does not exist." A burst of 550 codes on one campaign tells you the list quality is bad and validation was insufficient. Suppress every 550 recipient immediately. If the rate exceeds 4 percent, pause sending and re-validate the entire list before continuing.

What is a 421 SMTP error and is it a problem for cold email?

421 is "service not available, try later" - a 4xx temporary failure. Usually means greylisting (receiving server testing whether you are a legitimate sender that will retry) or temporary server overload. The sending tool retries automatically and the message typically delivers within 5-30 minutes. Not a sender-reputation problem.

What does 5.7.1 mean as a cold-email bounce?

5.7.1 is "delivery not authorized" - the receiving server explicitly rejected the message based on policy. Most common causes: DMARC reject (your SPF or DKIM failed alignment), explicit sender blocking by the recipient or organization, or IP-level spam rejection. A spike in 5.7.1 codes is a DNS-authentication problem - audit SPF/DKIM/DMARC immediately.

How do I diagnose cold-email bounces by SMTP code?

Group bounces by code, not by recipient. Patterns appear at the code level. 550 spike means list quality is bad. 5.7.x spike means DNS auth is broken. 4.7.x persistent means sender reputation has dropped. 452 spike means audience has strict quotas. 554 from specific senders may mean Spamhaus listing. Each pattern is a different intervention; reading the dominant code tells you which.

More in Infrastructure