Skip to content

SMTP bounce codes explained: 4xx vs 5xx and enhanced status codes

Last updated: 26:10:2026

Wersja polska

Anatomy of an SMTP error

When a mail server refuses a message, it answers with a line like this, and the same line ends up in the bounce message you receive:

A typical rejection

550 5.1.1 The email account that you tried to reach does not exist.
  • 550 is the basic reply code, defined by the SMTP standard (RFC 5321). Every SMTP server sends one.
  • 5.1.1 is the enhanced status code (RFC 3463), a more precise classification that almost every modern server includes.
  • The rest is free text. It isn't standardized, but it is often the most useful part: large providers put the exact reason, and sometimes a help link, there.

The basic reply code

The first digit is what decides how the sending server reacts:

CodeMeaningSending server should
2xxPositive completion - the command succeededContinue; after the message data, the receiver now owns delivery
3xxPositive intermediate - send more (354 after DATA)Send the message content
4xxTransient negative completion - not nowKeep the message and retry later
5xxPermanent negative completion - noStop and return the message to its sender
2xx
Meaning: Positive completion - the command succeeded
Sending server should: Continue; after the message data, the receiver now owns delivery
3xx
Meaning: Positive intermediate - send more (354 after DATA)
Sending server should: Send the message content
4xx
Meaning: Transient negative completion - not now
Sending server should: Keep the message and retry later
5xx
Meaning: Permanent negative completion - no
Sending server should: Stop and return the message to its sender

RFC 5321 tells the sending side to wait before retrying - the retry interval should generally be at least 30 minutes - and to keep trying for a while: the give-up time "generally needs to be at least 4-5 days". In practice, many senders retry sooner at first and give up earlier.

The reply codes you'll actually see in bounces:

CodeRFC 5321 descriptionIn practice
421Service not available, closing transmission channelReceiver busy, rate limiting you, or deferring for reputation
450Mailbox unavailable (busy or temporarily blocked for policy reasons)Greylisting or a temporary policy block
451Requested action aborted: local error in processingTemporary problem at the receiver, also used for greylisting
452Insufficient system storageToo many recipients in one transaction, or the receiver is out of space
550Mailbox unavailable (not found, no access, or rejected for policy reasons)Address doesn't exist - or a policy/spam rejection; read the enhanced code
551User not localRare today
552Exceeded storage allocationMailbox full or message too large
553Mailbox name not allowedInvalid address syntax, or a sender address the server won't accept
554Transaction failed (or "No SMTP service here")Generic permanent rejection, often after the message content was scanned
521 / 556Host / domain does not accept mail (RFC 7504)The domain publishes a "null MX" (RFC 7505) - it never receives mail
421
RFC 5321 description: Service not available, closing transmission channel
In practice: Receiver busy, rate limiting you, or deferring for reputation
450
RFC 5321 description: Mailbox unavailable (busy or temporarily blocked for policy reasons)
In practice: Greylisting or a temporary policy block
451
RFC 5321 description: Requested action aborted: local error in processing
In practice: Temporary problem at the receiver, also used for greylisting
452
RFC 5321 description: Insufficient system storage
In practice: Too many recipients in one transaction, or the receiver is out of space
550
RFC 5321 description: Mailbox unavailable (not found, no access, or rejected for policy reasons)
In practice: Address doesn't exist - or a policy/spam rejection; read the enhanced code
551
RFC 5321 description: User not local
In practice: Rare today
552
RFC 5321 description: Exceeded storage allocation
In practice: Mailbox full or message too large
553
RFC 5321 description: Mailbox name not allowed
In practice: Invalid address syntax, or a sender address the server won't accept
554
RFC 5321 description: Transaction failed (or "No SMTP service here")
In practice: Generic permanent rejection, often after the message content was scanned
521 / 556
RFC 5321 description: Host / domain does not accept mail (RFC 7504)
In practice: The domain publishes a "null MX" (RFC 7505) - it never receives mail

Two quirks are worth knowing. 550 covers both "no such user" and "we don't want your mail", so on its own it tells you little. And RFC 5321 notes that an old standard wrongly used 552 for "too many recipients" - the correct code is 452, and clients should treat a 552 received for that reason as temporary.

Enhanced status codes

RFC 3463 defines a three-part code, class.subject.detail. The class repeats the first digit: 2 success, 4 persistent transient failure, 5 permanent failure. The subject is the most useful part, because it tells you where the problem lies:

