Mailbase
FeaturesPricingDocsBlogComparisonsChangelog
Sign inStart free
Home/Blog/SMTP Bounce Codes: How to Read and Act on Failed Email
DeliverabilityUpdated July 26, 20268 min read

SMTP Bounce Codes: How to Read and Act on Failed Email

A practical operator guide to SMTP bounce codes: classify failures, choose retries vs suppressions, and build a safer response workflow.

By Mailbase Team · Target keyword: SMTP bounce codes
Glowing network cables converging into a switch — SMTP Bounce Codes: How to Read and Act on Failed Email
Photo from Unsplash
On this page
OverviewRead the code in three layersTurn bounce codes into an action mapOperator checklist for common SMTP failuresWhere Mailbase fits in bounce-code operationsCommon MistakesSources & Further ReadingRelated guidesFAQRelated reading

Overview

SMTP bounce codes are the compact failure messages returned when a receiving mail server rejects or delays delivery. The code tells you whether the problem is temporary, permanent, recipient-specific, content-related, or reputation-related. The operator mistake is treating every bounce as either "bad address" or "try again later"; the useful workflow is to classify the code, preserve the diagnostic text, and trigger the right follow-up automatically.

Read the code in three layers

Analytics dashboard on a screen with charts — Read the code in three layers
Photo from Unsplash

Start with the first digit of the SMTP reply. A 2xx response is success, a 4xx response is a transient failure that may succeed later, and a 5xx response is a permanent failure for that attempt. RFC 5321 defines the SMTP reply model, while RFC 3463 adds enhanced status codes in the `class.subject.detail` format, such as `4.2.2` for a temporarily full mailbox or `5.1.1` for a bad destination mailbox.

Then read the enhanced status subject when it is present. `X.1.X` usually points at addressing or mailbox problems, `X.2.X` at mailbox state, `X.3.X` at mail system status, `X.4.X` at network or routing, `X.5.X` at protocol or command problems, and `X.7.X` at security, policy, or reputation issues. Finally, keep the human diagnostic string because receivers often include the most actionable detail there: blocklist names, policy URLs, authentication failures, or rate-limit hints.

  • Use the first digit for temporary vs permanent classification
  • Use enhanced status codes for subject-level diagnosis
  • Store the raw diagnostic text; it often contains the fix
  • Separate recipient failures from domain-wide reputation or policy failures
SignalWhat it usually meansDefault action
4xx / 4.X.XTemporary failure, deferral, throttling, mailbox temporarily unavailableRetry with backoff; monitor for repeated deferrals
5.1.1Recipient mailbox does not exist or cannot receive mailHard-bounce and suppress that address
5.2.2Mailbox full or over quotaTreat as a soft failure first; suppress only after repeated failures
5.7.1Policy, authentication, reputation, relay, or permission rejectionDo not assume a bad address; investigate auth, content, and reputation
No enhanced codeProvider gave only a basic SMTP reply or webhook categoryPreserve raw text and map conservatively

Turn bounce codes into an action map

Glowing server rack and cabling — Turn bounce codes into an action map
Photo from Unsplash

A good bounce workflow makes the next step deterministic. Recipient-not-found failures should move the address into suppression immediately. Temporary 4xx failures should stay in a retry queue with exponential backoff and a maximum age. Mailbox-full failures deserve a short retry window, not permanent suppression on the first event. Reputation and policy blocks should create an incident signal because retrying the same content to the same provider can deepen the problem.

Do not let the provider's broad category be the only record. Normalize into your own fields: class, enhanced code, provider, recipient domain, provider message ID, campaign or transactional template, raw diagnostic, final decision, and who reviewed any manual override. That lets you answer whether a spike came from one imported list, one Gmail policy block, one broken DKIM setup, or one template that triggered filtering.

  • Permanent recipient failures belong in suppression
  • Temporary failures belong in a bounded retry queue
  • Policy and reputation failures belong in incident review
  • Provider-domain clustering matters more than one-off messages
  1. Parse the SMTP reply and enhanced status code when the provider exposes it.
  2. Classify the failure as recipient, mailbox, content, authentication, reputation, network, or provider-limit related.
  3. Choose the default action: suppress, retry, pause segment, pause provider/domain, or escalate for review.
  4. Record the raw diagnostic text and the normalized decision on the send event.
  5. Aggregate failures by recipient domain and campaign before resuming volume.

Operator checklist for common SMTP failures

Use this checklist when bounce codes start appearing in webhooks or delivery logs. The order matters: protect recipients and reputation first, then debug the provider-specific detail. If you suppress good recipients during a reputation incident, you lose reachable users; if you keep mailing bad addresses during a hard-bounce spike, you damage the domain for everyone else.

For transactional email, avoid blanket pauses unless product-critical mail is clearly being rejected across a provider. For marketing campaigns, it is safer to pause the affected segment or campaign while you inspect authentication, list source, content changes, and complaint signals.

  • Pause the smallest affected scope, not every mailstream by default
  • Compare failures by provider domain, template, segment, and sending domain
  • Keep transactional and marketing incidents separate where possible
  • Resume gradually after the root cause is fixed
