magicdude4eva / port25-bouncehandler

Port25 PowerMTA bounce handler for Interspire and MailWizz
MIT License
73 stars 42 forks source link

Mailwizz - 1.4.8 Hard Bounce Mark As Unsubscribed #17

Closed masharif46 closed 6 years ago

masharif46 commented 6 years ago

@magicdude4eva Mailwizz - 1.4.8 Hard Bounce Mark As Unsubscribed ,Previous version Mailwizz - 1.4.3 Hard Bounce Mark As Blacklisted ,

Thanks

magicdude4eva commented 6 years ago

Codebase has not changed. I am also not yet running 1.4.8, so can not verify. If the bounce-classification has changed in MailWizz, it is probably related to how MailWizz handles it. Tagging @twisted1919 to perhaps confirm if behaviour changed.

If you have configured soft-bounce categories it will show as a soft-bounce (see here: https://github.com/magicdude4eva/port25-bouncehandler/blob/master/bouncehandler.php#L246) otherwise it will default to hard-bounce.

List-unsubscribe was always soft: https://github.com/magicdude4eva/port25-bouncehandler/blob/master/providers/bounce-provider-mailwizz.php#L180

Soft-bounce categories are configured here: https://github.com/magicdude4eva/port25-bouncehandler/blob/master/setup.php#L48

masharif46 commented 6 years ago

@magicdude4eva Bro Thanks for reply , I think you are passing so much busy Time , I am already talk with @twisted1919 , He said this not MailWizz issues, it's is Port25 bouncehandler Issues.

Thanks

magicdude4eva commented 6 years ago

Honestly, it is really easy to look at the log-file - https://github.com/magicdude4eva/port25-bouncehandler/blob/master/providers/bounce-provider-mailwizz.php#L129 and then see what is sent through. Please verify and provide better issue description so that it can be replicated.

masharif46 commented 6 years ago

@magicdude4eva let me check .

masharif46 commented 6 years ago

@magicdude4eva PMTA log

2017-11-01 18:34:10 Unable to parse serial number: number missing 2017-11-01 18:34:14 Unable to parse serial number: number missing

magicdude4eva commented 6 years ago

Really not helpful information you posted. I will not be able to look at this for at least another month as we have no intention upgrading from 1.4.3 at this point in time.

If my scripts pass the wrong bounce-type, feel free to adjust code (there are only 3 places) and submit patch after testing.

masharif46 commented 6 years ago

@magicdude4eva Bro , I am not clear understand which code adjust . Can give any Idea .

Thanks

masharif46 commented 6 years ago

@magicdude4eva @twisted1919


Total Email sent 2,949 Total Bounce 209 unsubscribe 4 --------------213-----

Internal Bounce = 46 Soft Bounce = 74 Hard Bounce = 89 --------------------209------- Unsubscribed = 103 Blacklisted = 49

Campaign Running--------

Thanks

twisted1919 commented 6 years ago

Hi guys, @masharif46 @magicdude4eva

My understanding is that the bounce categorisation is done by this script and then you send the info at mailwizz using mailwizz api at the bounce/create endpoint and mailwizz just shoves it into the database. Isn't this right ?

If that's how it works i don't think is mailwizz who changes the bounce categorisation, since mailwizz receives the information as is.

Lemme know how i can help with this.

Thanks.

magicdude4eva commented 6 years ago

@twisted1919 this is correct. I specifically set the "bounce-type" to either "hard" or "soft".

1) In case of a "List-Unsubscribe" (via the email-header), the bounce is marked as "soft": https://github.com/magicdude4eva/port25-bouncehandler/blob/master/providers/bounce-provider-mailwizz.php#L180

2) In case of a FBL abuse report, the bounce is marked as "soft"

3) The users of my script can specify which Port25 bounces are classified as MailWizz "soft" bounces. If the Port25 bounce-type does not match the below for a "soft" bounce, it will default to a "hard" bounce.

$softbounceCategories = array("bad-configuration", "bad-connection", "content-related", "invalid-sender", "other", "policy-related", "quota-issues", "spam-related", "virus-related");

Lastly (and some MailWizz users disagree with this approach): My script will unsubscribe a user from ALL lists if a bounce happens. So there might be a scenario where a FBL was received for a 3 month old campaign which would then flag that specific campaign with a "soft" bounce and it would then unsubscribe the email from ALL lists.

I can't really verify/test this as we are still on 1.4.3, but even under 1.4.3 some people complained about this handling (I honestly don't care as for me a bounce should result in a complete unsub).

twisted1919 commented 6 years ago

@magicdude4eva - Thanks for the update, this pretty much confirms my initial thoughts.

magicdude4eva commented 6 years ago

@twisted1919 unfortunately in most cases I really do not get good feedback when it comes to issues reported. Some people running completely outdated Port25 installations (years old) and in many cases do not even updated bounce-category configurations in Port25.

