SMTP Error Codes and Bounce Messages Explained: Complete Reference Guide

Learn what every SMTP error code means, from 421 temporary deferrals to 550 permanent rejections, and how to diagnose and fix email delivery failures.

Key Takeaways
  • SMTP error codes are three-digit numbers returned by mail servers that tell you exactly why an email was accepted, deferred, or rejected.
  • Codes starting with 2xx indicate success, 4xx indicate temporary (soft bounce) failures that will be retried, and 5xx indicate permanent (hard bounce) failures that require action.
  • Enhanced status codes (like 5.1.1 or 4.7.0) provide more specific diagnostic detail beyond the basic three-digit code.
  • Common codes like 550, 421, and 554 each point to different root causes ranging from invalid addresses to blacklisting to policy violations.
  • Monitoring your bounce codes is critical for maintaining sender reputation and diagnosing deliverability problems before they escalate.

When an email fails to deliver, the receiving mail server does not just silently drop it. It sends back a numeric response code that explains exactly what went wrong. These SMTP error codes are your single best diagnostic tool for understanding why emails bounce, get deferred, or get rejected outright.

The problem is that most senders never look at them. They see "delivery failed" in their logs or ESP dashboard and move on. But buried in those three-digit codes (and their enhanced counterparts) is precise, actionable information about whether the issue is on your end, the recipient's end, or somewhere in between.

In this guide, we will break down every major SMTP error code you are likely to encounter, explain what each one means in plain language, and walk through the fixes for each category.

How SMTP Response Codes Work

Every time your mail server communicates with a receiving server, the conversation follows the SMTP (Simple Mail Transfer Protocol) standard. Each step in the exchange produces a response code. These codes follow a consistent structure that makes them predictable once you understand the pattern.

The Three-Digit Code Structure

Traditional SMTP codes are three digits long. The first digit tells you the overall result category:

First DigitMeaningAction Required
2xxSuccessNone. The command was accepted.
3xxIntermediateServer is waiting for more data (e.g., message body after DATA command).
4xxTemporary failure (soft bounce)Your server should automatically retry. If it persists, investigate.
5xxPermanent failure (hard bounce)Do not retry. Identify and fix the root cause, or remove the address.

Enhanced Status Codes (x.y.z Format)

Because the original 12 or so SMTP codes were too vague, RFC 3463 introduced enhanced status codes with three separate numbers separated by periods (e.g., 5.1.1, 4.7.0). These provide much more specific detail:

  • First number (class): 2 = success, 4 = temporary failure, 5 = permanent failure
  • Second number (subject): Identifies the category (0 = other, 1 = addressing, 2 = mailbox, 3 = mail system, 4 = network, 5 = protocol, 6 = content, 7 = security)
  • Third number (detail): The specific condition within that category

For example, 5.1.1 means: permanent failure (5), addressing issue (1), user unknown (1). When you see 550 5.1.1 User unknown, the 550 is the traditional code and the 5.1.1 is the enhanced code providing the specific diagnosis.

Pro Tip

Always look at the enhanced status code (x.y.z) rather than just the three-digit code. Multiple different problems can produce the same three-digit code (e.g., 550), but the enhanced code will tell you specifically whether it is an invalid address, a policy rejection, or a blacklist block. Use the email header analyzer to parse bounce messages and extract these codes automatically.

2xx Success Codes

These codes confirm that the receiving server accepted your command. You will see them in server logs during normal, successful delivery.

CodeEnhancedMeaning
220-Server ready. The receiving server has accepted the connection and is ready for commands.
2502.0.0Command completed successfully. Used after EHLO, MAIL FROM, RCPT TO, and final delivery confirmation.
2502.1.5Recipient address validated. The receiving server confirmed the address exists.
354-Start mail input. The server is ready to receive the message body after the DATA command.

4xx Soft Bounce Codes (Temporary Failures)