SubjectAreaTypically means
X.0.XOther or undefinedNo more specific code applies
X.1.XAddressingSomething about the address itself: unknown user or domain
X.2.XMailboxThe mailbox exists but can't accept: full, disabled
X.3.XMail systemThe receiving system: message too big, system not accepting mail
X.4.XNetwork and routingCouldn't connect, no route, delivery time expired
X.5.XMail delivery protocolSMTP protocol problems, too many recipients
X.6.XMessage content or mediaContent conversion problems
X.7.XSecurity or policyAuthentication, reputation, spam and policy blocks
X.0.X
Area: Other or undefined
Typically means: No more specific code applies
X.1.X
Area: Addressing
Typically means: Something about the address itself: unknown user or domain
X.2.X
Area: Mailbox
Typically means: The mailbox exists but can't accept: full, disabled
X.3.X
Area: Mail system
Typically means: The receiving system: message too big, system not accepting mail
X.4.X
Area: Network and routing
Typically means: Couldn't connect, no route, delivery time expired
X.5.X
Area: Mail delivery protocol
Typically means: SMTP protocol problems, too many recipients
X.6.X
Area: Message content or media
Typically means: Content conversion problems
X.7.X
Area: Security or policy
Typically means: Authentication, reputation, spam and policy blocks

The detail codes are registered with IANA. Some are part of RFC 3463, others came later - RFC 7372 added codes for failed email authentication, RFC 7505 the ones for null MX.

Common bounces and what to do

CodeIANA descriptionWhat to do
5.1.1Bad destination mailbox addressHard bounce: the address doesn't exist. Check for typos, then remove it from your list.
5.1.2Bad destination system addressThe domain doesn't exist or has no mail server. Check the spelling (gmial.com) and remove it.
5.1.10Recipient address has null MXThe domain declares it never receives mail. Remove the address.
5.2.1Mailbox disabled, not accepting messagesUsually a closed or inactive account. Treat as a hard bounce if it repeats.
4.2.2 / 5.2.2Mailbox fullTemporary on the recipient's side. Retry later; if it persists for weeks, the mailbox is likely abandoned.
5.2.3 / 5.3.4Message length exceeds administrative limit / too big for systemMake the message smaller - link to large files instead of attaching them.
4.4.1 / 4.4.2No answer from host / bad connectionNetwork problem reaching the receiver. Your server retries automatically.
5.4.4Unable to routeNo usable MX or A record for the domain. Check its DNS.
4.4.7Delivery time expiredYour server gave up after retrying for its whole retry window. Find out why the earlier attempts failed.
4.7.1 / 5.7.1Delivery not authorized, message refusedA policy decision: reputation, spam filter, blocklist or a recipient-side rule. Read the text.
5.7.8Authentication credentials invalidYour own mail client or app failed to log in to its SMTP server - fix the username or password.
5.7.20 / 5.7.23 / 5.7.25No passing DKIM signature / SPF validation failed / reverse DNS validation failedFix the named check: DKIM, SPF or the PTR record of the sending IP.
5.7.26Multiple authentication checks failedTypically DMARC: neither SPF nor DKIM passed with an aligned domain.
5.1.1
IANA description: Bad destination mailbox address
What to do: Hard bounce: the address doesn't exist. Check for typos, then remove it from your list.
5.1.2
IANA description: Bad destination system address
What to do: The domain doesn't exist or has no mail server. Check the spelling (gmial.com) and remove it.
5.1.10
IANA description: Recipient address has null MX
What to do: The domain declares it never receives mail. Remove the address.
5.2.1
IANA description: Mailbox disabled, not accepting messages
What to do: Usually a closed or inactive account. Treat as a hard bounce if it repeats.
4.2.2 / 5.2.2
IANA description: Mailbox full
What to do: Temporary on the recipient's side. Retry later; if it persists for weeks, the mailbox is likely abandoned.
5.2.3 / 5.3.4
IANA description: Message length exceeds administrative limit / too big for system
What to do: Make the message smaller - link to large files instead of attaching them.
4.4.1 / 4.4.2
IANA description: No answer from host / bad connection
What to do: Network problem reaching the receiver. Your server retries automatically.
5.4.4
IANA description: Unable to route
What to do: No usable MX or A record for the domain. Check its DNS.
4.4.7
IANA description: Delivery time expired
What to do: Your server gave up after retrying for its whole retry window. Find out why the earlier attempts failed.
4.7.1 / 5.7.1
IANA description: Delivery not authorized, message refused
What to do: A policy decision: reputation, spam filter, blocklist or a recipient-side rule. Read the text.
5.7.8
IANA description: Authentication credentials invalid
What to do: Your own mail client or app failed to log in to its SMTP server - fix the username or password.
5.7.20 / 5.7.23 / 5.7.25
IANA description: No passing DKIM signature / SPF validation failed / reverse DNS validation failed
What to do: Fix the named check: DKIM, SPF or the PTR record of the sending IP.
5.7.26
IANA description: Multiple authentication checks failed
What to do: Typically DMARC: neither SPF nor DKIM passed with an aligned domain.

