Bounce processing

Use this forum for all questions related to bounce management of OpenEMM

Moderator: moderator

Bounce processing

Postby bosco » Mon May 02, 2016 10:09 am

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.
bosco
 
Posts: 3
Joined: Mon May 02, 2016 9:36 am

Re: Bounce processing

Postby maschoff » Wed May 04, 2016 9:30 pm

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.
OpenEMM Maintainer
maschoff
Site Admin
 
Posts: 2130
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany

Re: Bounce processing

Postby bosco » Thu May 05, 2016 1:54 pm

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
bosco
 
Posts: 3
Joined: Mon May 02, 2016 9:36 am

Re: Bounce processing

Postby maschoff » Thu May 05, 2016 4:58 pm

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.
OpenEMM Maintainer
maschoff
Site Admin
 
Posts: 2130
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany

Re: Bounce processing

Postby bosco » Fri May 06, 2016 8:18 am

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
bosco
 
Posts: 3
Joined: Mon May 02, 2016 9:36 am

Re: Bounce processing

Postby ud » Mon May 09, 2016 7:55 am

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
ud
 
Posts: 141
Joined: Thu Aug 17, 2006 9:56 am
Location: Munich, Germany


Return to Bounce Management

Who is online

Users browsing this forum: No registered users and 1 guest

cron