SMTP error codes, explained and fixed
Match the code in your bounce message to the exact meaning, who's at fault, and the fix. No guessing from cryptic server-speak.
How to read a bounce message
Every bounce carries two codes. 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.

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 24–72 hours 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) almost always point at the sender: SPF, DKIM, DMARC, or reputation. Addressing and mailbox codes (5.1.1 nonexistent user, 5.2.2 mailbox full) point at the recipient. Temporary 4xx deferrals can be either: sender rate limits and reputation throttles, or a receiving server having a bad day.
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.