Return-Path: where bounces actually go and why it matters
The Return-Path header tells receivers where to send bounce notifications. Get it wrong and you go blind to delivery failures. Here is the SPF, DMARC, and bounce-loop interaction.
Return-PathBouncesSPFBounce Handling
From: is what your recipient sees. Return-Path: is where the bounce goes. Most senders never think about the second one until they realize they have been mailing 30,000 dead addresses for six months because nobody was processing the bounce mailbox.
Return-Path vs From
| Header | Visible to recipient? | Used for |
|---|---|---|
| From: | Yes | Display, reply-to (unless overridden) |
| Return-Path / MAIL FROM | No (in envelope) | Bounces, SPF check, DMARC SPF alignment |
| Reply-To: | Yes (when user replies) | Reply routing |
Why use a subdomain for Return-Path
If your From: is [email protected], set Return-Path to [email protected] or similar. This lets you publish a focused SPF record for the bounce subdomain, isolates bounce traffic from corporate mail, and keeps your main domain's reputation clean if your ESP rotates IPs.
DNS record
| Host | Type | Value | TTL |
|---|---|---|---|
| em.example.com | TXT | v=spf1 include:_spf.your-esp.com -all | 3600 |
DMARC alignment with Return-Path
Bounce-handling automation
- Configure your bounce mailbox to forward to a webhook or processing script, not a human inbox.
- Parse the DSN (Delivery Status Notification) to extract status code and original recipient.
- 5.x.x codes = hard bounce. Suppress immediately.
- 4.x.x codes = soft bounce. Increment retry counter; suppress after threshold.
- Log everything — bounce trends are an early warning of reputation problems.
Sample DSN excerpttext
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 The email account that you tried to reach does not exist.
Final-Recipient: rfc822; [email protected]Frequently asked questions
Keep reading