View Issue Details

IDProjectCategoryView StatusLast Update
0017361phpList 3 applicationBounce Managementpublic15-10-14 16:09
Reporterdeajan Assigned To 
PrioritynormalSeveritymajorReproducibilityhave not tried
Status resolvedResolutionfixed 
Product Version3.0.6 
Target Version3.0.9Fixed in Version3.0.9 
Summary0017361: Bounce management unconfirmed the wrong user

I've setup the following threshold in config.php
$bounce_unsubscribe_threshold = 5;

I've processed manually a bounce for user id 26849, and increased the bounce counter by 5 for a total of 6 bounces.

I've later sent a campaign, and processed bounces.
I got the following:

L'utilisateur (url:./?page=user&id=39995) a (5) rebonds consécutif, supérieur au seuil de (5), il a donc été marqué en tant que non confirmé

which basically says user 39995 has more than 5 bounces and has been unconfirmed.

I have checked user 39995 on page admin?page=user&id=39995 and he has been unconfirmed, altough it's bounce count says he has 2 bounces.

User 26849 is still confirmed and has a bounce count of 6 bounces.
USer 26849 is the only user in my list with more than 4 bounces.

I cannot guess why phplist switched two users.

Any clues please?
I have a backup of my database before processing the bounces if needed.

Btw, i read the statement that says i have to make the test with the latest phplist version, but i could not update to 3.0.7 because of the processqueue with php-cli problem.

TagsNo tags attached.



07-09-14 09:51

administrator   ~0054902

hmm, yes that is odd. AS it involves private data, it would be good if you can debug it. If you are willing to share the data, you can contact to discuss how to pass it on.


07-09-14 10:57

reporter   ~0054903

Last edited: 07-09-14 11:13

View 3 revisions


I have done some debugging, and think i found the problem.

Let's begin, i found why phplist did unconfirm user 39995. Here are the implied records in the bounce table:

id:7913, comment:39995 bouncecount increased
id:7914, comment:duplicate bounce for 39995
id:7927, comment:duplicate bounce for 39995

When i open one of the blobs in the data column here's what i get:
Hi. This is the qmail-send program at mail2.xxxx.xx.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

mail is looping

The loop explains why i got 14 times the same bounce mail.

Now the problem becomes: phplist knows how to identify duplicate bounce mails, doesn't count them in page=user, but nevertheless unconfirms a user if he got duplicated bounces.

Reading processbounces.php line 604, i see the following:

  $msg_req = Sql_Query(sprintf('select * from
    %s um left join %s umb on (um.messageid = umb.message and userid = user)
    where userid = %d and um.status = "sent"
    order by entered desc',

When looking at table user_message_bounce, bounce ids 7913-7927 exist but don't have any "deduplication" info.
Maybe another left join to bounce table like
'LEFT JOINT bounce on ( = AND bounce.comment NOT LIKE duplicate%' would fix the issue.

As for user 26849 that didn't get unconfirmed yet, i have looked into postqueue and his message is still in the queue, so there isn't any bounce message for him yet. I'll recheck once soft bounce time is passed.


I am willing to share my database if needed, maybe i could just run these commands so it becomes easy to share without privacy problems:

UPDATE phplist_user_user SET email = RAND(), uniqid = MD5(RAND()) WHERE id <> 39995 AND id <> 26849;
DELETE FROM phplist_eventlog WHERE id <> {id of the line that stats the bouncecount};
TRUNCATE admin, adminattribute, config, user_blacklist, user_blacklist_data user_message_forward;


15-10-14 16:09

administrator   ~0055425

great, thanks.