View Issue Details

IDProjectCategoryView StatusLast Update
0013672phpList 3 applicationBatch Processingpublic21-06-18 13:05
Reporterjmlane 
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status newResolutionopen 
Product Version2.10.5 
Target Versionnext majorFixed in Version 
Summary0013672: how often to retry sending to an address that fails, and give up
DescriptionUpon processing a message for the email "s’oneill@..." within the membership list, PHPlist spent the following 2 days processing the same message, continually reporting the following error: "Error sending message 1234 to s’oneill@... (s’oneill@...)".
Additional InformationThis generated 3459 events in the log before finally finishing the processing phase.
TagsNo tags attached.

Relationships

related to 0012866 resolvedmichiel Strict format checking of email and other fields prevents numerous imports, possible for mysql injection attacks 
has duplicate 0010174 resolvedmichiel Processqueue gets stuck in infinite loop with concatenated email addresses 
has duplicate 0011976 resolvedmichiel detect process queue looping and cut if off 
related to 0006782 resolvedmichiel Importing Invalid E-mails 

Activities

michiel

23-05-12 02:46

manager   ~0051591

the issue basically is, how long are we going to try to send to a particular email address, and give up.

the tricky bit is that the failure can be manyfold.

In this case, the ' in the email address is actually valid PROVIDED it's the right ' . Thanks to lovely Microsoft and cut-n-paste, the ' may look ' but be a completely different character.

So, ' is valid and ’ is not (if you get the difference).

Then, on top of that, the underlying sending MTA may reject the address anyway, even if it's valid.

But, the failure could be caused by other reasons. (a) The MTA is, temporarily down, (b) the DNS is down, (c) the email is throttled for some reason. The last one is an interesting one. If you have 70% hotmail subscribers and domain throttling in place it's quite possible a lot of hotmail addresses fail quite often, until they are finally sent. Each address however, may "fail" 100s of times before being sent.


Concluding, what could be done:

1. add some config (to be defaulted to something sensible, but tweakable per system) for a failure count per email address.
2. keep track per email address how often any attempt to send to it fails.
3. mark it unconfirmed, when this count has been reached.

Alternatively, considering these issues seem to only happen with very few email addresses (and with phpList Hosted, I now manage some 1000+ installations, and it's not happening very often, but I've noticed it happening),

1. have a config for a number that is used as cut-off (call it MIN_QUEUE)
2. have another config for a count (call it MIN_QUEUE_COUNT).
3. bail out when trying to process less than MIN_QUEUE messages for MIN_QUEUE_COUNT times, and mark any remaining addresses as "unconfirmed" (ie invalid).

Basically the last one is "if I try to send less than 5 messages for 50 times, and fail, stop trying".


Any preference anyone?

Personally I'm not sure. I'd go for either option.

michiel

05-06-13 03:39

manager   ~0052098


I have noticed this a few times, but the last few months it hasn't happened.