Bounce: a Drupal Module for Managing Email Non-Delivery Reports

June 16th, 2012 Permalink

I've been working on Bounce, a Drupal module for email non-delivery report management, as time allowed over the past few months. I'm pleased to note that Bounce is now released and available for use at drupal.org:

The Bounce module collects non-delivery reports generated by remote mail servers in response to emails sent from your Drupal site. It parses these non-delivery reports for response codes, scores those codes, and blocks further emails from being sent to email addresses that have passed a score threshold. This helps prevent your site from looking like a spam source by being a good internet citizen and respecting non-delivery responses, such as a notice that a recipient email account no longer exists.

This module is a rewrite of non-Drupal code that itself resulted from some years of experience running a few-thousand-subscriber mailing list covering the sane end of a topic that, unfortunately, tends to trigger spam filters - because there is a large and obnoxious spam-generating industry over at the other, less sane end of the pool. The default settings in Bounce are geared towards helping to maintain good long-term deliverability of mail under that sort of circumstance.

Bounce employs a modular design in which the functionality necessary to analyze and respond to non-delivery reports is split between Connector, Analyst, and Blocker components. Default, working versions of these components are provided, and developers can easily add other implementations through hooks defined in this module.

If you want emails sent from your web site to reliably end up in recipient in-boxes rather than junk mail folders, then you have to pay attention to non-delivery reports. Keep sending mail to an account when the receiving mail server has told you to stop, and you'll eventually get your servers blacklisted. It so happens that Drupal has lacked good all-in-one tools for managing non-delivery reports generated by the mail sent out by the platform - which is a curious omission, given the large number of modules focused on sending lots of mail, whether in the form of mailing lists or notifications. Thus Drupal seemed like a good choice of platform when it came to tidying up and releasing some non-delivery report management code I'd written for my own use over the years.

Hopefully it proves as useful to some of the folk out there as it has for me. Certainly far too many people cast outgoing mail into the void with little thought given to deliverability - better tools can only help.