SMTP bounce codes are the replies a receiving mail server gives when it cannot, or will not, accept a message. They have two parts: a three-digit SMTP reply code that says whether the failure is temporary (4xx) or permanent (5xx), and usually an enhanced status code such as 5.1.1 that gives the reason. Once you know how to read them, most bounce messages tell you exactly what to fix.
Where to find a bounce. In your MigoSMTP delivery logs, open the failed message and copy the full diagnostic text, not just the code. The wording after the numbers is often the most useful part.
What is an SMTP bounce?
When your sending server hands a message to the recipient's server, that server replies with a code. A reply that starts with 2 means success. A reply that starts with 4 or 5 means the message was not accepted. If the failure is detected during the SMTP conversation it is called a synchronous rejection. If the receiving system accepts the message first and decides later that it cannot deliver it, it sends a delivery status notification (a bounce message) back to the sender, an asynchronous bounce.
Soft bounce vs hard bounce
| Soft bounce (4xx) | Hard bounce (5xx) | |
|---|---|---|
| Meaning | Temporary failure | Permanent failure |
| What the sending server does | Queues and retries for a period of days | Stops immediately and reports a bounce |
| Typical causes | Mailbox full, server busy, rate limit, greylisting, temporary DNS error | Address does not exist, domain does not exist, blocked sender, failed authentication, policy rejection |
| What you should do | Usually nothing at first. Watch for repeats. | Fix the cause. Suppress invalid addresses at once. |
| Effect on reputation | Low unless it persists | High: repeated hard bounces hurt reputation |
Careful with the labels. Receivers do not always follow the rules. Some return a 5xx for a temporary condition, or a 4xx for something permanent. Read the text, and treat an address as dead only when the evidence is clear.
How to read an SMTP reply
A typical rejection looks like this:
550 5.1.1 The email account that you tried to reach does not exist.
Please try double-checking the recipient's email address for typos.
| Part | Example | Meaning |
|---|---|---|
| SMTP reply code | 550 | Three digits defined in RFC 5321. The first digit says the outcome: 2 success, 4 temporary failure, 5 permanent failure. |
| Enhanced status code | 5.1.1 | Defined in RFC 3463 as class.subject.detail. Class 4 or 5 repeats the outcome. |
| Subject (middle number) | 1 | Which area failed: 0 other, 1 addressing, 2 mailbox, 3 mail system, 4 network and routing, 5 protocol, 6 content, 7 security or policy. |
| Detail (last number) | 1 | The specific condition inside that subject, for example 1.1 is a bad destination mailbox address. |
| Text | The email account ... does not exist | Free text written by the receiving server. Read it carefully. |
What the enhanced code subjects mean
| Enhanced code | Area | Typical examples |
|---|---|---|
| x.1.x | Addressing | Unknown user (5.1.1), bad domain (5.1.2), bad address syntax (5.1.3) |
| x.2.x | Mailbox | Mailbox full (4.2.2 or 5.2.2), mailbox disabled (5.2.1), message length over the limit (5.2.3) |
| x.3.x | Mail system | System full (4.3.1), message too big for the system (5.3.4), system not accepting mail (5.3.2) |
| x.4.x | Network and routing | No answer from host (4.4.1), connection dropped (4.4.2), routing loop |
| x.5.x | Protocol | Invalid command, syntax error, too many recipients |
| x.6.x | Content or media | Message content rejected |
| x.7.x | Security or policy | Blocked, authentication required, policy violation, reputation (the most common source of deliverability bounces) |
The most common bounce codes, causes and fixes
Address and mailbox problems
| Code | Typical text | Cause | What to do |
|---|---|---|---|
550 5.1.1 | User unknown, mailbox does not exist | The address does not exist at that domain. | Check for typos. If correct, suppress the address. |
550 5.1.2 | Bad destination system address | The domain part does not exist or has no mail server. | Fix the domain typo or suppress. |
553 5.1.3 | Invalid address format | The address syntax is wrong. | Validate addresses at sign-up. |
552 5.2.2 or 452 4.2.2 | Mailbox full, over quota | The recipient has no storage left. | Retry for a few days. Suppress if it keeps failing. |
550 5.2.1 | Mailbox disabled or not accepting mail | The account is suspended or closed. | Suppress the address. |
552 5.3.4 | Message size exceeds limit | The message or attachments are too large. | Reduce size or link to the file. |
Temporary and rate-limit responses
| Code | Typical text | Cause | What to do |
|---|---|---|---|
421 4.7.0 or 451 4.7.1 | Try again later, temporarily deferred | Greylisting or throttling at the receiver. | Let the server retry. Reduce your send rate if it persists. |
421 4.7.28 | Unusual rate of unsolicited mail (Gmail) | Gmail temporarily limits mail that looks unwanted or comes in a sudden spike. | Slow down, review complaints in Postmaster Tools, check authentication. |
450 4.2.1 | Mailbox temporarily unavailable | The mailbox is busy or temporarily disabled. | Retry automatically. |
451 4.4.1, 4.4.2 | Connection timed out, connection dropped | Network trouble between servers. | Retry. If frequent for one domain, check your sending IP and DNS. |
Policy, reputation and authentication rejections
| Code | Typical text | Cause | What to do |
|---|---|---|---|
550 5.7.1 | Message rejected due to policy or sender blocked | Blocklisted IP, poor reputation, content or policy filter. | Read the text. Check blocklists and reputation, then follow the receiver's removal process. |
554 5.7.1 | Service unavailable; client host blocked | Your sending IP is on a blocklist used by the receiver. | Look up the IP, fix the cause, request delisting. |
550 5.7.26 | Message is unauthenticated (Gmail) | SPF or DKIM failed or is missing, or DMARC alignment failed. | Fix authentication. See the authentication guide. |
550 5.7.515 | Sending domain does not meet the required authentication level (Outlook.com) | Microsoft requires SPF, DKIM and DMARC for high-volume senders. | Publish and align all three records. |
550 5.4.1 | Recipient address rejected: access denied | The Microsoft 365 tenant does not have that recipient. | Verify the address, then suppress if it is invalid. |
Different providers, different wording. The numbers are standardised, the text is not. Gmail, Outlook, Yahoo, Zoho, Mimecast and others each use their own phrases and sometimes their own detail numbers. Always combine the code with the text, and use the provider's postmaster documentation for the exact meaning.
How retries work for 4xx errors
When a server answers 4xx, your sending system keeps the message in a queue and tries again later, usually with growing gaps (for example minutes at first, then hours). It keeps trying until a retry period set by the sending system ends, commonly a few days. If the receiver still refuses the message by then, the system gives up and creates a bounce, which is why a temporary error can later appear as a final failure with a note that delivery was delayed.
You do not need to retry manually. If you see many 4xx replies from one provider, reduce your sending rate to that provider and check your reputation, because repeated deferrals are the receiver telling you to slow down.
Anatomy of a bounce notification
Asynchronous bounces arrive as a delivery status notification (DSN, defined in RFC 3464). The machine-readable part looks like this:
Final-Recipient: rfc822; user@example.net
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Remote-MTA: dns; mx.example.net
| Field | Meaning |
|---|---|
Final-Recipient | The address that failed. This is the one to suppress. |
Action | failed is a final bounce; delayed means the system is still retrying. |
Status | The enhanced status code. |
Diagnostic-Code | The exact text returned by the remote server. |
Remote-MTA | The receiving server that gave the answer. |
Troubleshooting flow for a spike in bounces
- Group by code. Count bounces by enhanced status code and by recipient domain. One dominant code points to the cause.
- If it is mostly 5.1.1. Your list is bad. Stop the send, remove invalid addresses and check how the list was collected or imported.
- If it is mostly 5.7.x. Check authentication, blocklists and reputation. Pause large sends until the cause is fixed.
- If it is mostly 4.x.x from one provider. You are being throttled. Lower the send rate to that provider and spread sends across more hours.
- If one domain is affected. Check whether the receiver has a recent policy change or whether your IP or domain is listed for that receiver.
- Confirm the fix. Send a small test batch, watch the bounce rate for a day, then resume normal volume.
How to prevent bounces
- Confirm new subscribers with double opt-in so typos never enter the list.
- Validate addresses at sign-up and flag common typos such as gmial.com.
- Suppress hard bounces immediately and soft bounces that repeat over several sends.
- Clean inactive contacts every few months or run a re-engagement flow.
- Authenticate your domain with SPF, DKIM and DMARC and keep records current.
- Ramp up volume gradually with a warm-up plan.
- Watch the numbers. Set alerts on hard bounce rate, complaint rate and deferral counts.
Quick reference: what to do for each code family
| Code family | Action |
|---|---|
| 5.1.x | Invalid address. Suppress. |
| 4.2.x / 5.2.x | Mailbox problem. Retry soft failures; suppress persistent ones. |
| 4.4.x | Network problem. Retry; investigate if it repeats. |
| 4.7.x | Throttling or reputation. Slow down. |
| 5.7.x | Policy, authentication or blocklist. Investigate before sending more. |
Need help reading a bounce? Send us the full diagnostic text from your delivery log and we will tell you what it means.
Further reading and sources
- RFC 5321: Simple Mail Transfer Protocol
- RFC 3463: Enhanced Mail System Status Codes
- RFC 3464: An Extensible Message Format for Delivery Status Notifications
- Google: Email delivery error messages (SMTP error reference)
- Microsoft: Outlook.com postmaster and sender support
- Related guides: Authenticate a sending domain and Email warm-up guide.
Frequently asked questions
What is the difference between a soft bounce and a hard bounce?
A soft bounce is a temporary failure (SMTP 4xx) such as a full mailbox or a throttled connection, and the sending server will retry. A hard bounce is a permanent failure (SMTP 5xx) such as a non-existent address, and the address should be suppressed so you stop sending to it.
What does SMTP error 550 5.1.1 mean?
It means the recipient address does not exist at that domain: the mailbox is unknown. Check for typos, and if the address is correct, remove it from your list because it will not accept mail.
What does 5.7.1 mean in a bounce message?
Enhanced code 5.7.1 is a general policy rejection. The receiving server refused the message because of a rule, which can be a blocklisted IP, a failed authentication check or a content or reputation filter. Read the text after the code to see which one applies.
How long does a server retry after a 4xx error?
Most mail servers keep retrying a temporarily failed message for several days, with increasing gaps between attempts, before they give up and generate a bounce. The exact period depends on the sending server's configuration.
Why do I get 421 4.7.28 from Gmail?
Gmail has temporarily limited your sending because it saw a spike or a pattern that looked like unsolicited mail. Slow down, check authentication and complaint rates in Google Postmaster Tools, and let the server retry.
What is a good bounce rate?
A hard bounce rate below 2 percent is a common target, and most healthy programmes sit well below 1 percent. A sudden jump almost always points to a list or import problem, or to an authentication change.
Should I remove soft-bounced addresses?
Not on the first soft bounce. Suppress an address when it soft-bounces repeatedly over several sends, for example five times across a few weeks, or when the temporary error is really a permanent one such as a mailbox that has been full for a long time.
What does 550 5.7.26 mean?
Gmail returns 5.7.26 when the message is unauthenticated or fails the sender authentication requirements. Check that SPF and DKIM pass and align with your From domain and that a DMARC record exists.
What is the difference between an SMTP reply code and an enhanced status code?
The three-digit SMTP reply code (for example 550) comes from RFC 5321 and gives a broad result. The enhanced status code (for example 5.1.1) comes from RFC 3463 and adds a class, a subject and a detail that pinpoint the cause.
Can I stop bounces completely?
No. Some bounce rate is normal because people abandon mailboxes. You can keep it low by collecting addresses with double opt-in, validating addresses at sign-up, removing hard-bounced addresses immediately and cleaning inactive contacts.