← Back to Blog

Why Are Your Emails Bouncing? 10 Common Reasons

August 23, 2026

Bounces are not random. Each one has a specific cause, most of those causes are preventable, and the error text does tell you which is which once you know how to read it. Here are the ten reasons emails bounce, ordered roughly by how often they are responsible.

Every bounce falls into one of two categories, and the difference decides what you do next.

Hard bounceSoft bounce
MeaningPermanent failureTemporary failure
Typical causeThe address does not existMailbox full, server busy
Error code5xx4xx
Will retrying help?NoSometimes
Effect on reputationSignificantMinor, unless repeated
What to doRemove immediatelyRetry, then remove after several failures

Hard bounces are the ones that cost you. Mailbox providers treat repeated delivery attempts to addresses that do not exist as evidence of a poorly maintained list, and that judgement affects delivery to your good contacts too.

This is the largest single cause on almost every list. The mailbox was closed, the person left the company, or the address was mistyped at signup and never worked at all.

Addresses like sarah@gmial.com or john@yaho.com are entered by hand every day. The local part is correct and the domain is one keystroke wrong.

A real, working address whose owner has stopped clearing it. Common with abandoned personal accounts and with staff addresses left running after someone leaves.

How to tell: a 4xx code with wording such as “mailbox full” or “over quota”.

Fix: it is a soft bounce, so retry. If it stays full across several campaigns, treat it as abandoned and remove it. Nobody is reading it.

Companies close and domains lapse. Every address on that domain dies at once, which is why old B2B lists degrade faster than consumer ones.

How to tell: the error refers to the domain or to DNS, with wording such as “domain not found” or “no mail servers”.

Fix: remove every address on that domain, not just the one that bounced. The rest will fail identically on your next send.

The address is fine. The server simply refused mail from you, because of your sending reputation, a blocklist entry, or a filtering rule at that organisation.

How to tell: the bounce mentions blocking, blacklisting, policy or reputation, and the same message often fails across many recipients at once.

Fix: this is a reputation problem, not a list problem. Check your sending domain and IP against the public blocklists, confirm your authentication passes, and reduce the volume you are sending to unengaged contacts.

SPF, DKIM and DMARC let a receiving server confirm your mail genuinely comes from your domain. When those records are absent, or when a DNS change quietly breaks one, some providers reject the message outright.

How to tell: the bounce mentions SPF, DKIM, DMARC or authentication. Failures cluster at the strictest providers first.

Fix: add or repair the DNS records your email platform documents, then send yourself a test message and check the headers to confirm all three pass.

Every server enforces a maximum message size, and heavy embedded images or attachments can exceed it.

How to tell: wording such as “message too large” or “size limit exceeded”, failing only at some recipients whose servers have tighter limits.

Fix: compress images, and link to files rather than attaching them. Marketing email should rarely carry attachments anyway, since they trigger filters.

Some organisations reject executable attachments outright, or block messages containing links to domains their filters distrust, including URL shorteners.

How to tell: the bounce refers to content, a virus scan or an attachment type, and it affects one message rather than one recipient.

Fix: link to your own domain instead of using shorteners, drop the attachment, and make the visible link text match its destination.

Greylisting is a common anti-spam technique: the server refuses an unfamiliar sender on first contact and accepts on a later retry, on the assumption that spam software will not bother trying again.

How to tell: a 4xx code with wording such as “try again later” or “temporarily deferred”, which resolves by itself.

Fix: usually nothing. Your platform retries automatically. Only investigate if deferrals persist across days rather than hours.

10. Role accounts and inactive addresses

Shared addresses such as info@ or sales@ are often filtered aggressively or retired without notice, and long-dormant mailboxes are sometimes converted into spam traps by the provider.

How to tell: harder to spot from the bounce alone. The signal is the pattern: bounces concentrated among role addresses or contacts who have not engaged in a very long time.

Fix: segment role accounts separately, and set a point at which contacts who have not engaged for a long period stop receiving campaigns.

Bounce notifications look impenetrable, but the useful part is the three-digit code near the start. The first digit tells you almost everything.

CodeTypeUsual meaning
4xxSoftTemporary. Retry may succeed.
421SoftService unavailable or throttling
450 / 451SoftMailbox unavailable, greylisting
5xxHardPermanent. Do not retry.
550HardMailbox does not exist, or you were blocked
551 / 553HardRecipient not local, or address rejected
552HardMessage too large, or quota exceeded

Note that 550 covers two very different situations: a mailbox that does not exist, and a mailbox that exists but refused you. The wording after the code separates them, so read the whole line rather than the number alone.

  1. Set a soft bounce threshold. After a few consecutive failures, treat the address as gone.
  2. Fix authentication once and re-check it after any DNS change.
  3. Sunset unengaged contacts on a schedule rather than keeping everyone forever.

The first two prevent the majority of hard bounces, because the majority of hard bounces are simply addresses that never worked or stopped working.

If a campaign has already gone out and the bounces are climbing, the instinct is to send a correction or to try the failed addresses again. Both make it worse. Work through this instead.

  1. Pause anything scheduled. Sending again into a reputation that is already under pressure compounds the damage rather than recovering from it.
  2. Split the bounces by code. The 4xx and 5xx groups need completely different responses, and treating them the same is the most common mistake at this point.
  3. Remove every hard bounce. Not suppress, remove. Confirm your platform has actually done it rather than assuming.
  4. Check whether the failures cluster. Bounces concentrated on one domain point at a blocklist or a filtering rule. Bounces spread evenly point at list quality.
  5. Verify the whole list, not only the addresses that failed. The same problem is sitting in the addresses that have not been sent to yet.
  6. Resume slowly, starting with your most engaged contacts. Volume to people who reliably open is how reputation rebuilds.

The uncomfortable part is step six. There is no way to shorten it, and no service can restore a damaged reputation on your behalf. What you can control is how quickly you stop the cause, which is why steps one and three matter more than they look.

The receiving server refused to accept the message and returned it. The refusal is either permanent, because the address does not exist, or temporary, because something was in the way at that moment.

Yes, and the damage extends beyond the bounced messages. A high hard bounce rate signals a poorly maintained list, which affects how your mail to everyone else is treated.

No. A hard bounce is permanent, so retrying produces another bounce and another negative signal. Remove it. If you believe it was a mistake, confirm the correct address with the person directly.

Much less than hard bounces, and an occasional one is normal. Repeated soft bounces to the same address across many campaigns start to look like an abandoned mailbox, so set a removal threshold.

Instant bounces usually mean the failure was decided without any delivery attempt: the domain does not exist, has no mail servers, or your sender was rejected outright. Delayed bounces more often follow retries.

Most suppress hard bounces automatically, but suppression is not the same as removal. The contact usually still sits in your list and may still be billed for. Check what your platform actually does with them.

Open your last campaign report and split the bounces by code. If most are 5xx, you have a list problem and verification will fix a large part of it. If most are 4xx, you have a timing or reputation problem instead, and the list is not the place to look.

That one split tells you which half of this article applies to you, and it takes about five minutes. PureListVerifier handles the list side, in bulk for what you already hold and through an API for addresses arriving from your forms.