So it could very well be that the soft-bounce-categories which are current with the most recent Port25 4.5v might not even be available in previous versions. I will probably only look at upgrading to Mailwizz mid December (we are running heavy campaigns now and I am timewise stretched as it is) and will then have a look if I see the same behaviour on my environment.

twisted1919 commented 6 years ago

@magicdude4eva - no worries, i know how it is. When you have news, ping me ;)

masharif46 commented 6 years ago

@magicdude4eva @twisted1919 Thanks both. We are waiting for solution .

TrivoXx commented 6 years ago

Yes it is realy so, that by bounce processing the emails marked as "Unsubscribed" not as blacklisted.

masharif46 commented 6 years ago

Hello ! Bro @magicdude4eva @twisted1919 Any update about Hard Bounce Mark As Unsubscribed !

magicdude4eva commented 6 years ago

Nope, not going to look at this until we have upgraded - which will on happen in February. Feel free to debug/fork and provide a PR.

twisted1919 commented 6 years ago

@masharif46 - you might as well donate to this project and help the author a bit since i see you're making use of the code a lot ;) This is how you help things work.

masharif46 commented 6 years ago

Thanks both @magicdude4eva @twisted1919

magicdude4eva commented 6 years ago

Hi @twisted1919, I have upgraded to MailWizz 1.5.7 over the weekend from 1.4.3 - fantastic work on your part, everything just continues to work.

I just revisited the various Github issues against my project and what my bouncehandler does (code here: https://github.com/magicdude4eva/port25-bouncehandler/blob/master/providers/bounce-provider-mailwizz.php#L108) is the following: 1) Any bounced email will be unsubscribed from all MailWizz lists via your ListSubscribers->unsubscribe endpoint (https://github.com/twisted1919/mailwizz-php-sdk/blob/master/MailWizzApi/Endpoint/ListSubscribers.php#L112). This is expected behaviour on my part and documented. In our case we feel that a single bounced email should be unsubscribed from all lists against the API. Some users of my contribution do not like this, but then they should fork this project and adjust/remove the code.

2) All campaigns for the subscriber to be unsubscribed will be marked via the MailWizz campaign-bounce endpoint->create. This is also expected behaviour.

Example:

--- In this case the subscriber bounced and was removed from 1 list and one campaign:
[26/Jun/2018 06:30:11] Bounce: policy-related from=campaign.bounce@[REDACTED]via vmta-bobe-promo-za02/subscriber@example.com jobId=mailwizz-bs224mf5v20f4, dsnStatus=5.0.0 (undefined status)
[26/Jun/2018 06:30:11]    MailWizz: unsubscribe for subscriber@example.com:
[26/Jun/2018 06:30:11]    - success: za#m#Deal of the Week
[26/Jun/2018 06:30:11]    - Bounce-update for campaign=bs224mf5v20f4, subscriberUID=cw536fozw2cfa, bouncetype=soft, bouncereason=5.0.0 (undefined status) successful=success
....

--- In this case the subscriber was removed from multiple lists and campaigns updated:
[26/Jun/2018 06:30:16] Bounce: policy-related from=campaign.bounce@[REDACTED]via vmta-bobe-promo-za02/subscriber2@example.com jobId=mailwizz-bs224mf5v20f4, dsnStatus=5.0.0 (undefined status)
[26/Jun/2018 06:30:16]    MailWizz: unsubscribe for subscriber2@example.com:
[26/Jun/2018 06:30:16]    - success: za#m#Deal of the Week
[26/Jun/2018 06:30:16]    - Bounce-update for campaign=bs224mf5v20f4, subscriberUID=ho240zpbfb87e, bouncetype=soft, bouncereason=5.0.0 (undefined status) successful=success
[26/Jun/2018 06:30:16]    - success: za - Specials and Promotions
[26/Jun/2018 06:30:16]    - Bounce-update for campaign=bs224mf5v20f4, subscriberUID=rv843dvtv14d2, bouncetype=soft, bouncereason=5.0.0 (undefined status) successful=success
[26/Jun/2018 06:30:16]    - success: za#m#Crazy Wednesday (R1 auctions)
[26/Jun/2018 06:30:16]    - Bounce-update for campaign=bs224mf5v20f4, subscriberUID=yy961nrhjn108, bouncetype=soft, bouncereason=5.0.0 (undefined status) successful=success
[26/Jun/2018 06:30:16]    - success: za - Books, Movies, Music & Art
[26/Jun/2018 06:30:16]    - Bounce-update for campaign=bs224mf5v20f4, subscriberUID=sn076oc3d2fc1, bouncetype=soft, bouncereason=5.0.0 (undefined status) successful=success

I believe the above is correct behaviour, but might not be desired for users of MailWizz wanting to not remove bounced emails from other lists. I tend to rather unsubscribe users when a failure occurs. We send out 2-3m emails per day and have a perfect senderscore, and very few abuse reports across a 1,6m subscriber base we get 2-3 abuse emails.

To users with issues on those policies: Those are not errors and I am not going to change the implementation because you feel that a bounced email should not be unsubscribed from all lists. You are more than welcome to fork this repo and remove code as you see fit.