Updated: 28 September 2026 · Applies to: Email sent from your own server

When a message cannot be delivered, the receiving server sends a bounce message back. When a recipient marks your message as spam, some providers send a complaint report. A healthy sending setup reads both automatically and stops mailing the affected addresses. Ucartz's Acceptable Use Policy expects bounce processing for bulk mail, and Gmail and Yahoo watch bounce and complaint rates.

Hard bounce, soft bounce, complaint

  • Hard bounce (5.x.x, permanent): the address does not exist, or the domain does not exist. Example: 550 5.1.1 User unknown. Stop sending to it at once.
  • Soft bounce (4.x.x, temporary): the mailbox is full, or the server is busy. Postfix retries by itself. If an address soft-bounces on several campaigns in a row, treat it as dead.
  • Complaint: the recipient pressed "report spam". Remove that address at once and do not send again.

The first digit of the status code is the key: 2 = success, 4 = temporary problem, 5 = permanent problem. RFC 3463 defines the detailed status codes.

1. Use a real bounce address

Set the envelope sender (Return-Path) to a mailbox that you read, on your own domain, for example bounce@news.example.com. Bounces go there. Many mailing tools also add a code to the address of each message (VERP, for example bounce+jane=example.org@news.example.com) so that you know who bounced even when the bounce text is unclear. Choose a scheme that your tool supports.

2. Process the bounces automatically

  • Newsletter software such as listmonk can read a bounce mailbox and classify bounces (Settings › Bounces, with a POP3 mailbox behind the Return-Path address) and can also receive bounce events through an API.
  • Your own application: read the bounce mailbox, find the status code in the message, and add hard bounces to your suppression list.
  • Quick check from the Postfix log: sudo journalctl -t postfix/smtp --since "1 day ago" | grep "status=bounced" lists the addresses that were refused with a permanent error while Postfix tried to deliver. Add these to the suppression list as well.

Rules for a simple policy: hard bounce means suppress immediately; three soft bounces in a row means suppress; no opens or clicks for a long time (for example 6 to 12 months) means stop mailing, or send a re-confirmation first.

3. Sign up for complaint feedback

  • Yahoo runs a complaint feedback loop (CFL) for senders that sign their mail with DKIM; you register your DKIM domain in the Yahoo Sender Hub.
  • Microsoft offers its Smart Network Data Services and a junk mail reporting programme for senders; see the Microsoft sender support site.
  • Google does not send reports about single messages. It shows your spam rate in Postmaster Tools (How to test authentication and deliverability of your outgoing email?). Keep it below 0.3%, as Google asks, and far below if you can.

Put the complaint reports into the same suppression list as the unsubscribes (How to add a working unsubscribe link and one-click unsubscribe headers to your emails?).

4. Watch the numbers

Where lists go wrong

  • Old lists: addresses that stopped working are recycled by providers and can become traps.
  • Typos at sign-up. Use a confirmation email (double opt-in) so that only real, reachable addresses join.
  • Imports of lists that never asked for your mail. This produces bounces, complaints and blocklist entries (What to do when your IP address is on a blocklist or your mail is rejected?).

Frequently asked questions

Does Postfix handle bounces?
Postfix creates and delivers the bounce messages. Processing them (reading and acting on them) is done by your mailing software or scripts.

Can I set the sender for bounces per domain?
Yes. Use one bounce address per sending domain; it also fits the sender-dependent setup in How to give each domain or customer its own sending IP address in Postfix?.

Sources: RFC 3463 and Yahoo's sender best practices.

Need a dedicated server, more IP addresses, or a hand with the setup?

Prefer a hand with the setup? Our engineers can do it for you: Hire an Expert, or use our on-demand server management.

Was this answer helpful? 0 Users Found This Useful (0 Votes)