Skip to content

Glossary

What is an enhanced status code?

Quick answer

An enhanced status code is the three-number code, such as 5.1.1 or 4.7.0, that follows the basic SMTP reply and says precisely what went wrong. The first number is the class (2 success, 4 temporary, 5 permanent), the second the subject area and the third the detail. Reading it correctly is the difference between a dead mailbox and a policy block.

Definition

Enhanced status code: A three part code in the form class.subject.detail (RFC 3463) that adds precision to an SMTP reply. In 5.1.1, the 5 means permanent failure, the 1 means an addressing problem and the final 1 means the mailbox does not exist.

How to read an enhanced status code

The class tells you whether to retry: 4 means try again later, 5 means do not. The subject narrows down the area: 1 addressing, 2 mailbox, 3 mail system, 4 network and routing, 5 the SMTP protocol itself, 6 message content and 7 security or policy.

The detail number pins down the exact condition within that subject. So 5.1.1 is a permanent addressing problem where the mailbox does not exist, and 4.2.2 is a temporary mailbox problem where the mailbox is full.

Common enhanced status codes in bounces

5.1.1 bad destination mailbox, the classic hard bounce. 5.2.1 mailbox disabled. 5.2.2 and 4.2.2 mailbox full. 5.4.1 is often used by Microsoft 365 when a recipient is rejected.

5.7.1 delivery not authorized, a policy refusal. 5.7.26 and similar codes at Gmail point at authentication failures. Any 5.7.x code is about the sender, not the recipient address.

Where to find the enhanced status code in a bounce

In a live SMTP session, it follows the three-digit reply code. In a bounce message, look for the machine-readable delivery status part: the Status field holds the enhanced code and Diagnostic-Code holds the server's full reply.

Your email platform usually shows the same reply text in its bounce log or webhook payload.

Final-Recipient: rfc822; old.employee@example.com
Action: failed
Status: 5.1.1
Remote-MTA: dns; mx1.example.com
Diagnostic-Code: smtp; 550 5.1.1 <old.employee@example.com>: Recipient address rejected: User unknown
The delivery status part of a bounce message. Status carries the enhanced code; Diagnostic-Code carries the remote server's full reply.

How RocketVerifier handles it

We parse the full reply, basic code, enhanced code and text, with separate rules for Google, Microsoft, Yahoo, Mimecast, Proofpoint and Barracuda, because each words its replies differently. A clear user-unknown answer such as 5.1.1 becomes undeliverable with sub_status mailbox_not_found, while 5.7.x replies about the sender are reported as blocked (unknown) and never as undeliverable. A bare 550 without a clear user-unknown meaning is treated as ambiguous.

Go further

Sources

  1. RFC 3463: Enhanced Mail System Status Codes
  2. RFC 3464: Delivery Status Notifications
  3. RFC 2034: SMTP Service Extension for Returning Enhanced Error Codes

FAQ

Enhanced status code: common questions

Do all mail servers send enhanced status codes?

Most do, and they announce it with the ENHANCEDSTATUSCODES keyword in their EHLO reply, defined in RFC 2034. Some older or minimal servers send only the three-digit code and free text.

Can the basic code and the enhanced code disagree?

They should not: a 5xx reply should carry a 5.x.x code and a 4xx reply a 4.x.x code. When a misconfigured server mixes them, the reply text is usually the best tiebreaker.

Where can I look up a specific code?

Our bounce codes directory explains the common codes from Gmail, Microsoft and other providers, with the cause and the fix for each.

Turn definitions into a cleaner list

Verify your first emails in minutes. Credits never expire, and unknown results are always free.

100 free credits · No card required · Credits never expire