Scan Messages and CustomFunction

Alvaro Marín alvaro at hostalia.com
Tue Nov 10 09:47:06 UTC 2015


Hi,

I've been running MailScanner with this patch for several days and it's
running fine.
It reads the value of "scanmail" from the variable of $newmessage, and
it doesn't call to the function again to calculate it.

Regards,

El 30/09/15 a las 21:52, Jerry Benton escribió:
> anyone have any feedback on this? I haven't had time to take a look at it,
> 
> -
> Jerry Benton
> www.mailborder.com
> Sent from my iPhone
> 
>> On Sep 24, 2015, at 04:42, Alvaro Marín <alvaro at hostalia.com> wrote:
>>
>> Hi again,
>>
>> debugging the code, I've found those 2 calls to "Scan Messages" function:
>>
>> [+] Message.pm, new (constructor, called by Postfix.pm's CreateBatch
>> function):
>>
>>  # Decide if we want to scan this message at all
>>  $this->{scanmail} = MailScanner::Config::Value('scanmail', $this);
>>  if ($this->{scanmail} =~ /[12]/) {
>>    $this->{scanmail} = 1;
>>  } else {
>>    # Make sure it is set to something, and not left as undef.
>>    $this->{scanmail} = 0;
>>  }
>>  if ($this->{scanmail} !~ /1/) {
>>    $this->{scanvirusonly} = 1;
>>  } else {
>>    $this->{scanvirusonly} = 0;
>>  }
>>
>> [+] Postfix.pm, in CreateBatch function:
>>
>>        if (MailScanner::Config::Value("scanmail", $newmessage) =~ /[12]/ ||
>>            MailScanner::Config::Value("virusscan", $newmessage) =~ /1/ ||
>>            MailScanner::Config::Value("dangerscan", $newmessage) =~ /1/) {
>>          $newmessage->NeedsScanning(1);
>>
>>
>> So in that Postfix.pm's code, insted of read the value of $newmessage's
>> variable "scanmail", that was created in Message.pm code that I've
>> pasted before, it calls again to MailScanner::Config::Value function
>> that searchs again for that value (if is a ruleset it will look for the
>> rule in the rules file or if it's a function, like in my configuration,
>> it will execute it one more time).
>> Changing that code by:
>>
>>    if ($newmessage->{"scanmail"} =~ /[12]/ ||
>>      $newmessage->{"virusscan"} =~ /1/ ||
>>      $newmessage->{"dangerscan"} =~ /1/) {
>>    $newmessage->NeedsScanning(1);
>>
>> it reads the value from the variable filled by Message.pm, and doesn't
>> call again to the function.
>>
>> Can you confirm if this is correct?
>> Thanks.
>>
>> Regards,
>>
>>> El 23/09/15 a las 17:52, Alvaro Marín escribió:
>>> Hello,
>>>
>>> I'm writing a CustomFunction to check the "Scan Messages" value in a
>>> database:
>>>
>>> Scan Messages = &ScanMsgs
>>>
>>> I've done the same with :
>>>
>>> Spam Checks (for avoid mails being scanned, that is, whitelisting)
>>> Is Definitely Spam  (for blacklisting)
>>>
>>> and these 2 functions run fine.
>>>
>>> The problem with "Scan Messages" is that the function is executed two
>>> times for each message:
>>>
>>> Sep 23 17:15:05 MailScanner[22554]: 4694D2180A7.AC573: ScanMsgs checking.
>>> Sep 23 17:15:05 MailScanner[22554]: 4694D2180A7.AC573: ScanMsgs checking.
>>>
>>> and I see in MySQL logs that the queries are done 2 times.
>>> Simplifying the code to:
>>>
>>> ========
>>> package MailScanner::CustomConfig;
>>> sub InitScanMsgs {
>>>   MailScanner::Log::InfoLog("Starting ScanMsgs...");
>>> }
>>> sub ScanMsgs {
>>>   my($message) = @_;
>>>   my $msgid=$message->{id};
>>>   MailScanner::Log::WarnLog("$msgid: ScanMsgs checking.");
>>>   return 0;
>>> }
>>> sub EndScanMsgs {
>>>   MailScanner::Log::InfoLog("Ending ScanMsgs...");
>>>   exit;
>>> }
>>> 1;
>>> ========
>>>
>>> the problem still occurs.
>>> Any idea? Is strange because, as I've said, white and blacklisting work
>>> fine with similar code.
>>>
>>> Thank you.
>>> Regards,
>>
>>
>> -- 
>> Alvaro Marín Illera
>> Hostalia Internet
>> www.hostalia.com
>>
>>
>>
>> -- 
>> MailScanner mailing list
>> mailscanner at lists.mailscanner.info
>> http://lists.mailscanner.info/listinfo/mailscanner
>>
> 
> 


-- 
Alvaro Marín Illera
Hostalia Internet
www.hostalia.com



More information about the MailScanner mailing list