Page 1 of 1

Bounce processing

Posted: Mon May 02, 2016 10:09 am
by bosco
Hello,
I successfully installed OpenEMM 2015 R2. We did not follow the manual in detail.
SendMail relay all the emails to SMTP server (Cisco IronPort). Because of that all bounce messages are treated as asynchronous.

I read all the posts about bounce management. The explanation about the processing of bounces was very helpful.
However, one thing still confuses me.

- update.py reads and processes extbounce.log and writes result to bounce_tbl.
- Softbounces in bounce_tbl are processed by softbounce.sh and written to softbounce_email-tbl. Softbounce rules are in script softbounce.py, beginning at about line 200.

What about hardbounces. Should they be written in any table (bounce_tbl or bounce_collect_tbl)?
I found that customer is flagged as bounced in customer_1_binding_tbl, also bounce status is visible in GUI (recipient properties and mailing statistics).

Thanking you in advance.

Re: Bounce processing

Posted: Wed May 04, 2016 9:30 pm
by maschoff
update.py reads and processes data from extbounce.log and writes results to table bounce_tbl. bounce_tbl contains all soft and hard bounces without any filtering. Hard bounces are registered in the binding table as well. Soft bounces are processed daily and entered into another table for further processing (400 = other softbounce, 420 = problems with mailbox, 430 = problems with mailserver, 500 = irregular bounce, 510 = other hardbounce, 511 = unknown address, 512 = unknown domain).

You might want to read the appendix of the OpenEMM Extension Development Guide to understand the various tables and their usage.

Re: Bounce processing

Posted: Thu May 05, 2016 1:54 pm
by bosco
Thank you for your reply.
For some reason hard bounces are recorded in the binding table but not in the bounce_tbl.

We are still testing the OpenEMM application. I had to update bav.rule so that OpenEMM recognize some bounce messages.
For example I sent test email to non-existent gmail account and get this message:
The following message to <testaccount@gmail.com> was undeliverable.
The reason for the problem: 5.1.0 - Unknown address error 550 - "5.1.1 The email account that you tried to reach does not exist. Please try\n5.1.1 double-checking the recipient's
email address....

OpenEMM did'not recognize this email as a bounce. After I updated Hardbounces section of the bav.rule with this condition "5.1.0 - Unknown address error 550" the message is processed as a bounce (customer_1_binding_tbl, mailing statistics in OpenEMM GUI) but didn't recorded in the bounce_tbl.

What else should I check? Do I have to make some adjustments in update.py?

Kind Regards

Re: Bounce processing

Posted: Thu May 05, 2016 4:58 pm
by maschoff
AFAIK, bounce_tbl is cleaned from all entries older than 90 days. update.py is very conservative regarding hard bounces. Some bounces of code 5xx are only considered as soft bounces. This is based on our real-life experience that some ISPs like to generate 5xx bounces just to get rid of the mail sender.

Re: Bounce processing

Posted: Fri May 06, 2016 8:18 am
by bosco
Thanks

So, even if I make a condition in the bav.rule to filter bounces as hard, it doesn't mean that the update.py will have the same verdict.
The bav.rule is used just by bavd to filter bounces to extbounce.log.

Am I right

Re: Bounce processing

Posted: Mon May 09, 2016 7:55 am
by ud
This case is handled special. As bavd.py is unable to find the DSN for the bounce, but has a rule to mark this as a hardbounce, this is considered as an internal recognized hard bounce and is not written to bounce_tbl. You can edit update.py to write an entry to bounce table by changing line 342:

Code: Select all

elif detail != UpdateDetail.Internal:
to

Code: Select all

else:
-- ud