Blog

Illustration of email messages and status codes representing soft and hard bounces.

Email Bounce Codes Explained: Hard Bounces, Soft Bounces, and SMTP Errors

If you send newsletters, community updates, or transactional emails, you will eventually run into bounces. Messages come back with cryptic codes like 550 5.1.1 or 421 4.7.0, and it is not always obvious what they mean—or what you should do about them.

This guide walks through what email bounces are, the difference between hard bounces and soft bounces, how providers like Amazon SES classify them, and a practical list of common SMTP bounce codes you are likely to see in real-world sending. Whether you are operating your own bulk email platform or using a service like Formtabulous GroupPost, understanding bounces is key to healthy deliverability.

What Is an Email Bounce?

An email bounce is a response from a receiving mail server that says: “I could not deliver this message.” It is generated during the SMTP conversation and includes:

  • A status code such as 550, 451, or 421.
  • An extended code like 5.1.1 or 4.7.0 describing the category of error.
  • A human-readable diagnostic message explaining why delivery failed.

Bounces can be returned by mailbox providers (Gmail, Outlook, Yahoo, iCloud), corporate servers, or security gateways (Barracuda, Mimecast, Proofpoint). They all follow the same basic pattern: a 4.x.x code for temporary issues and a 5.x.x code for permanent issues.

Hard Bounces vs Soft Bounces

Most email systems, including Amazon SES, divide bounces into two major buckets: hard bounces and soft bounces.

Hard Bounces (Permanent Failures)

A hard bounce indicates a permanent failure. The recipient or domain cannot accept mail, and retrying will not fix it. Hard bounces are almost always represented by 5.x.x SMTP status codes.

Common causes include:

  • The email address does not exist (user unknown).
  • The recipient mailbox is disabled or removed.
  • The recipient domain does not exist or is misconfigured.
  • The receiving system has permanently blocked your messages by policy.

From a list hygiene perspective, hard-bouncing addresses should be treated as invalid and suppressed immediately. Continuing to send to them can hurt your domain and IP reputation.

Soft Bounces (Temporary Failures)

A soft bounce indicates a temporary failure. Delivery did not work this time, but the address may be valid and could succeed later. Soft bounces are represented by 4.x.x SMTP status codes.

Common reasons for soft bounces include:

  • Mailbox full or over quota.
  • Temporary server or network issues.
  • Greylisting or temporary spam checks.
  • Rate limiting and throttling based on reputation and volume.
  • Message size limits or attachment checks that can be retried with adjustments.

Soft bounces do not always point to a problem with your sending reputation. They often reflect recipient-side conditions that resolve on their own.

How Amazon SES Classifies Bounces

When you use Amazon Simple Email Service (SES), bounces are normalized into a structured event that can be delivered via Amazon SNS, Kinesis, or Lambda. SES includes both the raw SMTP codes from the receiving server and its own bounce classification.

SES uses three primary bounce types:

  • Permanent – equivalent to a hard bounce.
  • Transient – equivalent to a soft bounce.
  • Undetermined – SES cannot clearly classify the result.

And a small, finite set of bounce subtypes, such as:

  • General
  • NoEmail
  • Suppressed / OnAccountSuppressionList
  • MailboxFull
  • MessageTooLarge
  • ContentRejected
  • AttachmentRejected

SES forwards the real SMTP status (4.x.x or 5.x.x) and the full diagnostic text from the remote MTA. This combination of standard codes, provider-specific messages, and SES types/subtypes gives you everything you need to build robust bounce handling.

Common Hard Bounce Codes (5.x.x – Permanent)

Providers can return hundreds of different error messages, but a handful of patterns show up in almost every sending environment. Below are some of the most common hard bounce codes you will see.

Recipient Does Not Exist

550 5.1.1 – User unknown / mailbox not found
550 5.1.0 – Address rejected
551 5.1.6 – Invalid recipient
550 5.1.10 – Recipient address rejected: Domain not found

These errors usually mean the address is mistyped, abandoned, or never existed. Mark these as hard bounces and stop sending to them.

Mailbox Disabled or Inactive

550 5.2.1 – Mailbox disabled
550 5.2.0 – Mailbox inactive