Providers don't always use the codes the same way. RFC 3463 says "mailbox full" should be a transient failure, yet some servers send it as 552 5.2.2; and 5.7.1 covers anything from a blocklist hit to a recipient's "only accept mail from colleagues" rule. The provider-specific guides for Gmail and Outlook decode their texts.

Soft bounce vs hard bounce

These terms come from the email marketing world, not from any RFC, but they map onto the codes like this:

  • A soft bounce is a temporary failure - a 4xx reply, or a mailbox-full response. The address is valid; delivery may succeed later. Your server retries on its own.
  • A hard bounce is a permanent failure about the address - 5.1.1, 5.1.2, 5.1.10, usually also a repeated 5.2.1. Retrying won't help.
  • A block is a permanent failure about you, not the address - 5.7.x policy and reputation rejections. Don't delete the recipient; fix the authentication or reputation problem and the same address will accept mail again.

Remove hard-bouncing addresses after the first bounce. Repeatedly sending to addresses that don't exist is one of the clearest signals of a bought or stale list, and receivers lower your reputation for it. A soft bounce that repeats across many sends over weeks should be treated as a hard one.

Rejected or bounced: when the error reaches you

A failure can surface in two ways:

  • During the SMTP conversation. The receiving server refuses with a 4xx or 5xx before accepting the message. Your own sending server then knows the reason first-hand and either retries or writes you a bounce report.
  • After acceptance. The receiver answered 250 and later found it couldn't deliver - for example a forwarding address that failed. It must then send a bounce to the envelope sender. When the envelope sender was forged, these bounces hit innocent people: that's called backscatter, and it's why well-run servers try to reject during the SMTP conversation instead of accepting and bouncing later.

What a DSN (bounce report) contains

A bounce message is formally a Delivery Status Notification, defined by RFC 3464. It is a MIME message of type multipart/report (RFC 6522) with report-type=delivery-status and up to three parts: a human-readable explanation, a machine-readable message/delivery-status part, and the original message or its headers. The machine-readable part is what bounce-processing software reads:

The delivery-status part of a DSN

Reporting-MTA: dns; mail.example.com
Arrival-Date: Mon, 26 Oct 2026 09:12:44 +0100

Final-Recipient: rfc822; jan@example.net
Action: failed
Status: 5.1.1
Remote-MTA: dns; mx.example.net
Diagnostic-Code: smtp; 550 5.1.1 User unknown
Last-Attempt-Date: Mon, 26 Oct 2026 09:12:46 +0100
  • Action is failed (gave up), delayed (still retrying - a warning, not a bounce), delivered, relayed or expanded.
  • Status is the enhanced status code; Diagnostic-Code is the receiving server's exact reply, and Remote-MTA the server that gave it.
  • A DSN produced by your own server after a 4xx streak that ran out of time typically carries 4.4.7 or the last temporary error it got.

How AnyMail reports delivery failures

AnyMail sends external mail directly to the recipient's mail server and follows the same rules: a 4xx reply is retried with growing intervals for a little over two days (up to 10 attempts), while a 5xx reply fails the message at once and shows the receiving server's reason next to it. When a message fails for good, an RFC 3464 report lands in the sending inbox, and if delivery is still being retried hours later you get a single "delayed" notice too. Recipients who unsubscribed through the one-click link are treated as permanent failures instead of being mailed again. For incoming mail, AnyMail rejects during the SMTP conversation rather than accepting and bouncing later, so it never produces backscatter.

Let AnyMail handle these records for you

AnyMail generates the MX, SPF, DKIM and DMARC records for your domain, checks every one of them automatically and tells you exactly which record to fix - then hosts your inboxes, operated from the EU.