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

🕐 ✍️ Sandeep Saxena🗂️ Email Deliverability, Email Servers

SMTP error codes explained - a reference to 4xx and 5xx bounce codes and the provider-specific rejections from Gmail, Microsoft, Yahoo, Zoho, Fastmail and Apple, with fixes.

Every rejected email comes back with a code. Most people glance at "550" or "421", decide the email failed, and move on - and in doing so throw away the single most useful diagnostic email has. An SMTP reply is the receiving server telling you, in a structured way, exactly why it did or did not accept your message and whether it is worth trying again.

This is a plain-English reference to the SMTP error codes you actually meet: how to read any SMTP reply, what the standard 4xx and 5xx codes mean, the signature rejection codes used by Gmail, Microsoft, Yahoo, Zoho, Fastmail and Apple iCloud, and a fix playbook grouped by root cause. Where a code is documented by the provider we say so; where a code is only ever seen in real bounce logs and is not in the provider's own documentation, we say that too, because guessing at a code's meaning is how senders waste days chasing the wrong fix.

Sources and methodology

The standard codes here are checked against RFC 5321 (basic reply codes) and the enhanced-status-code RFCs (RFC 3463 and the authentication codes in RFC 7372). Provider-specific interpretations are taken from official Google, Microsoft, Yahoo, Apple, Fastmail and Zoho documentation where it exists, and are clearly marked as field-observed where a provider (notably Yahoo and Apple) does not document the exact code or tag.

Quick lookup: the codes people search for

The most-searched codes at a glance - each links to its detailed section below. As always, read the diagnostic text the server actually returned; the same number can carry different reasons.

SMTP errorMeaningFirst action
421Temporary deferral / throttlingBack off and let the queue retry
450 / 451 / 452Temporary mailbox / processing / capacity issue (or greylisting)Retry; investigate if it persists
550 5.1.1User does not existSuppress the address
550 5.7.1Policy / security rejection (spam, relay, reputation)Read the diagnostic text
550 5.7.26Gmail: authentication failure (SPF/DKIM/DMARC)Fix SPF, DKIM and alignment
550 5.7.509Microsoft: message failed DMARC (policy = reject)Fix DMARC alignment
550 5.7.515Microsoft: high-volume sender authentication not metFix SPF/DKIM/DMARC
421 4.7.28Gmail: unusual rate of email (throttle)Slow down; warm up
554 5.7.9Yahoo: policy rejection (often authentication/DMARC)Read the text; fix alignment
552 5.2.2Mailbox fullRetry initially; suppress if chronic

How to read an SMTP reply code

A modern SMTP rejection carries two codes and a human message. Learn to see all three and most bounces become self-explanatory:

A typical rejection, decoded
550 5.7.26 This email has been blocked because the sender is
    unauthenticated. Gmail requires all senders to authenticate
    with either SPF or DKIM. ... gsmtp
