MailScanner/Postfix message duplication - possible fix

Drew Marshall drew at THEMARSHALLS.CO.UK
Tue Dec 16 20:12:52 GMT 2003

Thanks very much. I have applied that and I'll let you know how I get on.


Kash, Howard (Civ,ARL/CISD) wrote:

>Here is a solution Julian proposed to the postfix/still being
>delivered/duplicate message problem back in September.  Based on my
>analysis of the Postfix code and logs from actual occurrences of the
>bug, I think this is along the right track.  However, postfix postdates
>messages that it moves into the deferred queue by 1000 seconds
>(minimal_backoff_time default value).  My version of this patch is:
>    next if ($ModDate{$file} + 10) > (time + 1000);
>or more efficiently:
>    next if $ModDate{$file} > (time + 990);
>This accounts for the 1000 second postdate period and adds 10 seconds to
>get around the apparent race condition.  In every occurrence that I've
>seen of the bug, MailScanner starts it's scan just as a message is being
>processed (moved into the deferred queue) by postfix.  I think there is
>a brief instance when postfix does not have a lock on the file and
>MailScanner picks it up (and locks it).  Then postfix tries to lock the
>file.  Seeing that it is already locked, it generates the "skipped,
>still being delivered" message and backs off for 60 seconds (see
>nqmgr/qmgr_active.c:qmgr_active_feed()) and then re-queues the message
>You will need to adjust the 1000 second value if you have changed the
>default postfix setting for minimal_backoff_time.  You may also want to
>play around with the 10 second delay if it's too long or short.  Since
>the bug is very difficult to reproduce and occurs so infrequently, it's
>hard to say yet if this is actually working.  If others could try it out
>and let the list know if it seems to be working for them, maybe Julian
>can add it to the next release.  The only side affect of adding this
>line will be a 10 second delay in mail delivery.
>-----Original Message-----
>From: Julian Field [mailto:mailscanner at ECS.SOTON.AC.UK]
>Sent: Thursday, September 04, 2003 6:45 AM
>Subject: Re: MailScanner+PostFix ---- try this
>Here's a patch to I know it's not exactly a neat solution to
>the problem, but if it fixes it I will know I have found the problem.
>---      2003-09-01 12:28:21.000000000 +0100
>+++  2003-09-04 11:49:17.000000000 +0100
>@@ -1132,6 +1132,9 @@
>        #print STDERR "Files are " . join(', ', @SortedFiles) . "\n";
>        while(defined($file = shift @SortedFiles) &&
>              $HitLimit1+$HitLimit2+$HitLimit3+$HitLimit4<1) {
>+        # Yes I know this is a hack but it will help isolate the
>+        next if $ModDate{$file} > time-3;
>          # must separate next two lines or $1 gets re-tainted by being
>part of
>          # same expression as $file [mumble mumble grrr mumble mumble]
>          #print STDERR "Reading file $file from list\n";

More information about the MailScanner mailing list