=ats* adjustments
[PerlMail.git] / perlmail-accept
index ab934b0..43b4d62 100755 (executable)
@@ -638,12 +638,17 @@ sub Received_for
                my($for)=($hdr=~/\bfor\s+\<?(\S+)\>?\b/);
                return $for if !wantarray();
                push @r,$for if $for;
-               my($from,$fromaddr)=($hdr=~/\bfrom\s+(\S+)\b.*?\[((?:\d{1,3}\.){3}\d{1,3})\]/);
+               my($from,$fromaddr)=($hdr=~/\bfrom\s+(?:(\S+)\b.*?)??\[((?:\d{1,3}\.){3}\d{1,3})\]/);
+               $from=$fromaddr if !defined $from;
                push @r,"$from:$fromaddr" if $from;
                }
        return @r;
 }
 
+my %dnsbl_whitelist=map(($_=>1),(
+               "195.250.128.83"        # smtp3.vol.cz; 83.128.250.195.blackholes.five-ten-sg.com
+               ));
+
 # Extended Mail::Audit::MAPS
 # $domain,$full,[$timeout]
 sub dnsbl
@@ -653,7 +658,8 @@ my($domain,$full,$timeout)=@_;
        $timeout||=30;  # sec
        $Mail::Audit::MAPS::host=$domain;
        my @hosts=map({ s/^.*://; "[$_]"; }     # strip DNS part
-                       grep({ /^([^:@]*):/ && !$alternates_host{$1}; } (Received_for()))       # leave only foreign hosts
+                       grep({ /^([^:@]*):/ && !$alternates_host{$1}    # leave only foreign hosts
+                                       && !$dnsbl_whitelist{$1}; } (Received_for()))
                        );
        splice @hosts,1 if !$full && @hosts;    # "&& @hosts" to prevent: WARN: splice() offset past end of array
        {