A “bounce” is when an email cannot be delivered and an error message is returned back to signal the problem. The returned message is technically called a DSN (Delivery Status Notification). For more technical details about “bounces”, you can read this Wikipedia page.

What's inside

The how and why in simple words

The first important thing to know is this: the error is not returned when we attempt to send the message, is usually returned minutes or days later with an email to the sender (the cited DSN message).

That behavior requires a system able to intercept the error messages, analyze them and decide what to do with the collected information: ignoring it because the error is not severe (see later)? mark the destination email address as “unreachable”? simply collecting them in a log file?

There are many reasons that lead to a bounce condition. Some examples:

  • the mailbox does not exist anymore
  • the mailbox is full
  • the destination mailbox service is temporary unreachable

As it can easily be seen, some errors are permanent (for example the nonexistent mailbox), others are temporary. That means different reactions should be considered upon the arrival of an error message.

Technically the bounces are at least classified into two categories: hard bounces (the error is not recoverable) and soft bounces (the error should be temporary it is worth retrying later).

Bounce management

We saw that bounces are actually regular email messages returned to the sender. How can they be managed? How can they be intercepted, parsed, and transformed into something we can use?

This is where delivery services come in. Every delivery service provides a way to get the bounces already parsed and analyzed, usually even categorized at least in hard and soft.

For example, the Newsletter plugin integrates with many delivery services (via specialized add-ons): Amazon SES, Sendgrid, Mailgun, Mailjet, ElasticEmail, and so on.

Each integration does not only allow to send emails with those services but get back from them all the email addresses that are “bounced” and change the subscribers’ status accordingly.

Without a delivery service

Those who do not use a delivery service should set up the Newsletter plugin to try to get back the error message setting the “Return-Path” on the main settings: that address is where the error messages are sent.

Some providers override the return path and in rare situations setting the return path blocks the email delivery. Test it!

If the error messages can be collected in a dedicated mailbox, the Bounce addon can help in parsing them and mark the unreachable subscribers as “bounced”.

The Bounce addon is not as sophisticated as the delivery services in extracting information from error messages but it can do discretely well.

Finally, one can read each error message with an email client and find out the bad address and set it as bounced (or delete it) by hand. It’s of course tedious work and unthinkable with big mailing lists.