New guide: how to warm up a dedicated IP without hurting your reputation. Read now →
Log in
MigoSMTP
SMTP and APIUpdated 30 Jul 2025

SMTP Bounce Codes Explained: How to Read 4xx and 5xx Errors and Fix Them

Every bounced email carries an SMTP reply code and usually an enhanced status code that explains why it failed. A 4xx code is temporary and the sending server will retry; a 5xx code is permanent. This guide shows how to read both, lists the most common codes with their causes and fixes, and gives you a troubleshooting flow for spikes in bounces.

MO
Written by Mateus Oliveira
Senior SMTP and MTA Engineer
Reviewed by Sofia Marino
  • Published29 Jun 2025
  • Read time7 min
  • Length1,451 words
Share this guide

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.

4xxtemporary: the server will retry
5xxpermanent: stop sending
< 2%hard bounce rate to aim for

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)
MeaningTemporary failurePermanent failure
What the sending server doesQueues and retries for a period of daysStops immediately and reports a bounce
Typical causesMailbox full, server busy, rate limit, greylisting, temporary DNS errorAddress does not exist, domain does not exist, blocked sender, failed authentication, policy rejection
What you should doUsually nothing at first. Watch for repeats.Fix the cause. Suppress invalid addresses at once.
Effect on reputationLow unless it persistsHigh: 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.
PartExampleMeaning
SMTP reply code550Three digits defined in RFC 5321. The first digit says the outcome: 2 success, 4 temporary failure, 5 permanent failure.
Enhanced status code5.1.1Defined in RFC 3463 as class.subject.detail. Class 4 or 5 repeats the outcome.
Subject (middle number)1Which 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)1The specific condition inside that subject, for example 1.1 is a bad destination mailbox address.
TextThe email account ... does not existFree text written by the receiving server. Read it carefully.

What the enhanced code subjects mean

Enhanced codeAreaTypical examples
x.1.xAddressingUnknown user (5.1.1), bad domain (5.1.2), bad address syntax (5.1.3)
x.2.xMailboxMailbox full (4.2.2 or 5.2.2), mailbox disabled (5.2.1), message length over the limit (5.2.3)
x.3.xMail systemSystem full (4.3.1), message too big for the system (5.3.4), system not accepting mail (5.3.2)
x.4.xNetwork and routingNo answer from host (4.4.1), connection dropped (4.4.2), routing loop
x.5.xProtocolInvalid command, syntax error, too many recipients
x.6.xContent or mediaMessage content rejected
x.7.xSecurity or policyBlocked, authentication required, policy violation, reputation (the most common source of deliverability bounces)

The most common bounce codes, causes and fixes

Address and mailbox problems

CodeTypical textCauseWhat to do
550 5.1.1User unknown, mailbox does not existThe address does not exist at that domain.Check for typos. If correct, suppress the address.
550 5.1.2Bad destination system addressThe domain part does not exist or has no mail server.Fix the domain typo or suppress.
553 5.1.3Invalid address formatThe address syntax is wrong.Validate addresses at sign-up.
552 5.2.2 or 452 4.2.2Mailbox full, over quotaThe recipient has no storage left.Retry for a few days. Suppress if it keeps failing.
550 5.2.1Mailbox disabled or not accepting mailThe account is suspended or closed.Suppress the address.
552 5.3.4Message size exceeds limitThe message or attachments are too large.Reduce size or link to the file.

Temporary and rate-limit responses

CodeTypical textCauseWhat to do
421 4.7.0 or 451 4.7.1Try again later, temporarily deferredGreylisting or throttling at the receiver.Let the server retry. Reduce your send rate if it persists.
421 4.7.28Unusual 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.1Mailbox temporarily unavailableThe mailbox is busy or temporarily disabled.Retry automatically.
451 4.4.1, 4.4.2Connection timed out, connection droppedNetwork trouble between servers.Retry. If frequent for one domain, check your sending IP and DNS.

Policy, reputation and authentication rejections

CodeTypical textCauseWhat to do
550 5.7.1Message rejected due to policy or sender blockedBlocklisted IP, poor reputation, content or policy filter.Read the text. Check blocklists and reputation, then follow the receiver's removal process.
554 5.7.1Service unavailable; client host blockedYour sending IP is on a blocklist used by the receiver.Look up the IP, fix the cause, request delisting.
550 5.7.26Message is unauthenticated (Gmail)SPF or DKIM failed or is missing, or DMARC alignment failed.Fix authentication. See the authentication guide.
550 5.7.515Sending 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.1Recipient address rejected: access deniedThe 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
FieldMeaning
Final-RecipientThe address that failed. This is the one to suppress.
Actionfailed is a final bounce; delayed means the system is still retrying.
StatusThe enhanced status code.
Diagnostic-CodeThe exact text returned by the remote server.
Remote-MTAThe receiving server that gave the answer.

Troubleshooting flow for a spike in bounces

  1. Group by code. Count bounces by enhanced status code and by recipient domain. One dominant code points to the cause.
  2. 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.
  3. If it is mostly 5.7.x. Check authentication, blocklists and reputation. Pause large sends until the cause is fixed.
  4. 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.
  5. 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.
  6. 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 familyAction
5.1.xInvalid address. Suppress.
4.2.x / 5.2.xMailbox problem. Retry soft failures; suppress persistent ones.
4.4.xNetwork problem. Retry; investigate if it repeats.
4.7.xThrottling or reputation. Slow down.
5.7.xPolicy, 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.

Contact support

Further reading and sources

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.

Topics#bounces#smtp#error codes#deliverability#troubleshooting
Was this guide helpful?Your answer helps us improve our documentation.

Start sending in minutes.

Create an account, add your domain and send your first email.

Start free Talk to sales