SMTP error codes
What a bounce or deferral code means, what Gmail, Outlook and Yahoo say about it in their own words, and how to fix it. Each page shows a real SMTP session.
Updated
The codes
| Code | Meaning | Kind |
|---|---|---|
| 421 4.7.0 | Temporary refusal, connection closed | Temporary |
| 451 4.7.1 | Deferred: rate limit or policy | Temporary |
| 530 5.7.0 | Sign in first | Permanent |
| 535 5.7.8 | Login rejected | Permanent |
| 550 5.1.1 | Mailbox does not exist | Permanent |
| 550 5.7.1 | Refused for a policy reason | Permanent |
| 550 5.7.25 | No reverse DNS for the IP | Permanent |
| 550 5.7.26 | Failed SPF, DKIM or DMARC | Permanent |
| 550 5.7.515 | Sender rules at Outlook.com | Permanent |
| 552 5.3.4 | Message too big | Permanent |
Each page quotes the RFC that defines the code and the words Gmail, Outlook and Yahoo use for it on their own error pages, with links to what we read. Where a provider does not list a code, we say so instead of guessing. More codes are added as each page is checked, and each release is noted in the changelog.
How to read a code
A reply such as 550 5.1.1 No such mailbox here has three parts. The first number is the basic reply code from RFC 5321: a 2 means done, a 4 means a temporary failure the client may try again, and a 5 means the client should not repeat the same request [1].
The second, 5.1.1, is the enhanced status code from RFC 3463: class, subject and detail [2]. The class repeats the first digit. The subject says where the problem is: 1 is the address, 2 the mailbox, 3 the receiving system, 4 the network, 5 the mail protocol, 6 the message content and 7 security or policy. IANA keeps the registry of details, and which basic codes each one goes with [3]. Some providers use details outside the registry, such as Microsoft's 550 5.7.515, so the text after the codes is always worth reading.
Sources, read on October 14, 2026
- [1]RFC 5321, Simple Mail Transfer Protocol, section 4.2: www.rfc-editor.org/rfc/rfc5321#section-4.2
- [2]RFC 3463, Enhanced Mail System Status Codes: www.rfc-editor.org/rfc/rfc3463
- [3]IANA, SMTP Enhanced Status Codes registry: www.iana.org/assignments/smtp-enhanced-status-codes/smtp-enhanced-status-codes.xhtml
Prices change. If something here is out of date or wrong, email hello@mailbay.dev and we will fix it.
How Mailbay reports them
- On mail you send. A temporary code makes the recipient
deferredwhile our mail server retries; a permanent one makes itbounced. Each change emits an event with the server's reply inresponse, delivered to your webhooks. - Suppression. Codes that mean the address does not exist, such as 550 5.1.1, add it to the project's suppression list. Policy refusals do not.
- Our own servers. Mailbay's receiving and submission servers answer with these codes too, each with a reason you can act on, like 535 5.7.8 for a key that does not exist. Mailbay's API errors are listed separately on the errors page.
- Authentication. Most policy refusals today come down to SPF, DKIM and DMARC, explained record by record in SPF, DKIM and DMARC explained.
Read next
- SendingSend and reply, test addresses, statuses, suppressions and limits.
- DomainsThe DNS records Mailbay needs, one click setup and verification.
- How email authentication works: SPF, DKIM and DMARC explained with real recordsThree DNS records decide whether your mail is trusted. Each one answers a different question. Here they are, one at a time, using the exact records Mailbay generates for a new domain.
Join the beta
Mailbay is in private beta and free while the beta runs: inboxes, sending, your own domains and MCP. We invite people in small batches and read every note on the form.