bouncehandler app

bouncehandler

Repeated sending to wrong / inactive recipients is considered “spammer behavior”.
In recent years, more and more smtp servers have been blacklisted for this reason.


The most noticeable error occurs when the Mail-From/Return-Path address mailbox,
the one receiving the bounced messages, is full or non-existent.
By sending thousands of messages, if 20% come back, it’s easy to fill even a large inbox in minutes.

Receiving all bounced messages without reading them could be considered a minor flaw.
You keep sending emails to addresses that bounce back, with error details that no one cares about.

In both cases, the result is that the smtp server is blacklisted. In this way,
not only will messages not be delivered to invalid recipients, but valid recipients will also receive them as SPAM.


To solve the first problem, we have been offering “newsletter mailboxes” for a long time.
Analyzing bounced messages is more difficult and requires a tool that works very well.

sisimai bounce handler overview

We chose “Sisimai: Mail Analyzing Interface”, formerly known as bounceHammer 4: an error mail analyzer.
An open source software, that parses RFC5322 bounce mails and generates structured data as JSON.

To get an idea of all the possible error codes that Sisimai parses, take a look at “The SMTP Field Manual”,
a collection of raw SMTP error code responses from major email service providers.


The automatic blocklist

Implementing the bounce handler within RealSender is simple.

  1. activate the “newsletter mailbox
  2. configure your sending application to use the new Return-Path address
  3. ask to verify the setup and activate the “bounce handler”

The “bouncehandler” app will start checking the bounced messages.
Two blocklists will be activated:

  1. the hard bounces blocklist
    contains all the email addresses that generated a permanent error,
    such as user unknown or host unreachable

    the weekly hard bounces log is available at the web address:
    https://…hardbounces.email.weekly

  2. the soft bounces blocklist
    contains all the email addresses that generated three or more transient errors,
    such as mailbox full, at least one week away from each other

    the weekly soft bounces log is available at the web address:
    https://…softbounces.email.weekly

Sending messages to a blocklisted recipient will generate an error like this:

Send message error


Manage your blocks independently

We provide you with the following files,
as web addresses, protected by password or IP address:

https://…bounces.json
the details of ALL bounces received in the last seven days, in JSON format, such as:

  {
    "feedbacktype": "",
    "addresser": "info@circuitocinemascuole.com",
    "diagnostictype": "SMTP",
    "timezoneoffset": "+0200",
    "lhost": "linp.arubabusiness.it",
    "destination": "gmail.com",
    "timestamp": 1635536166,
    "senderdomain": "circuitocinemascuole.com",
    "deliverystatus": "5.1.1",
    "token": "daad8f8fc89cef70e1406a9d2b38be6c35326e03",
    "recipient": "...@gmail.com",
    "subject": "Prenotazioni aperte_Giornata Internazionale dei Diritti dell'Infanzia e dell'Adolescenza_Film FIGLI DEL SOLE",
    "origin": "/home/rs109-bounce/Maildir/new/1635528969.21113_0.rsbox.realsender.com",
    "rhost": "gmail-smtp-in.l.google.com",
    "reason": "userunknown",
    "diagnosticcode": "550-5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces. Learn more at https://support.google.com/mail/?p=NoSuchUser z3si7494964ybg.507 - gsmtp 503 5.5.1 RCPT first. z3si7494964ybg.507 - gsmtp",
    "messageid": "McuPi4DjtlyhvlSMVNB4wTXsUKQeIy6XwlKoAZuJ4@www.circuitocinemascuole.com",
    "listid": "",
    "action": "failed",
    "softbounce": 0,
    "replycode": "550",
    "catch": null,
    "alias": "",
    "smtpagent": "Sendmail",
    "smtpcommand": "DATA"
  },

https://…hardbounces.json
the details of all hard bounces 1 received in the last seven days, in JSON format

https://…hardbounces.email
the list of email addresses that generated a hard bounce 1 in the last seven days

1 = selection criteria: softbounce == 0


https://…softbounces.json
the details of all soft bounces 2 received in the last seven days, in JSON format

https://…softbounces.email
the list of email addresses that generated a soft bounce 2 in the last seven days

2 = selection criteria: softbounce == 1


These are the same files used by the automatic blocklist:

https://…hardbouncesfull.email
the list of email addresses that ever generated a hard bounce

https://…softbouncesfull.email
the list of email addresses that generated three or more soft bounces
at least one week away from each other