A 4xx code means the delivery failed right now, but may succeed later. Your mail transfer agent (MTA) should automatically queue these messages and retry for a configured period, typically 24-72 hours. If the same 4xx code persists after all retries are exhausted, the message will bounce permanently.

421 - Service Not Available

This is the most common temporary failure. The receiving server is telling your server to slow down or try again later. Common causes include:

  • Rate limiting: You are sending too many messages too quickly. This is especially common with Gmail, which limits inbound messages per minute.
  • Server overload: The receiving server is busy or undergoing maintenance.
  • Greylisting: The server intentionally rejects the first delivery attempt from an unknown sender, expecting legitimate servers to retry (spammers usually do not).
  • Reputation issues: Some providers use 421 codes to throttle senders with marginal reputation rather than outright rejecting them.

Fix: Ensure your MTA is configured to retry with exponential backoff. If you see 421 codes consistently from a specific provider, reduce your sending rate to that domain. Check your sender reputation to rule out reputation-based throttling.

450, 451, 452 - Mailbox and System Errors

CodeEnhancedCauseFix
4504.2.1Mailbox busy or temporarily unavailableRetry automatically. If persistent, the recipient may have a full or suspended mailbox.
4514.3.0Server error or processing issueUsually resolves on its own. If persistent, there may be DNS or configuration issues on the recipient's side.
4524.2.2Insufficient storage on receiving serverThe recipient's mailbox is full. Retry later, but if it persists for days, the mailbox may be abandoned.
4xx codes account for ~35% of all bounces
Most 4xx failures resolve automatically through MTA retries within 24-72 hours. The key is having your retry queue properly configured so legitimate messages get through after temporary blocks clear.

5xx Hard Bounce Codes (Permanent Failures)

A 5xx code means the delivery has permanently failed. Do not retry these messages without fixing the underlying issue first, as repeated attempts will damage your sender reputation.

550 - Mailbox Unavailable or Policy Rejection

The 550 error is the single most common hard bounce code, but it covers a wide range of problems. The enhanced code tells you which one:

Enhanced CodeMeaningAction
5.1.1User unknown / address does not existRemove from your list immediately. Verify the address for typos.
5.1.2Domain not foundThe recipient domain does not exist or has no MX records. Remove the address.
5.7.1Message rejected due to policy (spam, blacklist, or auth failure)Check your blacklist status, verify SPF/DKIM/DMARC configuration.
5.7.26DMARC authentication failedYour email failed DMARC alignment. Check your DMARC, SPF, and DKIM setup.
5.2.1Mailbox disabled or suspendedThe address exists but is no longer active. Remove from your list.

Other Critical 5xx Codes

CodeEnhancedMeaningFix
5525.2.2Mailbox full / exceeded quotaRecipient's mailbox is over quota. If persistent, consider removing the address.
5535.1.3Invalid address syntaxThe email address format is malformed. Correct or remove it.
5545.7.1Transaction failed / message rejectedBroad rejection. Often caused by content filtering, blacklisting, or failed authentication.
5215.2.1Server does not accept mailThe host blocks all SMTP. Find an alternative way to reach the recipient.
5305.7.0Authentication requiredYour server needs to authenticate before sending. Check SMTP credentials.

Warning: If you see a sudden spike in 550 5.7.1 errors, your IP or domain may have been blacklisted. Run an immediate check with the blacklist checker and review your recent sending patterns for anomalies like a compromised account or a bad list segment.

Provider-Specific Error Codes

Major mailbox providers add their own custom error messages on top of standard SMTP codes. Here are the most common ones you will encounter:

Gmail / Google Workspace

  • 421 4.7.0 ...unsolicited mail originating from your IP - Google has detected spam-like behavior. Reduce volume, warm up your sending, and check reputation via Google Postmaster Tools.
  • 550 5.7.26 ...does not pass DMARC verification - Your message failed DMARC. Fix SPF/DKIM alignment with your From domain.
  • 550 5.7.1 ...not RFC 5322 compliant - Your message headers are malformed. Check your email construction.

