SMTP Codes

SMTP codes: what each rejection actually means

Every rejected message carries a reply code and a line of text. The code tells you whether to retry or to stop; the text tells you why. This category documents the codes senders actually meet in production, one page per real-world rejection, with the exact wording receivers return and what has to change before the next attempt.

Reply codes and enhanced codes4xx retried5xx permanent

How to read a reply

The three-digit reply code is defined by the SMTP standard. Its first digit is the one that decides your next move: a code in the 400 range is a transient failure and the queue will try again, a code in the 500 range is a permanent failure and retrying changes nothing.

Many receivers add a second, dotted code in the form 5.7.1. That is the enhanced status code, standardised separately, and it is read as class, subject, detail. The leading digit repeats the verdict; the two that follow narrow the cause down to a specific class of problem.

Codes by family

421

Service not available

The receiver closes the channel before or during the transaction. Rate limits, connection caps, reverse DNS checks and blocklist hits all surface here.

Start with the base 421

450 451 452

Temporary failures

Greylisting, deferrals, unverified recipients and resource limits. The message is still in the queue, so the fix is to remove the cause before the retry window closes.

See a typical deferral

500 to 521

Authentication and policy

Missing authentication, refused connections and policy rejections at the edge. These are configuration answers, not list answers.

Authentication required

550

Mailbox unavailable

The largest family on the site. It covers unknown users, relaying denied, reverse DNS failures, anti-spoofing policy and most named blocklist rejections.

Read 550 Blocked

551 552 553

Recipient, size and sender name

The recipient is not served here, the message exceeds an accepted size, or the address used in the envelope is refused outright.

Message too large

554

Transaction failed

The catch-all permanent rejection. In practice it is where reputation verdicts land: bad sending history, listed addresses, and gateway policy.

Read 554 5.7.1

Finding your exact rejection

The number alone rarely identifies the problem, because a single code covers a dozen different causes. The identifying detail is always in the text that follows it: the name of a blocklist zone, a hostname, a policy label, or a vendor error reference. Search on that fragment rather than on the digits.

The full index of documented codes lives in the SMTP error code directory, which is filterable by code family, by receiving provider and by cause. When the text names a list rather than a mailbox, the blocklist and spam monitoring reference carries the delisting procedure for each operator.

Before you act on any code, settle the retry question with hard bounce versus soft bounce: suppressing an address that returned a transient code costs you a valid contact, and retrying a permanent one costs you reputation. The wording of each code as the standard defines it is catalogued in the email RFC directory.