You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by mm...@apache.org on 2009/09/15 03:03:34 UTC

svn commit: r814949 - in /spamassassin/trunk/lib/Mail/SpamAssassin: AutoWhitelist.pm PerMsgStatus.pm Plugin/AWL.pm

Author: mmartinec
Date: Tue Sep 15 01:03:33 2009
New Revision: 814949

URL: http://svn.apache.org/viewvc?rev=814949&view=rev
Log:
AutoWhitelist.pm: (complete the unfinished to-do) canonicalize
an IPv6 address and keep only the /48 network part, when using
it in an AWL database entry; added some commented-out debugging

Modified:
    spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
    spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm?rev=814949&r1=814948&r2=814949&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/AutoWhitelist.pm Tue Sep 15 01:03:33 2009
@@ -45,6 +45,7 @@
 use warnings;
 use bytes;
 use re 'taint';
+use NetAddr::IP;
 
 use Mail::SpamAssassin;
 use Mail::SpamAssassin::Logger;
@@ -312,9 +313,17 @@
   } elsif ($origip =~ /:/  &&
            $origip =~
            /^ [0-9a-f]{0,4} (?: : [0-9a-f]{0,4} | \. [0-9]{1,3} ){2,9} $/xsi) {
-    # looks like an IPv6 address;  TODO: put it into a canonical form
-    $origip = uc($origip);
+    # looks like an IPv6 address
+    my $origip_obj = NetAddr::IP->new6($origip);
+    if (!defined $origip_obj) {  # invalid IPv6 address
+      dbg("auto-whitelist: bad IPv6 address $origip");
+      $origip = 'junk-' . $origip;
+    } else {
+      $origip = $origip_obj->full6;  # string in a canonical form
+      $origip =~ s/(:[0-9a-f]{4}){5}\z//si;  # keep only the /48 network addr
+    }
   } else {
+    dbg("auto-whitelist: bad IP address $origip");
     $origip =~ s/[^0-9A-Fa-f:.]/_/gs;	# paranoia
     $origip = 'junk-' . $origip;
   }

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm?rev=814949&r1=814948&r2=814949&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/PerMsgStatus.pm Tue Sep 15 01:03:33 2009
@@ -1556,6 +1556,7 @@
   else {
     my @results = $getraw ? $self->{msg}->raw_header($request)
                           : $self->{msg}->get_header($request);
+  # dbg("message: get(%s) = %s", $request, join(", ",@results));
     if (@results) {
       $result = join('', @results);
     } else {  # metadata

Modified: spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm
URL: http://svn.apache.org/viewvc/spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm?rev=814949&r1=814948&r2=814949&view=diff
==============================================================================
--- spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm (original)
+++ spamassassin/trunk/lib/Mail/SpamAssassin/Plugin/AWL.pm Tue Sep 15 01:03:33 2009
@@ -339,6 +339,7 @@
     my $timer = $self->{main}->time_method("total_awl");
 
     my $from = lc $pms->get('From:addr');
+  # dbg("auto-whitelist: From: $from");
     return 0 unless $from =~ /\S/;
 
     # find the earliest usable "originating IP".  ignore private nets
@@ -391,7 +392,8 @@
     
       dbg("auto-whitelist: AWL active, pre-score: %s, autolearn score: %s, ".
 	  "mean: %s%s, IP: %s, address: %s %s",
-          $pms->{score}, $awlpoints, $meanscore || 'undef',
+          $pms->{score}, $awlpoints,
+          !defined $meanscore ? 'undef' : sprintf("%.3f",$meanscore),
           !defined $signeravg ? '' : sprintf(", signer_avg: %.2f",$signeravg),
           $origip || 'undef',
           $from,  $signedby ? "SIGNED by $signedby" : '(not signed)');