These codes indicate the mailbox is no longer in use. Treat them as permanent failures.

Policy Blocks and Permanent Rejections

554 5.7.1 – Message rejected due to policy
550 5.7.1 – Permission denied / content rejected
553 5.7.1 – Relaying denied
550 5.7.708 – Access denied, banned sender (Microsoft 365)

These messages mean the receiving system has decided not to accept your mail for this recipient or from this sending identity. Sometimes the problem is content; other times it is reputation-related.

Authentication and Alignment Errors (SPF, DKIM, DMARC)

550 5.7.26 – Unauthenticated email from this domain is not accepted (DMARC)
550 5.7.23 – SPF validation failed
550 5.7.0  – Message blocked due to security policy

These usually mean your SPF, DKIM, or DMARC configuration needs attention. The address itself might be valid, but the message fails policy checks and is treated as a hard bounce by most platforms.

Common Soft Bounce Codes (4.x.x – Temporary)

Soft bounces reflect temporary issues—either on the recipient’s side or in how your mail is being throttled. Here are some of the most frequent soft bounce codes.

Mailbox Full or Temporarily Unavailable

452 4.2.2 – Mailbox full
450 4.2.0 – Mailbox temporarily unavailable
452 4.3.1 – Insufficient system storage

These codes usually indicate that the mailbox is valid, but cannot accept more messages right now. Retrying at a later time is appropriate.

Rate Limiting and Reputation Throttling

421 4.7.0  – Temporary server error / try again later
421 4.7.28 – Messages temporarily deferred due to user complaints or unusual volume (Gmail)
451 4.7.1  – Temporary local problem / deferred
450 4.7.1  – Greylisted, please try again later

These are often tied to sending reputation and volume. The provider is not rejecting the recipient as invalid; it is slowing you down. Backing off volume, improving engagement, and fixing list quality will help reduce these over time.

Temporary Server or Network Issues

451 4.3.0   – Temporary server failure
451 4.4.5   – Too many connections
451 4.4.316 – Connection timed out

These codes typically mean the receiving server is overloaded or having network issues. Your sending system should automatically retry delivery.

Message Size and Content Checks

552 4.3.1 – Message too large
451 4.7.650 – Message temporarily rejected for content scanning

These can sometimes be resolved simply by reducing attachments, compressing images, or sending a leaner version of your email.

Other Real-World Bounce Messages

Not every provider uses perfectly standardized wording. You may see messages like:

  • 554 Transaction failed: content rejected
  • 550 permanent failure for one or more recipients
  • 421 service not available – try again later

These are still based on the same 4.x.x vs 5.x.x distinction; your platform should interpret them using both the status code and the text description.

How Many Soft Bounces Before You Suppress an Address?

A common operational question is: “After how many soft bounces should this address be considered invalid?”

There is no single global rule, but a widely used pattern is:

  • Hard bounces: suppress the address immediately.
  • Soft bounces: track consecutive soft bounces per recipient.

Many platforms suppress an address after 3–5 consecutive soft bounces. This allows temporary issues (like mailbox full or a short-lived server problem) to clear while still protecting your reputation if the address repeatedly refuses mail.

Why Bounce Handling Matters for Deliverability

Proper bounce handling is one of the strongest signals you can send to mailbox providers that you respect recipients’ inboxes:

  • You stop sending to addresses that are proven invalid.
  • You avoid hammering servers that are temporarily overloaded or throttling you.
  • You can distinguish between reputation-related throttling and simple mailbox issues.
  • You maintain a cleaner list, which boosts opens, clicks, and overall engagement.

Tools like Formtabulous GroupPost are built with this in mind: hard bounces, soft bounces, complaints, and suppressions are automatically tracked so you can focus on writing messages instead of parsing SMTP logs.

Want bounce handling and deliverability taken care of for you?

GroupPost by Formtabulous is designed for teams, nonprofits, and communities that send real emails to real people—not scraped lists. It handles bounces, complaints, and list hygiene so you can keep your reputation strong and your members informed.

The more you understand email bounce codes, the easier it becomes to diagnose delivery issues, protect your domain, and reach the people who actually want to hear from you.