SMTP error codes, explained and fixed
SMTP error codes are the three-digit reply codes, such as 550 or 421, that a receiving mail server returns when it rejects or defers a message. Find the code from your bounce below to see what it means, which side is at fault, and the fix.
How to read a bounce message
Most bounces carry two codes, though some servers return only the three-digit reply. The three-digit reply code gives the verdict: 5xx is permanent (the message was refused and will not be retried), while 4xx is temporary (the message is deferred and the sending server keeps retrying, usually for a few days, before giving up).
The dotted enhanced status code (like 5.7.26) is the diagnosis. Its middle digit names the subject: .7. is security and policy (authentication, reputation, blocklists), while .1. is addressing and .2. is the mailbox itself. Find your code in the table below; each row links to the verbatim provider messages, the ranked causes, and the step-by-step fix. If the bounces keep coming from different codes, the underlying problem is usually authentication or reputation rather than any one error: the email deliverability guide covers that layer.

Permanent failures (5xx)
The receiving server refused the message. It will not retry: fix the cause, then re-send.
Temporary failures (4xx)
The message is deferred, not rejected. The sending server retries, but the underlying cause usually still needs fixing.
Bounce-code FAQ
What's the difference between a 4xx and a 5xx SMTP error?
The first digit is the verdict. A 5xx code is a permanent failure: the receiving server refused the message and it will not be retried; you have to fix the cause and re-send. A 4xx code is a temporary failure: the message is deferred and the sending server keeps retrying automatically, typically for two to five days depending on the server, before it gives up and bounces.
What do the three extra numbers (like 5.7.26) in a bounce mean?
That's the enhanced status code (RFC 3463). The first digit repeats the class (5 = permanent, 4 = temporary), the second names the subject area (7 = security or policy, 1 = addressing, 2 = mailbox), and the third pinpoints the specific condition. It's usually more precise than the three-digit reply code: 550 alone says 'refused', while 5.7.26 says 'refused because the mail was unauthenticated'.
How do I tell whether a bounce is my fault or the recipient's?
Read the enhanced code and the text. Authentication and policy codes (5.7.x) usually point at the sender: SPF, DKIM, DMARC, or reputation. Mailbox codes (5.2.2 mailbox full) point at the recipient. Addressing codes (5.1.x) are split, which is why the table above marks 5.1.1 as either side: the address does not exist at the recipient's server, but the typo that produced it is usually the sender's. 5.1.8 from Microsoft 365 is squarely a block on the sender's own mailbox. Temporary 4xx deferrals can be either: sender rate limits and reputation throttles, or a receiving server having a bad day. Source (2026-09-18)
Why does the same error code look different from Gmail, Microsoft, and Yahoo?
Providers write their own human-readable text after the numeric codes, and some add proprietary sub-codes (Microsoft's 5.7.509, for example). The numbers are the standard part: match the reply code and enhanced status code first, then use the provider's wording to identify the exact variant.