Every step of an SMTP conversation gets a three-digit reply code. When email fails, the code in the bounce message or mail log tells you whether the problem is temporary or permanent and who needs to fix it. This guide explains SMTP reply codes and the most common errors.
Before you start
Find the full error text: in the bounce (non-delivery report) you received, in cPanel → Email → Track Delivery, or in the server's mail log.
How to read a code
550 5.7.1 Message rejected due to SPF policy- 550 – the basic SMTP reply code.
- 5.7.1 – the enhanced status code (class.subject.detail).
- The text – the receiving server's explanation, often the most useful part.
The first digit
| Class | Meaning | What happens |
|---|---|---|
| 2xx | Success | Accepted |
| 3xx | Continue | Server waits for more input (e.g. 354 after DATA) |
| 4xx | Temporary failure | Sender retries later; mail sits in the queue |
| 5xx | Permanent failure | No retry; the sender gets a bounce |
Common codes and fixes
| Code | Typical meaning | What to do |
|---|---|---|
| 421 | Service not available / too many connections | Wait; the receiver is busy or throttling you |
| 450 / 451 | Mailbox unavailable / local error, greylisting | Usually resolves on retry |
| 452 | Insufficient storage / too many recipients | Retry later or send in smaller batches |
| 535 5.7.8 | Authentication failed | Wrong username or password in the mail app |
| 550 5.1.1 | User unknown | Check the recipient address for typos |
| 550 5.7.1 | Rejected by policy: spam, SPF, DMARC, blocklist | Check SPF/DKIM/DMARC and your IP's reputation |
| 550 5.7.26 | Unauthenticated mail (failed DMARC/SPF/DKIM) | Fix email authentication for your domain |
| 552 5.2.2 | Mailbox full | The recipient must free space |
| 552 5.3.4 | Message too large | Send a smaller message or a download link |
| 553 | Mailbox name not allowed / relaying denied | Authenticate before sending through the server |
| 554 5.7.1 | Transaction failed, often a blocklist | Look up your IP on blocklists and request removal |
Exact wording varies between providers; always read the text after the code.
Enhanced status code subjects
- X.1.X – addressing problems (bad mailbox, bad domain).
- X.2.X – mailbox problems (full, disabled).
- X.3.X – mail system problems (size, capacity).
- X.4.X – network and routing problems (timeouts, DNS).
- X.5.X – protocol problems.
- X.7.X – security and policy (authentication, spam, blocks).
Who should fix it?
- Address or mailbox errors (5.1.x, 5.2.x): the sender or the recipient.
- Authentication errors (535): the sender's mail app settings.
- Policy errors (5.7.x): the sending domain's DNS (SPF, DKIM, DMARC) or the sending server's IP reputation.
- Temporary errors (4xx): often nobody – wait for retries, but investigate if they persist for hours.
FAQ: SMTP reply codes
Why did I get a bounce days after sending?
The receiver kept returning 4xx errors; after the retry period expired, your server gave up and bounced it.
Is a 5xx error always my fault?
No. It can be a typo, a full mailbox on the recipient's side, or an overly strict filter at the receiver.
Where do I see the codes on cPanel?
In Track Delivery, which shows each attempt and the remote server's response.