PatternLikely causeWhat to do next
Many 5.1.1 failures on a new importBad or stale list sourceStop that segment, suppress failures, verify the remaining addresses
Many 4.7.X or rate-limit deferralsVolume ramp or provider throttlingSlow the send rate and retry with backoff
5.7.1 across one mailbox providerPolicy, authentication, or reputation blockCheck SPF/DKIM/DMARC alignment, content changes, complaints, and postmaster tools
Failures only on one templateContent, link, or attachment problemRollback the template and run seed tests before resuming
Mixed failures after a domain migrationDNS or alignment driftAudit sender domains, tracking domain, DKIM selectors, and DMARC reports

Where Mailbase fits in bounce-code operations

Mailbase is relevant when SMTP failures need to become operational workflow instead of invisible provider logs. Delivery and bounce events can feed analytics, suppression/compliance controls, send-job review, and reply context so a teammate can see whether a campaign is healthy before continuing volume.

For teams using a BYO useSend stack, the same discipline still applies: keep the sending layer responsible for delivery events, and let the workflow layer make those events visible next to campaigns, segments, templates, and replies. The point is not to guess deliverability from a single chart; it is to turn raw failures into retry, suppression, and incident decisions.

  • Use suppression for hard recipient failures
  • Use send-job review for retryable or provider-specific failures
  • Use analytics by provider to spot clustered blocks
  • Keep diagnostics attached to the campaign or transactional send that caused them

Common Mistakes

  • Skipping SPF, DKIM, and DMARC, or assuming they're a one-time setup.
  • Sending real volume from a brand-new, un-warmed domain.
  • Reusing a stale list without re-verifying, so bounces spike.
  • Ignoring complaint rate until a single bad campaign sinks the domain.

Sources & Further Reading

Official docs for current setup details, pricing, and API behavior — verify specifics there, since they change.

RFC 5321: Simple Mail Transfer Protocol
RFC 3463: Enhanced Mail System Status Codes
Google email sender guidelines

Related guides

More on smtp bounce codes and the surrounding deliverability workflow:

unsubscribe and compliance docs
sender domain docs
SPF, DKIM, and DMARC
bounce management
suppression lists
unsubscribe best practices
Mailbase API docs
Try Mailbase free
Send 200 emails a month on us. Paid plans start at €9 — or bring your own useSend for €5.
See plans

FAQ

What are SMTP bounce codes?

SMTP bounce codes are server reply codes that explain why an email was delayed or rejected. Basic SMTP replies use three digits such as 421, 450, 550, or 554; enhanced status codes add a structured class.subject.detail value such as 4.2.2 or 5.7.1 for more precise diagnosis.

Is every 5xx SMTP code a hard bounce?

No. A 5xx code means the receiving server treated this attempt as a permanent failure, but the reason still matters. A 5.1.1 bad-mailbox failure should usually be suppressed; a 5.7.1 policy or reputation block may affect many valid recipients and should trigger deliverability investigation instead.

Should 4xx SMTP failures be retried?

Usually yes. 4xx failures are transient by design, so retry with backoff and a maximum retry window. If the same provider keeps deferring mail, slow the send rate and investigate throttling, reputation, or authentication problems.

What should I store from a bounce event?

Store the SMTP code, enhanced status code, raw diagnostic text, provider, recipient domain, message ID, campaign or template, normalized failure category, final action, and review metadata. The raw text is often what tells you the specific policy or blocklist involved.

Related reading

Deliverability7 min read
SPF, DKIM, and DMARC Explained Simply
SPF, DKIM, and DMARC explained in plain English: what each record does, how they work together to authenticate your email, how to set them up, and the common mistakes that break them.
Deliverability7 min read
Email Bounce Management for SaaS Teams
Hard vs soft bounces explained, what causes them, how to handle each, acceptable bounce rates, and why suppressing bounces automatically protects your sender reputation.
Deliverability7 min read
What Is an Email Suppression List?
What an email suppression list is, what belongs on it (unsubscribes, bounces, complaints, manual), why it protects sender reputation and keeps you compliant, and how to manage it.
Deliverability7 min read
Email Unsubscribe Best Practices
Why making unsubscribing easy improves deliverability, how one-click and List-Unsubscribe headers work, what the law requires, and how a preference center reduces opt-outs.
Deliverability7 min read
Email Deliverability Basics for SaaS Founders
Email deliverability explained for founders: the five things that decide whether you reach the inbox — authentication, reputation, list hygiene, engagement, and compliance — and how to monitor them.
Deliverability7 min read
Domain Warmup for SaaS Email: A Practical Guide
How to warm up a new sending domain or IP: why it matters, a week-by-week volume ramp, automated warmup, and how to keep reputation once you're warm.
Mailbase
Product
FeaturesPricinguseSend integrationChangelog
Learn
BlogDocsAPI referenceResources
Compare
ComparisonsAlternatives
Guides
Transactional email servicesSelf-hosted useSend stackSelf-hosted email marketingSPF, DKIM & DMARCEmail deliverability
Legal
TermsPrivacy
© 2026 Mailbase · french-webEmail workflow for builders.