Skip to main content
Every time an email is sent, the receiving mail server responds with an SMTP status code indicating whether the message was accepted, temporarily deferred, or permanently rejected. Lettr surfaces these codes in your dashboard and via email.bounced webhook events, so understanding them helps you diagnose delivery issues quickly.

How SMTP Response Codes Work

SMTP response codes are three-digit numbers returned by a receiving mail server during or after the message transfer. The first digit determines the overall class of the response:
First DigitClassMeaning
2xxSuccessThe server accepted the message for delivery.
4xxTemporary FailureThe server could not process the message right now but may accept it later. These generate soft bounces.
5xxPermanent FailureThe server will never accept this message. These generate hard bounces.
Modern mail servers also return Enhanced Status Codes (defined in RFC 3463) in the format x.y.z, such as 5.1.1. These provide more granular detail about the failure and are explained in a later section.

Success Codes

These codes indicate the message was accepted by the receiving server.
CodeMeaning
250Message accepted for delivery. This is the standard success response.
251User not local; the server is forwarding the message to another destination.
A 250 response means the receiving server accepted the message — it does not guarantee inbox placement. The server may still filter the message to spam or reject it at a later stage.

Temporary Failure Codes — Soft Bounces

Soft bounces are transient failures. Lettr automatically retries delivery for soft bounces according to its retry schedule. If retries are exhausted without success, the bounce may be reclassified as a hard bounce.
CodeEnhanced CodeMeaningRecommended Action
4214.7.0Server temporarily unavailable or rate limitingAuto-retry. Lettr handles this automatically.
4504.2.1Mailbox temporarily unavailableAuto-retry. The mailbox may be locked or temporarily offline.
4514.3.0Server configuration issue on the receiving endAuto-retry. Usually resolves on its own.
4524.2.2Mailbox full or over quotaAuto-retry. If the mailbox remains full across multiple attempts, this may be promoted to a hard bounce.
4544.7.0TLS negotiation failed; TLS not availableRetry without TLS if your sending policy allows opportunistic encryption.
Lettr retries soft bounces automatically with exponential backoff. You do not need to resend these messages manually. Monitor the Activity Log in your dashboard to track retry progress.

Permanent Failure Codes — Hard Bounces

Hard bounces are definitive rejections. The receiving server will not accept this message regardless of how many times it is sent. Lettr automatically adds hard-bounced addresses to your suppression list to protect your sender reputation.
CodeEnhanced CodeMeaningRecommended Action
5505.1.1User unknown — mailbox does not existRemove the address from your list.
5505.1.2Bad destination domain — domain does not exist or has no MX recordsRemove the address from your list.
5505.2.1Mailbox disabled or deactivatedRemove the address from your list.
5505.7.1Message rejected by policy (spam filter, blocklist, or authentication failure)Check your content, authentication records (SPF/DKIM/DMARC), and sender reputation.
5515.1.6User not local and server will not forwardRemove the address from your list.
5525.2.3Message exceeds size limitsReduce the message size (compress images, remove large attachments).
5535.1.3Invalid mailbox name syntaxFix the email address format (check for typos or illegal characters).
5545.7.1Transaction failed — general rejectionInvestigate the full bounce message for details. May indicate blocklisting or content issues.
Continuing to send to hard-bounced addresses damages your sender reputation and can lead to your IP or domain being blocklisted. Lettr suppresses these addresses automatically — do not remove them from your suppression list unless you have confirmed the address is valid again.

Enhanced Status Code Structure

Enhanced Status Codes follow the format x.y.z where each component has a specific meaning:
  • x — Class (matches the first digit of the basic SMTP code)
    • 2 = Success
    • 4 = Temporary failure
    • 5 = Permanent failure
  • y — Subject category (what part of the system the issue relates to)
  • z — Detail (specific condition within that category)

Subject Categories

Subject (y)CategoryDescription
0Other / UndefinedStatus does not fit other categories.
1AddressingProblems with the recipient or sender address.
2MailboxIssues with the destination mailbox (full, disabled, not found).
3Mail SystemProblems with the destination mail system.
4NetworkNetwork-level issues (DNS, routing, connection).
5ProtocolProtocol-related failures during the SMTP transaction.
6ContentThe message content triggered a rejection (encoding, media type).
7SecuritySecurity or policy violations (authentication, encryption, blocklisting).
For example, 5.1.1 means: permanent failure (5) related to addressing (.1.) with detail code 1 (mailbox does not exist).

Provider-Specific Codes

Major mailbox providers often return custom error messages alongside standard SMTP codes. Below are common patterns you may encounter.
Error Message PatternMeaningWhat to Do
550 5.1.1 The email account that you tried to reach does not existThe Gmail address is invalid or has been deleted.Remove the address from your list.
421 4.7.28 ... rate limitedGmail is throttling your sending due to volume or reputation.Reduce sending speed. Lettr retries automatically.
550 5.7.1 Our system has detected that this message is likely unsolicited mailGmail’s spam filters flagged your message.Review your content, authentication, and list hygiene.
550 5.7.26 Unauthenticated email ... is not accepted due to domain's DMARC policyYour message fails DMARC alignment.Ensure SPF and DKIM are properly configured and aligned with your From domain.
Error Message PatternMeaningWhat to Do
550 5.1.1 User unknownThe Outlook/Hotmail address does not exist.Remove the address from your list.
550 5.7.1 Service unavailable, client host [x.x.x.x] blockedYour sending IP is on a Microsoft blocklist.Check your IP against the Outlook SNDS portal and request delisting if needed.
451 4.7.500 Server busy. Please try again laterMicrosoft is rate limiting connections.Lettr retries automatically.
550 5.5.0 Requested action not taken: mailbox unavailableMailbox is disabled or deleted.Remove the address from your list.
Error Message PatternMeaningWhat to Do
553 5.1.3 Invalid addressThe Yahoo/AOL address is malformed or does not exist.Remove the address or fix formatting.
421 4.7.0 [TS01] ... temporarily deferredYahoo is throttling your messages due to sending patterns or reputation.Reduce volume. Lettr retries automatically.
554 5.7.9 Message not accepted for policy reasonsYour message was rejected due to Yahoo’s content or authentication policies.Review DKIM/SPF configuration and message content.
421 4.7.1 [TS03] ... too many connectionsToo many simultaneous connections from your IP.Lettr manages connection pooling automatically.

How Lettr Categorizes Bounces

Lettr maps raw SMTP response codes to standardized bounce categories that appear in your dashboard and in email.bounced webhook payloads. This makes it easier to take action without interpreting SMTP codes directly.
Lettr CategorySMTP Codes / ConditionsDescription
invalid_address550 5.1.1, 553 5.1.3The recipient address does not exist or is malformed.
domain_not_found550 5.1.2The recipient domain does not exist or has no MX records.
mailbox_full452 4.2.2, 552 5.2.2The recipient mailbox is over its storage quota.
blocked550 5.7.1 (IP/domain block), 554 5.7.1The receiving server blocked delivery due to reputation or blocklisting.
spam_related550 5.7.1 (content rejection)The message was flagged as spam by the receiving server.
policy_related550 5.7.1 (authentication), 551 5.1.6Rejected due to authentication failure, DMARC policy, or other sending policies.
server_error451 4.3.0, 421 4.7.0A temporary server-side issue on the receiving end.
protocol_error454 4.7.0, 552 5.2.3A protocol-level failure such as TLS negotiation or message size limits.
unknownAny unrecognized or ambiguous responseThe bounce could not be classified into a specific category.
You can filter bounces by category in the Activity section of your dashboard, or use the category field in email.bounced webhook events to automate list management in your application.