View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0013672||phpList 3 application||Batch Processing||public||11-03-08 18:48||21-06-18 14:05|
|Priority||normal||Severity||feature||Reproducibility||have not tried|
|Target Version||next major|
|Summary||0013672: how often to retry sending to an address that fails, and give up|
|Description||Upon 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 Information||This generated 3459 events in the log before finally finishing the processing phase.|
|Tags||No tags attached.|
|related to||0012866||resolved||michiel||Strict format checking of email and other fields prevents numerous imports, possible for mysql injection attacks|
|has duplicate||0010174||resolved||michiel||Processqueue gets stuck in infinite loop with concatenated email addresses|
|has duplicate||0011976||resolved||michiel||detect process queue looping and cut if off|
|related to||0006782||resolved||michiel||Importing Invalid E-mails|
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.
I have noticed this a few times, but the last few months it hasn't happened.