Skip to content
couryo

Guides

SMTP error codes explained: 550, 421, 552 and more

What each SMTP error code means (550 5.7.1, 550 5.1.1, 421, 451, 452, 552, 554, 5.7.26, 5.7.515...), whether the problem is yours or the recipient's, and what to do in each case.

Updated

View as Markdown

When a mail server refuses or defers a message, it answers with a code. Reading that code is what separates "the address does not exist" from "your domain is not authenticated", and each has a different fix.

How to read an SMTP code#

A typical answer:

Destination server's answer
550 5.1.1 <ana@example.com>: Recipient address rejected: User unknown
  • 550 is the basic code (RFC 5321). The first digit gives the kind: 2 worked, 4 is temporary (try later), 5 is permanent (repeating it unchanged will not help).
  • 5.1.1 is the enhanced code (RFC 3463), as class.subject.detail. The subject helps a lot: x.1.x is the address, x.2.x the mailbox, x.3.x the destination system, x.4.x network and routing, x.5.x protocol, x.7.x security and policy.
  • The text after it is free-form and varies by provider. It usually carries the exact reason and sometimes a help link.

A hard bounce is a 5xx for an address or domain that does not exist: remove the address. A soft bounce is a 4xx: the sending server retries on its own. A policy block (5.7.x) is not the recipient's fault: the problem is the sender.

The most common codes#

Code What it means Whose problem What to do
250 2.0.0 accepted nobody's nothing; from here on it is the destination's filter
421 4.7.0 server refused for now (rate, reputation or a check) sender slow down; the send is retried automatically
450 4.2.1 mailbox temporarily unavailable recipient wait; automatic retry
451 4.7.1 deferred by policy, often greylisting (the server asks you to retry later) nobody's wait; the second try usually passes
452 4.2.2 mailbox full recipient try later; do not remove the address the first time
452 4.5.3 too many recipients in one message sender split the send
535 5.7.8 wrong SMTP username or password sender check the credential
550 5.1.1 the address does not exist list remove the address; ask the person for the right one
550 5.1.2 or 5.4.4 the recipient's domain does not exist or does not take email list check for typos (gmial.com, hotmal.com)
550 5.2.1 mailbox disabled recipient remove the address
552 5.2.2 mailbox full, permanently recipient remove it if it repeats on different days
552 5.3.4 message too large sender shrink attachments or send a link
553 5.1.3 malformed address list fix the address
550 5.7.1 refused by policy: spam, reputation, blocklist, or the server will not relay sender read the text; check authentication, lists and content
554 5.7.1 refused for content or policy sender review links, attachments and text; check lists
550 5.7.26 (Gmail) unauthenticated message: failed DMARC or has neither SPF nor DKIM sender publish aligned SPF, DKIM and DMARC
550 5.7.25 (Gmail) the sending IP has no reverse DNS (PTR) sending service use a service with correct PTR
421 4.7.28 (Gmail) unusual rate of unsolicited mail from the sender sender slow down, clean the list, check Postmaster Tools
550 5.7.515 (Microsoft) bulk sender without the required SPF, DKIM and DMARC sender publish all three, aligned
550 5.7.606 to 5.7.649 (Microsoft) sending IP banned sending service request delisting through Microsoft's sender portal
421 4.7.0 [TSS04] (Yahoo) deferred for unexpected volume or complaints sender lower the rate and the complaints

The usual suspects, in detail#

550 5.7.1#

The "generic policy refusal". The text that comes with it gives the real reason:

  • "likely unsolicited mail" / "spam": the filter thinks it is spam. Check authentication, reputation and content (see Why your emails go to spam).
  • "blocked using ..." / "listed": the IP or domain is on a blocklist. Check the list named and request removal after fixing the cause.
  • "relay access denied" / "relaying denied": the server will not take mail for that destination without authentication. It happens when SMTP is configured without login.

550 5.1.1#

The address does not exist. Retrying will not help: remove it from the list right away. Many bounces like this hurt reputation, because they signal an old or bought list.

421 and other 4xx#

These are deferrals. The sending server retries with growing intervals, and most get through. If they continue for days, they become bounces. Many 421s in a row for the same provider point to low reputation or a rate that is too high.

552#

Message too large (5.3.4) or mailbox full (5.2.2). In the first case, swap attachments for links; in the second, the person needs to free up space.

554#

A final refusal, often for content or policy with few details. Read the text: it usually names the reason or a blocklist.

Where to find the code#

  • In the bounce: the "Mail Delivery Subsystem" or "Undeliverable" email carries the code and the text.
  • In the sending server's log or the service's dashboard, per message.
  • In your system, when it sends over SMTP: the send exception usually carries the code (SMTPRecipientsRefused, TransportException, EENVELOPE...).

Codes Couryo itself answers#

When you send through Couryo's SMTP (smtp.couryo.com), these are the codes of the conversation between your system and Couryo, before the message heads to its destination:

Code When
250 2.0.0 accepted and queued (the answer carries the msg_... ID)
535 5.7.8 username other than couryo, or a key that is invalid, revoked or without the send scope
550 5.7.1 sender domain not verified, a level 0 account sending outside, or every recipient suppressed
452 4.7.0 level, plan or spend limit, or sending paused; the message gives the reason
552 5.3.4 message above 30 MB
554 5.6.0 a message the API would also refuse (invalid field)
451 4.3.0 an error on our side: nothing was sent, try again

Details in SMTP. Through the API, errors come as JSON with a stable code; see Errors.

Where Couryo fits#

At Couryo, each bounce shows up in the message's timeline with the code, the destination server's original answer and a plain-words explanation with what to do: "Hotmail refused because your domain has no DMARC; publish this record". Addresses that do not exist go to the suppression list automatically; policy blocks do not suppress the recipient and open an alert for the deliverability agent. See Webhooks to receive these events in your system.

FAQ#

What is the difference between 4xx and 5xx?#

4xx is temporary: the server asks you to try again later, and the send is retried automatically. 5xx is permanent: repeating the same message will not change the result until the cause is fixed.

What are hard and soft bounces?#

A hard bounce is a permanent refusal for an address or domain that does not exist (5.1.x); remove the address. A soft bounce is temporary (full mailbox, server unavailable, deferral); retrying is fine, and remove the address only if it repeats for several days.

I got 550 5.7.1. Did the recipient block me?#

Rarely a person. It is almost always the provider's filter refusing because of the sender: authentication, reputation, a blocklist or content. The text after the code says which.

What is greylisting?#

A technique where the destination server temporarily refuses (451) the first attempt from an unknown sender. Legitimate servers retry and get through; many spam programs do not.