When RBL checks are on, and an X-Originating-IP header is found, it does an IP check using my_inet_aton. However, there seems to be a problem with certain types of headers. I've seen this style of header (I think coming from a Mailman list)

X-Originating-IP: 192.168.0.25/instID=29

The part in the code is in EvalTests.pm (around line 1240, for 3.10)

for my $header ('X-Originating-IP', 'X-Apparently-From') {
   my $str = $self->get($header);
   my $str = pop(@headers);
   next unless $str;
   push (@originating, ($str =~ m/($IP_ADDRESS)/g));
}

@originating gets this:

$VAR1 = '192.168.0.25';
$VAR2 = '';
$VAR3 = '';
$VAR4 = '';
$VAR5 = '';
$VAR6 = '';
$VAR7 = '';
$VAR8 = 'D';
$VAR9 = '';
$VAR10 = '29';
$VAR11 = '';

When $trusted->contains_ip gets called, the "D" causes a warning:

Oct 19 16:24:21 mailhost mimedefang-multiplexor[6036]: Slave 5 stderr: Argument "D" isn't numeric in pack at /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/Util.pm line 711.

We're using perl 5.8.0 on this system - any ideas on why this is happening? Shouldn't IP_ADDRESS disregard the "D", or in fact anything past the '/'?
--
Adrian Daminato
Systems Administrator

Reply via email to