Bounce Analysis

Understanding SMTP Error Codes: A Complete Reference

Basel Ismail July 1, 2026 8 min read 2,000 words
Understanding SMTP Error Codes: A Complete Reference

Understanding SMTP Error Codes: A Complete Reference

When an email fails to deliver, the receiving server sends back an SMTP error code explaining why. These codes are your diagnostic tool for understanding delivery failures. But most people just see "bounced" in their ESP and move on. Understanding the specific error code tells you exactly what went wrong and what to do about it.

How SMTP Error Codes Work

SMTP error codes are three-digit numbers. The first digit tells you the category: 2xx means success (the email was accepted), 4xx means temporary failure (try again later), and 5xx means permanent failure (do not try again).

The second and third digits provide more specific information. Let us go through the codes you are most likely to encounter.

Success Codes (2xx)

250: The standard success response. "Requested mail action okay, completed." This means the receiving server accepted your email. Note: accepted does not mean delivered to inbox. The server might still route it to spam or reject it during content filtering after the SMTP handshake.

251: "User not local; will forward." The server accepted the email but is forwarding it to another address. This is common with email forwarding rules and catch-all configurations.

Temporary Failure Codes (4xx)

421: "Service not available." The receiving server is temporarily down or overloaded. Retry later. This is usually a transient issue that resolves within minutes to hours.

450: "Requested mail action not taken: mailbox unavailable." The mailbox exists but is temporarily unavailable. Could be a mailbox that is full, undergoing maintenance, or temporarily locked. Retry in a few hours.

451: "Requested action aborted: local error in processing." The server encountered an internal error while processing your email. Not your fault. Retry later. If it persists, the receiving server has a configuration issue.

452: "Requested action not taken: insufficient system storage." The server ran out of disk space. This is the receiving server's problem, not yours. Retry after some time (hours or days) to give the admin time to free up space.

455: "Server unable to accommodate parameters." A catch-all temporary rejection. Sometimes used by graylisting systems that reject the first delivery attempt to filter spam bots (legitimate servers retry, bots do not).

Permanent Failure Codes (5xx)

550: "Requested action not taken: mailbox unavailable." The most common permanent error. The mailbox does not exist. This is a hard bounce. Suppress the address immediately and do not retry. This code also appears when the receiving server blocks your email due to policy (spam filtering, blacklisting, content rejection). Check the full error message for details.

551: "User not local." The address used to exist on this server but no longer does. Sometimes includes a forwarding address. Treat as a hard bounce unless a forwarding address is provided.

552: "Requested mail action aborted: exceeded storage allocation." The recipient's mailbox is permanently full. Different from 452 (server storage) because this is mailbox-specific. In practice, a permanently full mailbox often indicates an abandoned account. Treat as a hard bounce if it persists.

553: "Requested action not taken: mailbox name not allowed." The email address format is not accepted by the server. Could be a syntax issue or a server-specific restriction on mailbox naming.

554: "Transaction failed." A generic permanent failure. The full error message usually provides more context. Common reasons: your sending IP is blacklisted, your email content triggered a spam filter, or the receiving server has a policy that blocks your email.

Provider-Specific Error Codes

Gmail, Microsoft, and Yahoo each have their own extensions to standard SMTP codes:

Gmail: Uses detailed error messages after the code. "550-5.1.1 The email account that you tried to reach does not exist" is clear. "421-4.7.28 Our system has detected an unusual rate of unsolicited mail originating from your IP address" means you are being throttled for suspected spam.

Microsoft: "550 5.7.1 Service unavailable, Client host [x.x.x.x] blocked" means your IP is blacklisted by Microsoft. Check your IP against their block list and request removal through their sender support portal.

Yahoo: "553 5.7.1 [BL21] Connections will not be accepted from your IP" means your IP is on Yahoo's internal block list. Yahoo requires you to fix the underlying spam issue before they will remove the block.

Using Error Codes for Diagnosis

When you see bounces in your ESP, do not just look at the count. Look at the specific error codes. A batch of 550 errors to the same domain probably means the domain migrated to a new email provider and old addresses no longer exist. A batch of 421 errors means the receiving server is having temporary issues. A 554 with a blacklist reference means you need to check your blacklist status immediately.

Error codes are your early warning system. They tell you what is happening and why before the problem escalates. Pay attention to them, and you will catch deliverability issues while they are still small enough to fix quickly.

Prevention Through Verification

Most 550 "mailbox does not exist" errors are preventable through email verification. Verify before sending, and you eliminate the most common permanent failure. For catch-all domains, standard verification cannot catch these errors because the catch-all server never returns a 550. It accepts everything. CatchallVerifier resolves this by determining deliverability through proprietary methods that go beyond the SMTP handshake.

The best SMTP error is the one that never happens. Verification before sending prevents the errors. Error code analysis after sending helps you diagnose what got through your prevention layer so you can tighten it for next time.

SMTP CodesEmail ErrorsBounce DiagnosisTroubleshooting
Share:

Verify Emails Free

Start using Catch-all Verifier today and see the results for yourself.

Get Started Free

Related Articles