↑   ↑     ↑                                      ↑
basic  enhanced  human-readable reason                  server tag
  • The basic reply code (three digits, e.g. 550) comes from RFC 5321. The first digit is all you need for triage: 2xx = accepted, 4xx = temporary failure (try again), 5xx = permanent failure (do not retry).
  • The enhanced status code (three numbers, e.g. 5.7.26) comes from RFC 3463 and pinpoints the reason. It reads class.subject.detail - more on this below.
  • The human-readable text is where the receiver tells you what actually happened. Two providers can return the same 550 5.7.1 for completely different reasons, so the text is not optional reading.
  • A server tag often trails the line - Gmail appends gsmtp (or gcdp when an admin's custom rule caused the block), Yahoo and Apple append a hostname. It identifies the server, it is not part of the code.

Read the last line, not the first

A rejected SMTP conversation can contain several lines. The line that carries the reason is the final reply the server sent before closing - that is the one with the code and text you want. Bounce (NDR) messages that land back in your inbox usually quote this line under a heading like "Diagnostic-Code" or "The response was".

Synchronous vs asynchronous bounces

There is a second axis to every bounce: when you find out. It decides where the rejection even shows up.

  • Synchronous - the receiver returns the code during the live SMTP conversation, before it ever accepts the message, so your sending server sees it immediately in your outbound mail logs. Most rejections in this guide arrive this way.
  • Asynchronous - the receiver answers 250 OK and accepts the message, then discovers later that it cannot deliver and sends a separate bounce - a Non-Delivery Report (NDR / DSN) - back to your Return-Path. It arrives as a new email minutes to days later, with the same enhanced status code quoted inside it.

The important part: this is about timing, not a different set of codes. The very same 550 5.1.1 can come back synchronously (the gateway knew the recipient was invalid at RCPT time) or asynchronously (it accepted the message first and only found the mailbox missing afterwards). As a rule of thumb, connection, authentication and reputation blocks tend to be synchronous, while mailbox-full, unknown-user-behind-a-gateway and post-acceptance content filtering tend to come back asynchronously as a DSN - but you read the code the same way in both.

4xx vs 5xx: the one rule that matters

If you remember nothing else, remember this:

ClassMeaningBounce typeWhat you should do
4xxTemporary / transient failure. "Not now, try again."Soft bounceNothing manual. Your mail server retries automatically for ~24-72h. Do not hammer it faster.
5xxPermanent failure. "No, and retrying this message unchanged will not change that."Hard bounceDo not re-send the same message unchanged. Suppress the address only on a recipient failure (e.g. 5.1.1 user unknown); for authentication, policy or reputation 5xx, fix the sender-side cause, then sending can resume.

The trap is a persistent 4xx. A single 4xx is harmless. But when a receiver returns the same 421 deferral to every attempt for two days, it is refusing you politely - treating it as "temporary" and retrying harder makes things worse. Persistent 4xx = a reputation or rate problem to fix, not wait out.

The standard 4xx codes (temporary)

CodeStandard meaningUsually caused by
421Service not available, closing transmission channelServer overloaded, connection/rate throttling, or reputation-based deferral. The signature rate-limit code.
450Mailbox unavailable (busy or temporarily blocked)Recipient mailbox temporarily locked, greylisting, or a temporary per-recipient rate limit.
451Requested action aborted: local error in processingGreylisting, a temporary content/policy hold, or the receiver could not complete authentication checks (temporary DNS failure).
452Insufficient system storage / too many recipientsReceiver low on resources, or you listed too many recipients in one transaction.
455Server unable to accommodate parametersA command parameter the server cannot handle right now. Rare.

Greylisting deserves a note because it alarms people needlessly: some receivers deliberately return a 4xx to the first delivery attempt from an unknown server and accept the retry a few minutes later. It is an anti-spam tactic, not a problem with your mail - a properly configured server just retries and delivers. Fastmail documents doing exactly this, and even adds an X-Spam-greylist header telling you how long the message was delayed.

The standard 5xx codes (permanent)

CodeStandard meaningUsually caused by
500Syntax error, command unrecognizedA malformed SMTP command - typically a broken or misconfigured sending client.
501Syntax error in parameters or argumentsA bad address syntax or command argument.
502Command not implementedThe server does not support a command your client issued.
503Bad sequence of commandsCommands sent out of order (e.g. DATA before RCPT), often an auth-order problem.
504Command parameter not implementedAn unsupported parameter, sometimes seen when a server demands authentication.
521Host does not accept mail (RFC 7504)The host explicitly does not receive email at all.
550Mailbox unavailable / request refusedThe workhorse rejection. No such user, blocked sender, policy or reputation rejection, relay denied. Read the text.
551User not localThe recipient is not hosted here (and no forwarding address offered). Rare today.
552Exceeded storage allocationThe recipient mailbox is full.
553Mailbox name not allowedInvalid address format, or the receiver refuses that name (sometimes relay-denied).
554Transaction failed / no valid recipientsA catch-all permanent rejection - spam, policy, blocklist, or the whole transaction was refused.
556Domain does not accept mail (RFC 7504)The recipient domain advertises that it accepts no mail (a null MX).

Enhanced status codes: the X.Y.Z that actually tells you what broke

The basic code tells you retry-or-not. The enhanced code tells you why. It is class.subject.detail:

  • Class (first digit): 2 success, 4 temporary, 5 permanent - it mirrors the basic code's first digit.
  • Subject (second digit) is the useful part: .1 addressing, .2 mailbox, .3 mail system, .4 network/routing, .5 protocol, .6 media/content, .7 security/policy.
  • Detail (third digit) is the specific condition, and its meaning depends on the subject - the same detail number means different things under different subjects, so read it as part of the whole code (see the table below for the ones you will actually meet).

A .7 in the middle almost always means the block is about you - authentication, reputation or policy - which is the good news, because those are the ones you can fix. The codes below span three layers: the base subjects from RFC 3463, the standard authentication codes added in RFC 7372 (e.g. X.7.25, X.7.26), and higher detail numbers that are provider extensions (e.g. Gmail's 5.7.28 and 5.7.40, in the provider tables further down). Here are the ones you will actually meet:

Enhanced codeMeaningSide
X.1.1Bad destination mailbox address (user unknown)Recipient
X.1.2Bad destination system / domain does not existRecipient
X.1.10Recipient address has a null MX (RFC 7505) - the domain accepts no mailRecipient
X.2.1Mailbox disabled / not accepting messagesRecipient
X.2.2Mailbox full (over quota)Recipient
X.3.1Mail system fullRecipient infra
X.4.4Unable to routeInfra
X.4.7Delivery time expired (your queue gave up after repeated 4xx)Sender/infra
X.6.1Media / content not supported (e.g. a blocked attachment)Content
X.7.1Delivery not authorized, message refused - spam, relay-denied, blocklist or policySender
X.7.25Reverse DNS (PTR) validation failed - missing or mismatched PTR (RFC 7372)Sender
X.7.26Multiple authentication checks failed - e.g. SPF and DKIM both failed (RFC 7372)Sender
X.7.9Message not accepted for policy reasons - commonly an authentication/DMARC failure; read the accompanying text (used by Yahoo)Sender

The fastest triage you can do

Basic code first digit tells you retry-or-stop. Enhanced code middle digit tells you the department: a .1 or .2 is the recipient's address or mailbox (clean your list), a .7 is your authentication, reputation or policy (fix your setup). You can route 90% of bounces correctly before reading a single word of the message.

Provider-specific codes

This is where the standard tables stop being enough. Each major mailbox provider layers its own reason strings on top of the standard codes, and knowing the signature ones tells you the exact fix. The strings below are quoted from real bounces; we note which are documented by the provider and which are only observed in the wild.

Gmail and Google Workspace

Google publishes a full SMTP error reference, and it is unusually systematic: most 2024 bulk-sender rules exist as a matched pair - a 4xx deferral that throttles you first, and a 5xx block for repeat offenders. Gmail appends gsmtp to its error messages; errors caused by a Google Workspace administrator's custom rule can instead show gcdp.

CodeWhat it meansFix
421 4.7.28"Unusual rate of email" from your IP, netblock or domain - the signature Gmail throttleSlow down, warm up, fix list hygiene. Permanent form is 550 5.7.28.
421 4.7.26Rate-limited because the mail is unauthenticated (needs SPF or DKIM)Set up SPF and DKIM. Permanent form is 550 5.7.26.
421 4.7.32Rate-limited because the From header is not aligned with SPF or DKIM (DMARC alignment)Align your From domain with an authenticated domain.
550 5.7.1"This message is likely unsolicited email ... has been blocked" - the classic spam block. Also appears with "very low reputation of the sending IP / domain".Opt-in only, warm the IP/domain, cut complaints.
550 5.7.26Blocked for an authentication failure. Gmail uses this for several cases - SPF and DKIM both failing, an SPF hard-fail, or a DMARC-policy rejection - so read the diagnostic text to see which.Complete SPF and DKIM so at least one passes and is aligned with your From domain.
550 5.7.27 / 5.7.30Bulk mail failed SPF (.27) or DKIM (.30)Fix the specific mechanism named.
550 5.7.40The sending domain has no DMARC record / no policyPublish a DMARC record with a policy.
550 5.7.25Sending IP has no PTR record, or it does not matchSet correct reverse DNS on the sending IP.
550 5.1.1"The email account that you tried to reach does not exist"Remove the address. Do not retry.

Microsoft (Outlook.com and Microsoft 365)

Microsoft is really two systems: consumer Outlook.com / Hotmail and business Microsoft 365 (Exchange Online Protection), with separate block lists and delisting paths. The codes below are from Microsoft's official NDR reference unless noted.

CodeWhat it meansFix
550 5.7.606-649"Access denied, banned sending IP" - your IP is on Microsoft's block listDelist via the Office 365 sender portal.
550 5.7.509Sending domain "does not pass DMARC verification and has a DMARC policy of reject" - this is the DMARC rejectionFix SPF/DKIM alignment so the From domain passes DMARC.
550 5.7.515"Access denied" - Outlook.com's high-volume-sender authentication rule (enforced from May 2025 for domains sending 5,000+/day to consumer Outlook.com/Hotmail): the domain does not meet the required SPF/DKIM/DMARC authentication level.Ensure SPF and DKIM pass, publish a DMARC record, and make sure DMARC aligns.
550 5.7.23Rejected for an SPF (Sender Policy Framework) failureCorrect your SPF record and the sending source.
550 5.7.1"Delivery not authorized" / "Unable to relay" / "Client was not authenticated" - the relay/permission catch-allAuthenticate, or send from an authorized source.
550 5.1.10"Recipient not found" - the address does not exist in Microsoft 365Remove or correct the address.
432 4.3.2 / 421 4.3.240Recipient or connection throttling (too fast / too many concurrent connections)Reduce concurrency and rate.

Two Microsoft codes people get wrong

550 5.7.520 is not a DMARC failure - it is the "external forwarding is not allowed" block, a tenant policy. The DMARC-reject code is 5.7.509. And 452 4.3.1 is a generic "insufficient resources" code used by many servers, not a Microsoft-specific throttle - Microsoft's real throttling codes are 432 4.3.2 and 421 4.3.240. On consumer Outlook.com you may also see block tags like S3140 / S3150; those appear in real bounces but Microsoft does not define them in an official reference, so treat the exact meaning with caution.

Yahoo and AOL

Yahoo (which also runs AOL) documents its errors by category rather than a numbered table: temporary errors are 421/451, permanent are 553/554, and it names two tag families, TS* for reputation deferrals and PH* for content/malware blocks. The specific sub-tags below (TSS04, TS01-TS04) are seen constantly in real logs but are not individually defined by Yahoo - their meanings are inferred by email providers and vary, so use them as a signal, not gospel.

The Yahoo deferral you will meet during a warmup
421 4.7.0 [TSS04] Messages from 4.16.55.1 temporarily deferred
    due to unexpected volume or user complaints;
    see https://postmaster.yahooinc.com/error-codes
CodeWhat it meansFix
421 4.7.0 [TS*]Reputation/volume/complaint deferral (the TS* family - TSS04 is the common one)Cut Yahoo-bound volume and concurrency, let the queue back off, fix complaints and list hygiene.
554 5.7.9"Message not accepted for policy reasons" - a policy rejection, commonly an authentication/DMARC failure (classic on forwarded mail). Read Yahoo's accompanying text for the exact cause.Align SPF/DKIM with the From domain; add ARC on forwarding paths.
553 / 554Invalid recipient, or "your IP is listed by Spamhaus"Remove bad addresses; delist at Spamhaus.
554 ... [PH*]Content block - virus, phishing or malicious linksRemove the offending content/links.

Yahoo's 2024 bulk-sender rules (authenticate with SPF and DKIM, publish DMARC, one-click unsubscribe, low complaints) are enforced through these same codes: complaint and reputation failures surface as TS* deferrals, and authentication or policy failures as 554 5.7.9.

Zoho Mail

Zoho tends to wrap its rejections in a 5.7.1 enhanced code with a descriptive reason, and (unlike most providers) tags its outbound rate limit with a 5xx code even though it behaves like a throttle. The strings below are verbatim from Zoho's help community.

CodeWhat it meansFix
554 5.7.1"Email detected as Spam by spam filters" (also "matches a profile the Internet community may consider spam")Fix authentication and content; recipient admin can allowlist.
554 5.7.1"Relay access denied" - sending through Zoho MX without being an authorized senderSend only to Zoho-hosted domains, or authenticate via smtp.zoho.com.
550 5.7.1Unauthenticated mail failing the recipient domain's DMARC policy, or an IP flagged for abuseFix SPF/DKIM alignment; get the IP delisted.
550 5.4.6"mail rate exceeded limit" - Zoho's outbound rate limit (dynamic, roughly 1000/day on standard policy)Slow down; heavy/marketing sending belongs on Zoho Campaigns, not Zoho Mail.
554 5.5.3"Too many recipients" in one transaction (about 100, or 50 under a custom policy)Send in smaller recipient batches.
550 5.1.1User unknown / mailbox does not existRemove the address.

Note: a widely repeated claim that Zoho uses 554 5.7.5 for spam is wrong - the real spam code is 554 5.7.1. Setting Zoho up cleanly is largely an authentication exercise; our Zoho SPF, DKIM and DMARC guides walk it end to end.

Fastmail

Fastmail is the outlier, and it is worth understanding why: it deliberately does almost no content-based rejection at SMTP time. Per Fastmail's own documentation, SPF, DKIM, DMARC and content scoring only adjust the spam score and file to the Spam folder - they do not bounce the message, even for a domain publishing p=reject (which Fastmail treats as a high-scored quarantine, not an SMTP rejection). So there are very few Fastmail rejection codes to learn.

Code / signalWhat it meansFix
4xx + X-Spam-greylist headerGreylisting - a temporary failure on the first attempt, accepted on retryNothing; a normal server retries and delivers.
Rejection citing xbl.spamhaus.orgThe one blocklist Fastmail rejects on: the Spamhaus XBL (compromised/exploited hosts)Your sending host is compromised or on the XBL - fix it and delist at Spamhaus.
550 5.1.1"Recipient address rejected: User unknown in local recipient table"Remove the address.
554"Recipient address rejected: Relay access denied"Send only to Fastmail-hosted recipients, or authenticate.

Fastmail also rate-limits sending hosts and blocks address-enumeration and RFC-violating spambots at the envelope stage. Fastmail does not publish a full numeric code for the Spamhaus block or greylisting - so if you see a bounce claiming a specific "Fastmail 550" for a spam-content reason, be sceptical; that is not how Fastmail behaves.

Apple iCloud Mail

Apple documents the least of any provider: its postmaster page lists requirements but no codes and no bracket tags at all. The bracketed tags below ([CS01], [HM07], [HM08]) are real and appear in live bounces, but they are undocumented by Apple - known only from mail logs - so treat them as "reputation/policy, slow down and clean up" signals rather than precise diagnoses.

The iCloud rejection everyone eventually sees
550 5.7.1 [CS01] Message rejected due to local policy.
    Please visit https://support.apple.com/en-us/HT204137
CodeWhat it meansFix
550/554 5.7.1 [CS01]"Message rejected due to local policy" - Apple's proprietary content/reputation filter declined it. Not proof of a complaint or a bad address.Improve authentication and IP/domain reputation; escalate to [email protected] with logs.
554 5.7.1 [HM07] / [HM08]Same "local policy" family; commonly tied to list-hygiene and send-rate problems - Apple's signal to slow downPrune disengaged subscribers, reduce velocity, tighten authentication.
550 5.7.1 (DMARC)"Your message was rejected due to example.com's DMARC policy"Fix SPF/DKIM alignment for the From domain.
550 5.7.1 (Spamhaus DBL)Rejected for a domain on the Spamhaus DBLDelist the domain at Spamhaus.
421 4.7.1"deferred due to excessive volume" - slow downReduce volume; retry with backoff.
550 5.1.1 / 552 5.2.2User does not exist / mailbox over quotaRemove or leave to the recipient.

Apple runs no feedback loop and no allow list, so with iCloud "local policy" rejections you cannot get a complaint report - the only route is to get your authentication, reputation and list hygiene right, then escalate with logs.

Other systems: gateways and blocklists

A lot of mail is filtered not by the mailbox provider but by a security gateway sitting in front of it, or rejected because of a blocklist. You will meet their codes too - here are the official references to keep on hand:

Fix playbooks by root cause

Nearly every 5xx block above collapses into one of four root causes. Fix the cause, not the code.

1. Authentication failing (5.7.9, 5.7.23, 5.7.26, 5.7.509, DMARC/SPF/DKIM strings)
  • Publish and verify SPF, DKIM and DMARC. The 2024 Gmail/Yahoo rules and Microsoft/Apple expectations all require these. Check each with the SPF, DKIM and DMARC checkers.
  • Fix alignment, not just presence. Codes like Gmail's 5.7.32 and Microsoft's 5.7.509 are alignment failures - your visible From domain must match the domain that SPF or DKIM authenticated.
  • Watch it work with real report data. Turn on the Postbox DMARC Monitor to see which sources pass and fail before you move DMARC to enforcement.
  • Understand the moving parts in the SPF, DKIM and DMARC guide.
2. Reputation or spam block (550 5.7.1, TS* deferrals, [CS01], "low reputation")
  • Check whether you are blocklisted. Run your sending IP and domain through the blacklist checker; Spamhaus XBL/DBL listings drive Fastmail, Yahoo and Apple rejections directly.
  • Warm up new IPs and domains gradually. Sudden volume from a cold source is exactly what triggers Gmail 421 4.7.28 and Yahoo TS* deferrals.
  • Cut complaints and clean the list. Honour unsubscribes fast, remove disengaged recipients, and only mail people who opted in.
  • Test the message before you send it. A free spam test scores authentication, reputation and content on one send so you fix problems before a provider does it for you.
3. Rate limit or greylisting (421, 450, 451, 550 5.4.6, 432 4.3.2)
  • Let your server retry - do not resend by hand. 4xx codes are handled by the queue; manual re-sends look like more spam.
  • Reduce concurrency and hourly volume to the throttling provider. Especially during warmup, and especially to Yahoo and Microsoft.
  • Use the right tool for the job. Provider mailboxes (Zoho, Google Workspace) have low daily limits by design - bulk and marketing mail belongs on an ESP, not a mailbox.
4. Bad address (5.1.1 user unknown, 5.2.2 mailbox full, 5.1.10 null MX)
  • Remove hard-bounced addresses immediately and never re-mail a 5.1.1. Repeated unknown-user hits are a strong spam signal.
  • Verify addresses before you import a list so typos and dead mailboxes never enter your sending in the first place.
  • Treat a persistent 5.2.2 (full) as effectively dead after a while - a chronically full mailbox is an abandoned one.

When the code says the problem is not you

Not every bounce is yours to fix. Addressing and mailbox errors - 5.1.1 user unknown, 5.2.2 mailbox full, 5.2.1 mailbox disabled, 5.1.10 null MX - are the recipient's address being wrong, full or closed. There is no sender-side fix beyond removing the address. Likewise a genuine 4.4.x routing error or a one-off 421 during a provider's incident will clear on its own. The codes worth your energy are the 5.7.x security-and-policy family, because those are the ones that are about your authentication, reputation or content - and those you can actually fix.

Bounces piling up and you cannot tell which cause it is?

A full deliverability audit reads your bounce logs, authentication, reputation data and DNS together, and tells you exactly what to fix first - instead of decoding one rejection at a time.

Get a deliverability audit Run a free spam test

Bookmark this page as a decoder: read the basic code to know whether to retry, read the enhanced code's middle digit to know the department, read the provider table to know the exact fix. An SMTP rejection is not a dead end - it is the most precise instruction email ever gives you.

Frequently Asked Questions

What is the difference between a 4xx and a 5xx SMTP error?

A 4xx code is a temporary (transient) failure - the receiving server is telling your server to try again later, and a well-behaved mail server will keep retrying for a day or more before giving up. A 5xx code is a permanent failure - re-sending the same message unchanged will not help. In bounce terms, a 4xx is a soft bounce and a 5xx is a hard bounce. A 5xx does not automatically mean you should suppress the recipient forever: suppress the address only when the response is a recipient/address failure such as 5.1.1 (user unknown). When the 5xx is about authentication, policy or reputation (for example 5.7.1, 5.7.26 or Microsoft 5.7.515), fix the sender-side cause and sending can resume - but blindly retrying an unchanged 5xx still damages your reputation.

What does 550 5.7.1 mean?

550 5.7.1 is the most common permanent rejection on the internet, and it is deliberately generic: the basic code 550 means the mailbox action was not taken, and the enhanced code 5.7.1 means 'delivery not authorized, message refused' for a security or policy reason. In practice it is used for spam blocks, blocklisted IPs, relay-access-denied, and DMARC or authentication failures - so you must read the human-readable text after the code to know which one you hit. Gmail, Microsoft, Yahoo, Zoho and Apple all use 550 5.7.1 (or 554 5.7.1) for several different policy rejections.

Is a 421 error a bounce?

Not a permanent one. 421 is a transient code meaning the service is unavailable or is throttling you and is closing the connection - your server should back off and retry. It is the signature code for rate limiting and reputation-based deferrals: Gmail's 421 4.7.28 (unusual rate of email), Yahoo's 421 4.7.0 deferrals, and Apple's 421 4.7.1 (excessive volume) are all 421s. If a 421 keeps repeating for the same recipient over a day or two, the receiver is effectively refusing you, and the fix is to reduce volume and improve reputation, not to keep retrying harder.

How do I read an enhanced SMTP status code like 5.7.26?

The enhanced status code has three parts, class.subject.detail (defined in RFC 3463). The first digit is the class: 2 is success, 4 is a temporary failure and 5 is permanent. The second digit is the subject - 1 is addressing, 2 is the mailbox, 4 is network or routing, 7 is security or policy. The third digit is the specific detail. So 5.7.26 reads as: permanent (5), security/policy (7), detail 26 - which RFC 7372 defines as 'multiple authentication checks failed' (typically SPF and DKIM both failing). Gmail also returns 5.7.26 for an SPF hard-fail or a DMARC rejection, so read the accompanying text. Reading the class and subject alone tells you whether to retry and roughly what area to fix.

Why am I getting authentication errors under the new sender rules (2024/2025)?

Enforcement has arrived in waves. Gmail and Yahoo began enforcing bulk-sender requirements in February 2024. Microsoft followed with its own rule: from May 2025, domains sending 5,000+ messages a day to consumer Outlook.com/Hotmail must meet SPF, DKIM and DMARC requirements or get 550 5.7.515. Apple has similar expectations for bulk senders. Requirements now differ per provider, so follow each provider's current SPF, DKIM, DMARC-alignment, complaint-rate and unsubscribe rules. Failing them produces specific codes: Gmail throttles with 421 4.7.26 or 421 4.7.32 and blocks with 550 5.7.26 or 550 5.7.40; Microsoft returns 550 5.7.515; Yahoo rejects with 554 5.7.9. The fix is to complete SPF, DKIM and DMARC correctly - not to change your content.

Which SMTP errors mean the problem is on my side versus the recipient's?

Addressing and mailbox errors (5.1.1 user unknown, 5.2.2 mailbox full, 5.2.1 mailbox disabled) are recipient-side - the address is wrong, full or closed, and the only fix is to correct or remove it. Security and policy errors (anything 5.7.x or a spam or reputation block) are usually sender-side - your authentication, IP or domain reputation, or content triggered the block, and those are the ones you can actually fix. Network and routing errors (4.4.x) are typically transient infrastructure problems that resolve on their own.

Get a comprehensive email deliverability auditIf bounces keep coming back and you cannot tell whether it is authentication, reputation or content, a full audit reads your logs, reputation data and DNS and tells you exactly what to fix first.
Chat with us!