Bounces and suppression
What happens when delivery fails permanently, and how the relay protects pool reputation.
Bounce DSN
When a message exceeds retry attempts or the recipient returns a 5xx, the relay marks it bounced and sends an RFC 3464 Delivery Status Notification (DSN) to the original sender.
The DSN is a multipart MIME message with three parts:
text/plain: human-readable explanation of the failure.message/delivery-status: machine-readable fields includingOriginal-Recipient,Final-Recipient,Action(failed),Status(e.g.5.1.1), andDiagnostic-Codewith the recipient MX's response.message/rfc822-headers: the headers of the original message, includingMessage-IDso you can correlate the bounce to your send.
Parse the message/delivery-status part programmatically. The Diagnostic-Code field carries the verbatim 5xx response from the recipient — the most useful field for debugging.
Where DSNs go
DSNs are addressed to the original envelope sender. For relay-submitted mail, that's a VERP-encoded address at atmos.email, which the relay receives at its inbound listener and forwards to your domain's forward-to mailbox if one is set. If forward-to is empty, the DSN is logged but not delivered. See Reply forwarding to set up forward-to.
The suppression list
The relay maintains a per-DID suppression list. When a recipient one-click-unsubscribes via the List-Unsubscribe header, their address is added to your suppression list. Future sends to that address from your DID return 550 5.7.1 suppressed recipient.
- Suppressions are per-DID, not relay-wide. A recipient who unsubscribed from one member is not blocked for others.
- Suppressions persist for the life of your member record. There is no expiration.
- Transactional mail (with
"category": "transactional"on the HTTP API) skips List-Unsubscribe and so cannot create suppressions.
Hard bounces
The relay does not maintain a global hard-bounce suppression list. If a recipient address returns 5xx permanently, you'll see that in your bounce stream and should remove the address from your sending list yourself.
The safety net is the bounce-rate auto-suspension below. It catches members who keep sending to bad addresses by suspending the whole account before the pool's reputation suffers.
Bounce-rate auto-suspension
The relay tracks each member's bounce rate over a 24-hour window. If your bounce rate exceeds 10% with at least 20 sends in the window, your account is auto-suspended.
This protects the shared IP's reputation. A high bounce rate signals one of:
- You're sending to an outdated list with many dead addresses.
- You're being mistaken for a spam source by recipient mail servers.
- Your DNS authentication is broken (see DNS records).
To reactivate after auto-suspension, sign into /account and contact the operator. Address the underlying cause first; reactivation without fixing the bounce source will trigger another suspension.
Complaints (ARF feedback)
When a recipient marks one of your messages as spam, their mail provider may send the relay an Abuse Reporting Format (ARF) report. The relay records each complaint as a feedback event attributed to your DID via the X-Atmos-Member-DID header it added at submission.
Complaints feed the trust-and-safety rules engine and may lead to suspension if the rate is high. Unlike bounces, complaint reports don't directly block future sends to the complaining recipient; treat the bounce stream and your suppression list as separate feedback channels.