Skip to content

Deliverability · 5 min read

SMTP 550 error and other bounce codes, explained

What an SMTP 550 error means, how to read enhanced status codes like 5.1.1 and 5.7.1, and which bounces to suppress, retry or fix on your side.

Apr 6, 2026 · SimpleCold team

A reference table of SMTP bounce codes such as 550 5.1.1 mailbox doesn't exist and 451 4.7.1 greylisting, with the action for each

A bounce message is the receiving server telling you exactly why it refused your email. Most people skim past the code and read the friendly text, which is a shame, because the code is more reliable. Once you can read 550 5.1.1 at a glance, you know whether to delete the contact, wait and retry, or fix something in your own setup.

How to read an SMTP reply

A typical rejection looks like this:

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

It has three parts:

  1. Basic reply code (550): three digits defined in RFC 5321. The first digit is what matters most. 2 means accepted, 4 means temporary failure, 5 means permanent failure.
  2. Enhanced status code (5.1.1): defined in RFC 3463. Class, subject and detail. The class again says permanent (5) or temporary (4). The subject says what the problem is about: 1 is addressing, 2 is the mailbox, 4 is network and routing, 7 is security and policy.
  3. Human-readable text: written by whoever configured the server. Useful, but not standardised, and sometimes misleading.

The rule of thumb: a 5.x.x is a hard bounce, a 4.x.x is a soft bounce that your sending system should retry.

The SMTP 550 error

550 is the most common permanent rejection. On its own it only says "requested action not taken, mailbox unavailable", which covers a lot of ground. The enhanced code narrows it down:

CodeUsual meaningYour action
550 5.1.1Mailbox doesn't existSuppress the address
550 5.1.10Recipient not found (common wording from Microsoft-hosted domains)Suppress
550 5.2.1Mailbox disabled or not accepting mailSuppress
550 5.7.1Rejected by policy: blocked sender, content or reputationInvestigate your setup and reputation
550 5.7.26Unauthenticated mail rejected (Gmail uses this for SPF/DKIM/DMARC failures)Fix authentication
550 5.4.1Recipient rejected at the edge, often "access denied"Usually suppress; check if widespread

The difference between the first group and the 5.7.x group matters. A 5.1.1 is about the recipient: no amount of fixing your setup will make that mailbox appear. A 5.7.x is about you: your IP, domain, authentication or content. Suppressing the contact hides the symptom while the cause keeps hurting every other send.

Other permanent codes you'll see

CodeMeaningAction
553 5.1.3Bad address syntaxFix or remove; this should have been caught at capture
550 5.1.2Destination host unknown or unreachableCheck the domain; usually suppress
552 5.2.2Mailbox full (sometimes sent as permanent)Retry later a few times, then suppress
552 5.3.4Message too bigShrink the message; the contact is fine
554 5.7.1Message rejected, often for spam or policyInvestigate content and reputation

Temporary codes worth knowing

CodeMeaningAction
421 4.7.0Try again later, often rate limiting or reputationSlow down; retry with backoff
450 4.2.1Recipient receiving mail too fastSpread sends to that recipient out
451 4.7.1Deferred, frequently greylistingRetry after a few minutes
452 4.2.2Mailbox over quotaRetry; suppress if it keeps happening
452 4.5.3Too many recipients in one transactionSplit the batch

Greylisting deserves a note. Some servers deliberately reject the first attempt from an unknown sender with a 4xx code, then accept a retry a few minutes later. Legitimate mail servers retry; many spam tools don't. If your platform handles retries properly, greylisting costs you a short delay and nothing else. More in the greylisting entry.

Which bounces verification can prevent

Verification before sending catches the recipient-side problems: addresses that don't exist (5.1.1, 5.1.10), disabled mailboxes, domains with no mail server and malformed addresses. Together those are the bulk of hard bounces on most lists.

It can't fix sender-side problems. If you're getting 5.7.26, your authentication is broken. If you're getting 5.7.1 or 554 across many domains, look at your sending reputation, your content and whether your IP or domain is on a blocklist. Verifying the list won't change those results.

Bounce typePrevented by verification?
Mailbox doesn't existYes
Domain doesn't exist or has no MXYes
Syntax errorsYes
Mailbox disabledOften
Mailbox fullSometimes; it's temporary by nature
Authentication failuresNo; fix SPF, DKIM and DMARC
Policy and reputation blocksNo
Greylisting and rate limitsNo; handled by retries

Building bounce handling that doesn't need a human

If you send from your own system, parse the enhanced code and act on the class and subject:

  1. 5.1.x and 5.2.1: suppress immediately.
  2. 5.7.x: don't suppress automatically. Alert someone, because it's probably about you.
  3. 4.x.x: retry with increasing delays. After several days of failures, treat as permanent.
  4. Anything else in class 5: suppress, but log the full reply so you can review patterns.

Most ESPs already do something like this, though they differ in how many soft bounces they tolerate before suppressing. Read your provider's documentation rather than assuming.

Where to go from here

If most of your bounces are 5.1.1, the list is the problem. Run it through a bulk email verifier before the next send. SimpleCold also reports a failType of permanent or temporary for each result, so you can apply the same logic before anything is sent. If you're seeing 5.7.x codes, start with SPF, DKIM and DMARC and check whether you're listed with the blacklist checker. For the full taxonomy of codes, see SMTP status codes.

Check your list before you send it

Start with 200 free credits. Pay per credit after that.