soft/hard bounce and update.py question

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

Moderator: moderator

jalmasi
Posts: 4
Joined: Mon Sep 19, 2011 9:37 am

soft/hard bounce and update.py question

Post by jalmasi »

Hi,

in update.py, UpdateBounce,
__todetail():
elif code in (500, 511, 550, 554):
detail = 500
then later in updateLine:
if detail in (510, 511, 512) or bouncetype in (3, 4, 6):
...update customer binding.

This prevents 'no mailbox' style reply messages being processed as hard bounces, even if they are properly configured in [hard] section of bav.rule, and recognized by bavd.py.

Why not just do what bav.rule specifies?

I do understand that 500, 511, 550, 554 may occur in many situations that are not really permanent errors.
However, I think it's better to have this responsibility in bav.rule than hardcoded.
gecon27
Posts: 2
Joined: Wed Oct 24, 2012 1:38 pm

Re: soft/hard bounce and update.py question

Post by gecon27 »

Dear OpenEMM development team,

I am brining this issue again in the foreground as I haven't seen any feedback from your side.
I read in other posts about the conservative mechanism that OpenEMM uses in determinng when to bounce an address.
Could you please give more details on the exact mechanism used?
Is it according to the guidelines below, presented also graphically in the diagram included at the end of the 2nd link below, or what?
[1] http://www.clickz.com/clickz/column/213 ... simplified
I.e. try the address three times over at least 15 days; if your messages are refused every time, treat the address as dead.
[2] http://wiki.memberlandingpages.com/Syst ... Management

Could you please also comment on Jalmasi's message? Is it true that certain bounces are never treated as hard while they should?

In my case for e.g., some unknown recipients return delayed messages of type 500:
2.0.0;0;24;0;27775;stat=Sent (ok: Message 25390331 accepted) relay=[10.42.32.26] [10.42.32.26]
2.0.0;0;24;0;27774;stat=Sent (ok: Message 25390332 accepted) relay=[10.42.32.26] [10.42.32.26]
5.0.0;0;24;0;27774;mailloop=Action: failed
5.0.0;0;24;0;27775;mailloop=Action: failed

At the moment these are treated by OpenEMM as soft bounces of type "irregular bounce", while according to the logic in update.py, i.e. "if detail in (510, 511, 512) or bouncetype in (3, 4, 6)", these bounces will never be treated as hard, right?
FYI, I do have added the following 2 lines under the [hard] section of bav.rule:
Unknown address error
DNS Hard Error looking up

and it seems that they are correctly fired and recognized by OpenEMM:
[19.10.2012 21:38:36] 2891 VERBOSE/startup: Got path: /scan_and_unsubscribe
[19.10.2012 21:38:36] 2891 VERBOSE/match: Found pattern "DNS Hard Error looking up" in body "5.1.2 - Bad destination host 'DNS Hard Error looking up jskdjskdjahjsd.com (MX): NXDomain'"
[19.10.2012 21:38:36] 2891 VERBOSE/dsn: Found DSN in Action: failed / Status: 5.0.0 (permanent failure)
[19.10.2012 21:38:36] 2891 INFO/uid: UID 20121019213759-0.1.o.lfi.0.bcxfu43seu valid
[19.10.2012 21:38:36] 2891 INFO/scanid: Found new uid in header: <20121019213759-0.1.o.lfi.0.bcxfu43seu@openemm.invalid>
[19.10.2012 21:38:37] 2891 VERBOSE/startup: Got path: /scan_and_unsubscribe
[19.10.2012 21:38:37] 2891 VERBOSE/match: Found pattern "Unknown address error" in body "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 for typos or\n5.1.1 unnecessary spaces. Learn more at\n5.1.1 http://support.google.com/mail/bin/answ ... nswer=6596 m5si39818359wic.14""
[19.10.2012 21:38:37] 2891 VERBOSE/dsn: Found DSN in Action: failed / Status: 5.0.0 (permanent failure)
[19.10.2012 21:38:37] 2891 INFO/uid: UID 20121019213759-0.1.o.lfj.0.7o2dp0r5ae valid
[19.10.2012 21:38:37] 2891 INFO/scanid: Found new uid in header: <20121019213759-0.1.o.lfj.0.7o2dp0r5ae@openemm.invalid>


Thank you,
Ioannis
ud
Posts: 154
Joined: Thu Aug 17, 2006 9:56 am
Location: Munich, Germany
Contact:

Re: soft/hard bounce and update.py question

Post by ud »

The rules in bav.rule are used to categorize what the remote system think is a hard bounce. To avoid disabling recipient addresses that are just reported as hard bounce due to misconfiguration we handle these bounce, where we not quite sure as soft bounces. If these are real hard bounces, they will generate a soft bounce on each mailing and will be converted to a hard bounce by the regular running softbounce.py program. So in the end real hard bounce will be converted to hard bounce in OpenEMM.

For sure it would be possible to extend the logic to directly mark an email address as hard bounce for a user configured pattern. I'll put this on the feature wish list for further OpenEMM versions. But this will be only work for user defined pattern, not for the already existing system pattern. This may have influence of the syntax of the bav.rule file, but the final solution will be defined, if/when this feature is realized.

-- ud
maschoff
Site Admin
Posts: 2597
Joined: Thu Aug 03, 2006 10:20 am
Location: Munich, Germany
Contact:

Re: soft/hard bounce and update.py question

Post by maschoff »

I added a discussion of this issue to version 1.1 of the OpenEMM 2012 install guide as a new section 12.4.
OpenEMM Maintainer
gecon27
Posts: 2
Joined: Wed Oct 24, 2012 1:38 pm

Re: soft/hard bounce and update.py question

Post by gecon27 »

Dear ud & maschoff,

Thank you both for your feedback.
I will check the OpenEMM 2012 install guide.

The problem in my case was that the SMTP error replies from our Exchange were not processed properly by OpenEMM, because lines as below were interpreted as soft bounces:
[1] 5.1.2 - Bad destination host 'DNS Hard Error looking up asjdskjfdhjk.com (MX): NXDomain'
Reason: According to the logic in bavd.py, this pattern could never match any of the DSNRE regular expressions. Therefore this was considered by default a 5.0.0 soft bounce, which is wrong (correct is 5.1.2).
or
[2] 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 for typos or\n5.1.1 unnecessary spaces. Learn more at\n5.1.1 http://support.google.com/mail/bin/answ ... nswer=6596 x20si1330805weo.15"
Reason: According to the logic in bavd.py, this pattern did match the DSNRE because of the "550", and was therefore considered a 5.0.0 soft bounce, which is again wrong (correct is 5.1.1).

To overcome these problems, I tuned a bit bavd.py by adding a DSNRE[3] and checking against it (see attached file; search for "Oikonomou").
I always keep the last instance (i.e. scan.dsn = NDRlist[-1]) as I think that the inner message will be more indicative of the error.

Thank you,
Ioannis

[Update 1] I don't know how to attach a file here therefore I am sending it to you via private message. Thanks.
[Update 2] Well, it seems I cannot upload it in a private message either. Please send me an email to gecon27@gmail.com and I will send it back to you in order afterwards to upload it here. Thanks.
Post Reply