
An email bounce back (also called a bounce back email or returned email) is an automated message from a mail server telling you that your email wasn't delivered. Somewhere in it is a three-digit code. Its first digit tells you what to do: a 4 means a temporary problem that may clear up on a retry, and a 5 means a permanent failure, so don't keep sending the same message to that address.
Get that distinction wrong across a 50,000-recipient campaign and you either suppress valid addresses or keep mailing dead ones, and both hurt your sender reputation. This guide shows you how to read a bounce back message, what each common code means, and what to do next. For bounce rates and how to calculate them, see our guide to email bounce rate benchmarks.
A bounce back is a notice that a message couldn't be delivered. You'll also see it called a returned email, an undeliverable message or a bounce-back message. Technically it's a delivery status notification (DSN): a message generated by a mail server or gateway that reports the result of a delivery attempt, with a status code and diagnostic text for each recipient (RFC 3464).
So the meaning of an email bounce back comes down to two cases:
Both are covered code by code further down this page.
There's a third case worth separating out: a 5xx block that isn't about the address at all, but about your sending reputation or authentication.

A bounce back message usually has two parts: a notice explaining that delivery failed, followed by the headers of your original message. Most of it is noise. What you need is the line with the 4xx or 5xx number in it (MxToolbox).
Here's a shortened example. It's for illustration only, not a real log, and the addresses are placeholders. The wording of the notice varies by provider; the code line uses Gmail's documented text for a recipient that doesn't exist.
EXAMPLE ONLY: not a real bounce, addresses are placeholders
Your message to jane.doe@example.com couldn't be delivered.
Remote server returned:
550 5.1.1 The email account that you tried to reach does not exist.
----- Original message headers -----
From: you@yourcompany.example
To: jane.doe@example.com
Subject: Spring newsletter
Date: Thu, 1 Oct 2026 09:12:44 +0000
To read it:
550) and, if present, the enhanced code next to it (5.1.1).5 is permanent, 4 is temporary.A tip for bounces from Microsoft Exchange servers: older Exchange bounces include diagnostic information for administrators, and its "Generating server" line shows which server issued the bounce. MxToolbox described this in a 2011 article, so the exact layout may differ today.
Whether the subject line says your email was undeliverable or returned, the reason is in the code. These are the common causes. The codes in this table come from Google's list of Gmail SMTP errors; other providers use similar codes with different wording.
| Reason | Hard or soft | Typical code | What to do |
|---|---|---|---|
| The address doesn't exist | Hard | 550 5.1.1 | Fix it if it's a typo; otherwise suppress |
| The recipient domain doesn't exist | Hard | 553 5.1.2 | Check the domain for typos; otherwise suppress |
| The mailbox is full | Soft | 552 5.2.2 | Retry later; suppress if it keeps happening |
| The server is busy, rate limiting you, or greylisting | Soft | 4xx (Gmail uses 421 4.7.x for rate limiting) | Let your sending tool retry; slow down if you're rate limited |
| You're blocked for reputation or policy reasons | Block (5xx, but the address may be fine) | 550 5.7.1 | Don't suppress the recipient; fix your reputation or the policy issue |
| SPF, DKIM, DMARC or other authentication checks failed | Block | Gmail lists these under codes from 550 5.7.24 to 5.7.40 | Fix your DNS authentication with a domain health check |
| The message is too large | Permanent for this message, not the address | 552 5.3.4 | Shrink the message or attachments and resend |
Every email delivery involves a conversation between two mail servers — your sending server (or your ESP's server) and the recipient's mail server. This conversation follows the SMTP protocol and proceeds in a specific sequence:
RCPT TO is accepted, your server transmits the message body and headers.At each step, the receiving server responds with a three-digit code. If the code starts with 2, the command succeeded. If it starts with 4, the command failed temporarily. If it starts with 5, the command failed permanently. These response codes are the raw material of your bounce reports.
SMTP response codes follow a three-digit structure where each digit carries meaning.
| First Digit | Meaning | Action |
|---|---|---|
| 2xx | Success | Message accepted for delivery |
| 4xx | Temporary failure | Retry later — the problem may resolve |
| 5xx | Permanent failure | Do not retry — the delivery cannot succeed |
| Second Digit | Category |
|---|---|
| x0x | Syntax — the command was malformed |
| x1x | Information — status or help responses |
| x2x | Connection — related to the transmission channel |
| x5x | Mail system — related to the recipient's mail system status |
The third digit narrows the cause further within the category. For example, within the 55x range: 550 means the mailbox is unavailable, 551 means the user is not local, 552 means the mailbox storage limit was exceeded, and 553 means the mailbox name is not allowed.
A 5xx response means the receiving server has definitively rejected the delivery attempt. These addresses require immediate action — continuing to send to them damages your sender reputation and wastes resources.
550 — Mailbox unavailable / User unknown
The most common hard bounce. The recipient address does not exist on the receiving server. The RCPT TO command was rejected because the mailbox is not found.
551 — User not local; please try forwarding
The receiving server knows the user but they are not hosted locally. Some servers provide a forwarding address in the response.
552 — Exceeded storage allocation
The recipient's mailbox is full and cannot accept new messages.
553 — Mailbox name not allowed
The address syntax is valid in general but violates the receiving server's specific policies for mailbox names.
554 — Transaction failed / Message rejected
A general rejection that can occur at any stage of the SMTP conversation. Often accompanied by an extended status code or human-readable explanation.
Large mailbox providers often return 550 with additional context in the human-readable portion of the response:
550 5.1.1 The email account that you tried to reach does not exist. (Gmail) — Permanent. Suppress.550 5.2.1 (Gmail) — Usually an inactive account, but Google also lists this code for receiving rate limits. Read the full message before you suppress.550 Requested action not taken: mailbox unavailable (generic) — Permanent. Suppress.550 5.7.1 Service unavailable, client host blocked — Not a mailbox issue. This is a reputation or policy block on your sending IP/domain. Do not suppress the recipient — investigate your sending reputation.This last example illustrates why reading the full bounce message matters. A 550 code does not always mean the address is bad — it sometimes means your server is blocked.
A 4xx response means the delivery failed for a reason that may resolve on its own. Your sending system should retry these automatically, but you need policies for when retries should stop.
421 — Service not available / Try again later
The receiving server is temporarily unable to process the connection, often due to load or maintenance.
450 — Mailbox unavailable (busy)
The mailbox exists but is temporarily locked or unavailable.
451 — Requested action aborted: local error in processing
The receiving server encountered an internal error.
452 — Insufficient system storage
The receiving server's disk is full, affecting all incoming mail — not just your message.
Greylisting is an anti-spam technique where the receiving server temporarily rejects the first delivery attempt from an unknown sender with a 4xx code (typically 450 or 451), expecting legitimate senders to retry. Your sending system must handle this by retrying after a short delay. If it does not retry, greylisted messages appear as bounces when they would have been accepted on the second attempt. See our full guide: greylisting explained.
RFC 3463 introduced enhanced status codes that provide more granular information alongside the basic three-digit code. RFC 3463 defines them as class.subject.detail, in the format x.y.z where:
| Enhanced Code | Meaning | Action |
|---|---|---|
| 5.1.1 | Bad destination mailbox address | Suppress — address does not exist |
| 5.1.2 | Bad destination system address | Suppress — domain does not exist or has no MX |
| 5.2.1 | Mailbox disabled, not accepting messages | Usually suppress, but read the full message first (Gmail also uses 550 5.2.1 for receiving rate limits) |
| 5.2.2 | Mailbox full | Retry once, then suppress if persistent |
| 5.3.0 | Other mail system status | Read full message — varies by provider |
| 5.7.1 | Delivery not authorized, message refused | Check reputation and authentication — not necessarily a bad address |
| 4.2.2 | Mailbox full (temporary) | Retry with backoff |
| 4.4.1 | No answer from host | Retry — receiving server is unreachable |
| 4.7.1 | Delivery not authorized (temporary) | Often rate limiting — reduce send volume and retry |
Enhanced status codes are more reliable than the basic three-digit code alone because they disambiguate situations where the same basic code (e.g., 550) is used for fundamentally different reasons.
Raw bounce codes become actionable when you map them to automated responses in your sending infrastructure.
| Code Pattern | Classification | Automated Response | Suppression? |
|---|---|---|---|
| 550 + 5.1.1 / 5.1.2 | Hard bounce — invalid address | Suppress immediately | Yes, permanent |
| 550 + 5.2.1 | Usually hard bounce — inactive account (Gmail also uses it for receiving rate limits) | Read the full message, then suppress if it's an inactive account | Usually, after checking |
| 550 + 5.7.1 | Block — reputation/policy | Alert ops team; do not suppress recipient | No |
| 552 / 5.2.2 | Soft — mailbox full | Retry once next send; suppress once it reaches your soft-bounce threshold | Conditional |
| 421 / 450 / 451 | Soft — temporary server issue | Automatic retry with increasing delays | No |
| 4.7.1 | Soft — rate limited | Reduce sending rate; retry after delay | No |
| 553 / 5.1.3 | Hard bounce — bad address syntax | Suppress immediately | Yes, permanent |
That's typically backscatter. A spammer forges your address as the sender, the message goes to an invalid recipient, and the recipient's server sends the bounce back to you (LuxSci). On its own, a fake bounce back email like this doesn't mean your account was hacked.
What to do:
Here's how to fix an email bounce back, step by step:
gmial.com bounces, gmail.com doesn't.To see whether your overall bounce rate is a problem, use the rate formula and benchmarks in our guide to reducing email bounce rates.
Track hard and soft bounce rates per campaign, how often soft bounces turn into suppressions, and which codes dominate your bounce reports. For how to calculate bounce rate and what counts as a good number, see our email bounce rate benchmarks.
A 550 response with a 5.7.1 enhanced code means your server was blocked by policy — the recipient address may be perfectly valid. Suppressing these addresses loses viable contacts. Always read the enhanced code and the human-readable bounce message before classifying.
A mailbox that has been full for six months is effectively dead. If your system retries indefinitely without a conversion threshold, these addresses accumulate in your active list, generating predictable failures every campaign and depressing your delivery metrics.
The opposite problem. Converting a single soft bounce to a hard suppression loses addresses that experienced a one-time server issue. As a rule of thumb, wait for two to three consecutive soft bounces across separate send events before suppressing.
If 80% of your bounces are 5.7.1 policy blocks from a single provider, you do not have a list quality problem — you have a reputation or authentication problem with that provider. The operational response is completely different. Monitor bounce reasons as a distribution, not just a total rate. For how to calculate that total and what counts as a good number, see our guide to email bounce rate benchmarks.
Bounce handling is reactive — it processes failures after they occur. Validating your list before a campaign reduces hard bounces at the source and protects your sender reputation. Our guide on how to clean your list before sending walks through the steps, and you can also read how to check if an email is valid one address at a time.
The cheapest bounce back is the one that never happens. To check a single address, use our free email verifier: no account needed, up to 5 checks per hour. To clean a whole list, create a free account and get 200 free validations, no credit card required. After that, pricing is pay-as-you-go and credits never expire.
Validation reduces bounces; it can't remove every one. Some domains accept mail for any address, and some servers won't confirm whether a mailbox exists, so a few bounces can still get through.
SMTP bounce codes encode specific, actionable information about why a delivery failed, and every returned email carries one. The three-digit base code tells you whether the failure is permanent or temporary. The enhanced status code tells you whether the problem is the address, the mailbox, the server, or your own reputation. Building an automated response framework that parses both codes, classifies bounces accurately, and applies appropriate suppression or retry logic transforms bounce management from a reactive chore into a system that continuously protects your list quality and sender reputation. The critical distinction is between address-level failures that require suppression and infrastructure or policy failures that require investigation — treating them interchangeably is the most common and most costly mistake in bounce handling.
Start with 200 free validations. Upgrade only when you're ready.
No credit card required • Cancel anytime