Home / Learn / Bounce codes

Email bounce codes, explained

Every bounce carries a three-digit SMTP code and, usually, an enhanced code like 5.1.1. Together they tell you whether the address is dead, the server is busy, or the problem is you.

Updated 2026-10-17

TL;DR

  • The first digit is what matters most: 2 = accepted, 4 = temporary, try later (soft bounce), 5 = permanent (hard bounce).
  • The enhanced code narrows it down: x.1.x = address problem, x.2.x = mailbox problem, x.7.x = security or policy, usually about the sender.
  • 550 5.1.1 means the mailbox doesn't exist: remove it. 550 5.7.1 usually means you're blocked: fix your sending, not your list.

How to read a bounce code

A typical rejection looks like this:

550 5.1.1 <[email protected]>: Recipient address rejected: User unknown

550 is the basic SMTP reply code from RFC 5321. 5.1.1 is the enhanced status code from RFC 3463, in the form class.subject.detail. The text after it is free-form and written by the receiving server, and it's often the most useful part. (Both RFCs checked 2026-10-17.)

Servers don't always pick the most precise code. A block can arrive as a plain 550, and a missing mailbox as 554. When the number and the text disagree, trust the text.

Basic SMTP reply codes

CodeRFC 5321 meaningIn plain EnglishWhat to do
250Requested mail action okay, completedAccepted.Nothing. (On a catch-all domain, "accepted" proves little.)
251User not local; will forwardAccepted and passed on elsewhere.Nothing.
252Cannot VRFY user, but will accept message and attempt deliveryThe server won't confirm the user but will take the mail.Treat as unconfirmed.
421Service not available, closing transmission channelBusy, or limiting how fast you send. Often a rate limit.Your server retries. Slow down if it's frequent.
450Mailbox unavailable (e.g. busy, or temporarily blocked for policy reasons)Not right now. Greylisting often uses this.Let the retry happen.
451Requested action aborted: local error in processingA problem on their side, or greylisting.Let the retry happen.
452Insufficient system storage (also used for "too many recipients")Out of space, or you sent to too many recipients at once.Retry; send fewer recipients per message.
550Mailbox unavailable (e.g. not found, no access, or rejected for policy reasons)The catch-all "no". Usually a dead mailbox, sometimes a block.Read the enhanced code and text.
551User not local; please try another pathThat person isn't here.Remove, or use the new address if given.
552Exceeded storage allocationMailbox full. RFC 5321 says to treat it as temporary when it's about recipient count.Retry later; drop it if it stays full.
553Mailbox name not allowed (e.g. syntax incorrect)The address itself is invalid.Remove or correct.
554Transaction failed (or "no SMTP service here" on connect)A general permanent refusal: often spam filtering or a block.Read the text. Check reputation and content.
556Domain does not accept mail (RFC 7504)The domain takes no email at all.Remove.

Codes 500 to 504 mean a command was malformed or out of order. They point to a bug in the sending software, not a problem with the recipient.

Enhanced status codes

The first digit repeats the class (2, 4 or 5), so 4.2.2 and 5.2.2 are the same problem, temporary or permanent.

CodeRFC meaningIn plain EnglishWhat to do
5.1.1Bad destination mailbox addressNo such user. The classic hard bounce.Remove.
5.1.2Bad destination system addressThe domain or host doesn't exist or can't take mail.Remove; check for a domain typo.
5.1.3Bad destination mailbox address syntaxThe address is malformed.Correct or remove.
5.1.6Destination mailbox has moved, no forwarding addressThe person has gone.Remove.
5.1.10Recipient address has null MX (RFC 7505)The domain publicly declares it receives no email.Remove.
5.2.1Mailbox disabled, not accepting messagesSuspended or deactivated account.Remove.
4.2.2 / 5.2.2Mailbox fullOver quota. Long-full mailboxes are usually abandoned.Retry; remove if it repeats.
5.2.3Message length exceeds administrative limitYour message is too big.Shrink attachments.
4.4.1 / 4.4.2No answer from host / bad connectionNetwork trouble reaching the server.Let the retry happen.
4.4.7 / 5.4.7Delivery time expiredYour server gave up after retrying a soft bounce.Treat as a hard bounce if it keeps happening.
4.7.0Other or undefined security statusA temporary security or reputation hold. Large providers use it for "try again later" rate limits.Slow down; check authentication and reputation.
5.7.1Delivery not authorized, message refusedBlocked: your IP or domain is listed, the recipient only accepts certain senders, or content was refused.Read the text. Fix the cause, keep the contact.
5.7.26Multiple authentication checks failed (RFC 7372)SPF and DKIM didn't pass.Fix SPF, DKIM and DMARC on your sending domain.
Microsoft 365 often reports a missing recipient as 550 5.4.1 Recipient address rejected: Access denied, even though RFC 3463 defines 5.4.1 as "no answer from host". Microsoft documents it as directory-based edge blocking rejecting an invalid recipient (checked 2026-10-17). It's another case where the text tells you more than the number.

How our verifier reads these codes

During a check we only go as far as RCPT TO and never send a message (how), so we see the codes a server gives at that stage:

Server replyMailExchange result
2xx for the address, 5xx for a random test addressdeliverable (or risky: role)
2xx for bothrisky: low_deliverability (catch-all)
5xx that rejects the mailbox (5.1.1, "user unknown", "does not exist")undeliverable: rejected_email
5xx with 5.7.x, blocklist or policy wording, and no "no such user" wordingunknown: blocked_by_server
4xx, still 4xx after a retry a few minutes laterunknown: unavailable_smtp
552 (mailbox full or over limit)unknown: unavailable_smtp

Unknowns are refunded. The full list of results is in email verification statuses.

Related