Microsoft 365 / Outlook

  • 550 5.7.606-649 Access denied, banned sending IP - Your IP is on Microsoft's blocklist. Use the delist portal at sender.office.com to request removal.
  • 5.7.25 ...sender not authenticated for domain - SPF or DKIM is failing for your domain. Verify your DNS records.
  • 5.7.20 ...sender not authenticated by SPF - Specifically an SPF failure. Check that your sending IP is included in your SPF record.

How to Diagnose Bounce Issues

When you encounter bounce codes, follow this systematic approach:

  1. Collect the full bounce message. Do not just look at the three-digit code. Get the full NDR (Non-Delivery Report) including the enhanced code and any human-readable text.
  2. Classify the bounce. Is it a 4xx (temporary, will retry) or 5xx (permanent, needs action)?
  3. Read the enhanced code. The x.y.z format narrows the problem to a specific category (addressing, mailbox, security, etc.).
  4. Check the provider's custom message. Gmail, Microsoft, and Yahoo often include specific text explaining the rejection reason and sometimes linking to their support documentation.
  5. Cross-reference your infrastructure. Run your domain through the SPF checker, DKIM checker, and DMARC checker to verify authentication is properly configured.
Did You Know?

The original SMTP specification (RFC 821, published in 1982) defined only about 12 useful response codes. The enhanced status code system (RFC 3463) was introduced in 2003 to address the problem of overloaded codes, where a single number like 550 was being used to represent dozens of different failure conditions.

Preventing Bounce Issues

Rather than constantly reacting to bounce codes, implement these preventive measures:

  • Validate email addresses at collection. Use real-time email verification to catch typos, disposable addresses, and invalid domains before they enter your list.
  • Maintain proper authentication. Ensure your SPF, DKIM, and DMARC records are correctly configured and aligned. Use the authentication checkers in our email authentication guide.
  • Monitor bounce rates continuously. Industry best practice is to keep your overall bounce rate below 2% and your hard bounce rate below 0.5%.
  • Process bounces immediately. Hard bounces (5xx) should trigger automatic removal from your sending list. Soft bounces (4xx) that persist beyond your retry window should also be flagged for review.
  • Implement a suppression list. Maintain a master list of addresses that have hard-bounced and ensure they are excluded from all future sends across all your platforms.

Frequently Asked Questions

A soft bounce (4xx code) is a temporary delivery failure where the receiving server says "not right now, try again later." Your mail server will automatically retry these messages. A hard bounce (5xx code) is a permanent failure where the server says "this will never work." Hard-bounced addresses should be removed from your list immediately to protect your sender reputation.

SMTP error 550 5.7.1 means the receiving server rejected your message due to a security or policy violation. This is most commonly caused by your IP or domain being on a blacklist, failing SPF/DKIM/DMARC authentication, or your message being flagged by content filters. Check your blacklist status and authentication records to diagnose the specific cause.

A 421 error indicating too many connections means you are overwhelming the receiving server with simultaneous SMTP sessions. Reduce the number of concurrent connections your MTA opens to that domain, implement rate limiting in your sending configuration, and use exponential backoff on retries. Most major providers publish their connection limits in their postmaster documentation.

No. A 5xx code indicates a permanent failure, and retrying without fixing the underlying problem will waste resources and further damage your sender reputation. Instead, identify the root cause from the enhanced status code, fix the issue (remove invalid addresses, resolve blacklist listings, fix authentication), and only then attempt to resend if the fix is confirmed.

Enhanced SMTP status codes are three-part numbers in the format x.y.z (like 5.1.1 or 4.7.0) that provide more specific diagnostic information than the traditional three-digit SMTP codes. The first number indicates the class (success, temp fail, perm fail), the second indicates the subject category (addressing, mailbox, security), and the third provides the specific condition. They were introduced in RFC 3463 to disambiguate the limited set of original SMTP codes.

Share this article:
← Back to Blog