The Four Root Causes of Business Email Bounces
Almost every business email bounce falls into one of four categories. Identifying which one is hitting you is the first move; the recovery path is different for each.
- DNS / authentication. A missing or malformed SPF, DKIM, or DMARC record causes the receiving server to reject or quarantine your mail at SMTP time. This is the most common cause of "the mail was sent but never arrived" complaints — the bounce is silent or hidden in a soft reject.
- Content / format. HTML-only messages, broken MIME, blocked URLs (550 5.7.606 from Microsoft), and missing unsubscribe headers for bulk senders all trigger policy-based rejects. These bounces look like reputation problems but are actually content-policy violations.
- IP reputation. If your sending IP is on an external blocklist or has a low SNDS / SenderScore reading, the receiving server can reject mail outright (5xx) or accept and silently Junk it. Reputation bounces often show up as a wave after a quiet period of problem-free delivery.
- List quality. Old, recycled, or scraped addresses produce bounces as mailboxes close. Once a recipient address is invalid, every future send to it bounces; a sustained bounce rate above 5% is enough to damage your sending reputation even on a previously clean IP.
Step 1 — Read the Bounce Code and Identify Hard vs Soft
Every bounce comes back with an SMTP response code. The first digit tells you the category; the second digit refines it; the third is the specific cause.
- 4xx (soft bounce). Transient — the recipient server is busy, the mailbox is full, or greylisting is in effect. Retry with exponential backoff. Most ESPs retry automatically for up to 72 hours before giving up.
- 5xx (hard bounce). Permanent — the mailbox doesn't exist, the sending IP is denied, or a content policy was triggered. Do not retry. Suppress the recipient and address the underlying cause.
For a complete reference on common 4xx and 5xx codes — including the Microsoft-specific 550 5.7.606 blocked-URL bounce and 421 4.7.28 rate-limit — see SMTP Bounce Codes Explained →. The single most important triage move is to collect the bounce codes from your last 100 failed sends and bucket them: you'll almost always find one dominant pattern that points to the cause.
Step 2 — DNS / Authentication Fix Path
If your bounce codes include authentication-related rejects (550 5.7.1, 530 5.7.0, or DMARC alignment failures), the fix is in your DNS, not your sending app. Three things to check:
- SPF: The record must end with
~all(softfail) or-all(hardfail). Only one of the two, not both. Most ESPs publish specific include mechanisms (e.g.include:sendgrid.net) and terminate with one of the two. Run the free SPF/DKIM/DMARC check → and confirm the record resolves and the sending IPs are covered. - DKIM: The record must exist at the selector your ESP publishes (commonly
s1._domainkey.yourdomain.comorgoogle._domainkey.yourdomain.com). Missing or stale DKIM is the most common cause of bounces that look like authentication but aren't an SPF problem. - DMARC alignment: The DMARC record at
_dmarc.yourdomain.commust be at leastp=nonewith aruaaddress. The two alignment modes (SPF and DKIM) must both align with the From: header domain. For the full breakdown of how alignment breaks and how to fix each mode, see How to Fix DMARC Failing → and SPF, DKIM, and DMARC Explained →.
DNS fixes propagate within minutes for low TTLs and up to 48 hours for high TTLs. After changing any record, force a refresh from a public DNS lookup (e.g. dig TXT yourdomain.com) and re-send to a test mailbox to confirm.
Step 3 — Content / Format Triggers
If authentication looks clean and bounces persist, the cause is most likely content-policy. The common offenders:
- HTML-only messages. Modern receiving servers expect a text/plain alternative alongside HTML. Sending HTML without a text part raises the spam score and can trigger a 5xx reject at Microsoft and Yahoo.
- Broken MIME. A multipart message with a malformed boundary, missing closing boundary, or invalid headers causes some receiving servers to reject at SMTP time and others to Junk the message silently. Test your templates with a multipart validator before deploying.
- Blocked URLs (550 5.7.606). Microsoft rejects mail containing URLs on its Safe Links block list. The most common trigger is a URL shortener (bit.ly, tinyurl) or a domain flagged for hosting malware. Replace shortened links with full URLs pointing to your own domain, and audit any third-party link in the body.
- Missing unsubscribe header. Since February 2024, Gmail and Yahoo require a working
List-Unsubscribeheader on bulk mail. Missing it produces bounces for any recipient on Gmail or Yahoo business mail. For the full checklist, see Gmail Bulk Sender Requirements →.
Step 4 — IP Reputation Fallout
If authentication is clean and content is clean but bounces still appear, your sending IP reputation is the next thing to check. Two diagnostic paths run in parallel: external blocklists and the recipient-side reputation programs.
For external blocklists — Spamhaus, Cisco Talos, Barracuda, SenderScore, SORBS, and others — run the diagnostic at Am I Blacklisted? → and follow the per-list delisting steps. Each blocklist has its own removal process; most clear within 24–72 hours after the underlying issue (compromised account, clean list, etc.) is resolved.
For Outlook.com specifically, enroll in SNDS to see your per-IP filter result (green / yellow / red) and complaint rate. The full enrollment walkthrough is in Microsoft SNDS, JMRP, and Outlook Sender Reputation →. A yellow or red filter result on SNDS will produce bounce waves against Outlook.com recipients before showing up in any other diagnostic.
The Recovery Checklist (Run in Under an Hour)
When a business email bounce wave hits, run this checklist in order. Each step takes under five minutes and is a precondition for the next.
- Collect bounce codes from your last 100 failed sends. Bucket them by code and identify the dominant pattern. A single dominant pattern points to the cause; multiple codes usually mean multiple problems stacked.
- Run the free SPF/DKIM/DMARC validator on the sending domain. Confirm SPF, DKIM, and DMARC all resolve and align. This single check catches roughly half of business bounce cases within 30 seconds.
- Check external blocklists for your sending IP. Run the diagnostic and address any delistable list. Spamhaus, Barracuda, and SenderScore are the most common triggers for hard 5xx rejects.
- Enroll in SNDS for Outlook.com data. If your recipients include any Outlook.com or Exchange Online addresses, the SNDS filter result tells you whether the IP is in yellow or red.
- Audit the most recent message templates for content-policy triggers. Strip URL shorteners, add a text/plain alternative to every HTML message, and confirm the
List-Unsubscribeheader is present. - Suppress hard-bounced recipients. Anything that returned a 5xx goes on a permanent suppression list. Most ESPs handle this automatically; confirm the suppression list is being honored on the next send.
- Prune non-engaged recipients. Anyone who hasn't opened in 90+ days is at high risk of bouncing — closed mailboxes are a leading cause of soft bounces that age into hard bounces. Cleaning the list to engaged recipients cuts bounce rates by half within a week.
- Re-pace volume on a warm-up curve. If the bounce wave came with an IP reputation drop, resume at 50% of pre-drop volume for two weeks and scale only after the SNDS filter result returns to green. The day-by-day ramp is detailed in Email Warm-Up Schedule →.
- Re-test with a known-good mailbox. Send to a Gmail, an Outlook.com, and a corporate mailbox. All three should land in the Inbox within five minutes. If any lands in Junk, that's the next problem to chase.
The list above covers roughly 90% of business email bounce waves. The remaining 10% are usually caused by recipient-side rules (the recipient has a personal Junk rule that diverts your mail regardless of content), graylisting on a corporate Exchange server, or a misconfigured third-party sender behind your domain (an old ESP that you no longer use but still has DNS records). Each of these is rare and usually surfaces only after the bulk-cause fixes above don't move the needle.
Run the auth check that catches half of business bounces
The free SPF/DKIM/DMARC validator catches authentication-related bounces in 30 seconds — and tells you which Outlook-specific failure each finding produces.
Run the free auth check →Plus keep bounce waves from sneaking up on you → with ReputaPilot — automatic SNDS / blocklist monitoring, alert on a bounce spike, and the recovery checklist above on a single dashboard.