Guide

SMTP error codes and what they mean

When an email bounces, the three-digit code and the enhanced code next to it (such as 5.7.1) tell you where the problem is. Here's how to read them, and what the most common ones mean.

Published September 25, 2026 ~3 min read Spambil Team
Updated September 25, 2026

Short answer: The first digit tells you the outcome: 2 success, 4 temporary failure (the server will retry), 5 permanent failure (the message bounces). In the enhanced code (for example 5.7.1), the second number is the subject: .1 addressing, .2 mailbox, .4 network and routing, .7 security and policy.

How to read an SMTP error code

Every SMTP reply has two parts: a three-digit basic code (RFC 5321) and a dotted enhanced status code (RFC 3463). Take 550 5.7.1:

  • 550: requested action not taken, permanent failure.
  • 5.7.1: permanent (5) or temporary (4).
  • 5.7.1: the subject class; 7 means security and policy.
  • 5.7.1: the detail within that class; 7.1 is "delivery not authorized, message refused".

The human-readable text after the code is usually more informative than the code itself: the same 5.7.1 can mean a blocklist rejection on one server and a relay denial on another.

Code classes

ClassMeaningExample
X.1.XAddressing: invalid recipient or sender address5.1.1 user unknown
X.2.XMailbox: full, disabled5.2.2 mailbox full
X.3.XReceiving mail system problems4.3.0 temporary system error
X.4.XNetwork and routing5.4.1 recipient rejected (Microsoft)
X.5.XProtocol5.5.1 invalid command
X.7.XSecurity and policy: blocklists, SPF, DMARC, relaying5.7.1, 5.7.23, 5.7.26

Common SMTP errors

CodeMeaningType
550 5.1.1User unknown (recipient does not exist)Permanent error
550 5.4.1Recipient address rejected: Access denied (Microsoft 365)Permanent error
550 5.7.1Message rejected: policy or permission failurePermanent error
550 5.7.23SPF validation failedPermanent error
550 5.7.26Unauthenticated sender or DMARC policy rejectionPermanent error
554 5.7.1Transaction failed: relay denied or blockedPermanent error
421 4.7.0Temporary rejection: rate limit or reputationTemporary error
451 4.7.1Temporary rejection: greylisting (try again later)Temporary error
552 5.2.2Recipient mailbox fullPermanent error (on most servers)

Each code's page has real bounce message examples, causes and step-by-step fixes.

Three first steps when an email bounces

  1. Read the whole bounce. The text next to the code says which server rejected the message and why.
  2. Check whether it's 4xx or 5xx. With 4xx, waiting is often enough; with 5xx, something has to be fixed.
  3. Verify with tools. For suspected blocklisting use the blacklist check, for SPF/DMARC issues the SPF, DKIM, DMARC checker, and for the receiving server the MX record lookup.

If your mail isn't bouncing but landing in spam, see why are my emails going to spam?

Protect your inbox from spam, malware and phishing: point your MX record to Spambil and try it free for 7 days. No credit card required.

Frequently asked questions

What happens to a message that gets a 4xx error?

The sending server keeps it in its queue and retries at intervals. If the problem is fixed in time, the message is delivered; if the retry period runs out (a few days on most servers), the sender gets a bounce.

Does the same code mean different things at different providers?

The class means the same thing, but the details vary. 5.7.1 in particular is very generic; read the explanation text.

Why are bounce messages always in English?

The technical part of a bounce comes from the rejecting server and is almost always in English. Localized email clients translate the summary at the top, but the original server response is at the bottom of the report.