Deliverability

SMTP error codes explained: what 250, 450, 550 and 554 actually mean

Every time your server talks to a receiving mail server, the exchange ends with a three-digit SMTP status code. Most of the time you never see these codes. When you do, they are the fastest way to know whether a problem is yours, the recipient's, or the network's.

Check the codes behind your domain in seconds

The free InboxProof audit checks your SPF, DKIM, DMARC, PTR, MX and TLS records and flags the configuration problems that cause 5xx rejections. No signup.

Audit my domain

How SMTP codes are structured

Each code has three digits. The first digit is the category:

The difference between 4 and 5 matters enormously. A 4xx means "try again later." A 5xx means "this will never work, stop trying." If your mail is bouncing, the first thing to check is whether the rejections are 4xx (a transient or throttling issue) or 5xx (a hard configuration or policy rejection).

The codes you will actually see

250 2.0.0 OK

The message was accepted for delivery. This is the only code that means your email actually went through. If you see 250, the receiving server took the message. Where it lands (inbox or spam) is a separate question.

450 4.2.0 / 451 4.3.0 / 452 4.3.2

Temporary failures: the mailbox is busy, the server is busy, or the mailbox is over quota. The sending server queues the message and retries. A few 450s are normal. Sustained 4xx responses for hours mean the receiving server is throttling you, usually because of your sending reputation or volume.

550 5.1.1 User unknown / Recipient address rejected

The recipient address does not exist at that domain. This is a hard bounce. If you see many 550 5.1.1 responses, your list has bad addresses and you need to clean it. High hard-bounce rates are one of the fastest ways to get your sending IP throttled or blocked.

550 5.7.1 / 554 5.7.1 Authentication failed / SPF, DKIM or DMARC rejected

The receiving server rejected the message because it failed an authentication check. This is the code you see when your SPF, DKIM or DMARC is misconfigured. If you see 554 5.7.1 from Gmail or Microsoft, run an audit on your domain and fix the failing record. See the SPF vs DKIM vs DMARC guide.

554 5.7.0 Relay access denied / 554 5.7.27

The receiving server refused to relay your message. Common causes: your server's PTR record does not match its IP, your IP is on a blocklist, or you are sending from a residential IP that is not allowed to relay. If you see this code, check your PTR record and your blocklist status.

554 5.0.0 / 554 5.1.1 Message rejected / spam policy

The receiving server rejected the message based on its spam policy. This is the code you see when your email is being treated as spam at the SMTP level, before it even reaches the inbox. It usually means your sending reputation is poor, your content triggered a filter, or your domain lacks proper authentication.

How to diagnose a delivery problem

When a batch of email is failing, work through the codes in this order:

Codes that predict spam placement

Some codes are early warnings that your email is heading for the spam folder, even if the SMTP transaction "succeeds":

If you see these patterns, the fix is usually the same: clean your list, fix your authentication, and reduce your volume until your reputation recovers.

Find the code behind your bounces

Run a free audit on your sending domain and see which records are causing 5xx rejections.

Open the free audit

Want this checked automatically every day? Inboxproof Pro monitors your domain around the clock and alerts you the moment a record breaks or an IP gets listed. See pricing →

Related: Cold email deliverability · Why email lands in spam · SPF vs DKIM vs DMARC · Is my domain blacklisted?