You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by he...@apache.org on 2021/04/06 13:08:42 UTC

svn commit: r1888435 - in /spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin: Check.pm HashBL.pm URIDNSBL.pm

Author: hege
Date: Tue Apr  6 13:08:42 2021
New Revision: 1888435

URL: http://svn.apache.org/viewvc?rev=1888435&view=rev
Log:
Revert Revision 1878575,1878574,1878572 (Bugs 7822, 7822), remove any traces of undocumented check_cleanup from 3.4, metas do not work correctly with it. URIDNSBL/HashBL revert to logging only first hit, any improvements will be in 4.0 only.

Modified:
    spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Check.pm
    spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/HashBL.pm
    spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm

Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Check.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Check.pm?rev=1888435&r1=1888434&r2=1888435&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Check.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/Check.pm Tue Apr  6 13:08:42 2021
@@ -202,9 +202,6 @@ sub check_main {
     $pms->{resolver}->finish_socket() if $pms->{resolver};
   }
 
-  # last chance to handle left callbacks, make rule hits etc
-  $self->{main}->call_plugins ("check_cleanup", { permsgstatus => $pms });
-
   if ($pms->{deadline_exceeded}) {
     $pms->got_hit('TIME_LIMIT_EXCEEDED', '', defscore => 0.001,
                   description => 'Exceeded time limit / deadline');

Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/HashBL.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/HashBL.pm?rev=1888435&r1=1888434&r2=1888435&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/HashBL.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/HashBL.pm Tue Apr  6 13:08:42 2021
@@ -452,7 +452,6 @@ sub check_hashbl_emails {
   my $max = $opts =~ /\bmax=(\d+)\b/ ? $1 : 10;
   $#filtered_emails = $max-1 if scalar @filtered_emails > $max;
 
-  $pms->{hashbl_emails_count}{$rulename} = scalar @filtered_emails;
   foreach my $email (@filtered_emails) {
     $self->_submit_query($pms, $rulename, $email, $list, $opts, $subtest);
   }
@@ -667,11 +666,9 @@ sub _submit_query {
 sub _finish_query {
   my ($self, $pms, $ent, $pkt) = @_;
 
-  my $rulename = $ent->{rulename};
-
   if (!$pkt) {
     # $pkt will be undef if the DNS query was aborted (e.g. timed out)
-    dbg("lookup was aborted: $rulename $ent->{key}");
+    dbg("lookup was aborted: $ent->{rulename} $ent->{key}");
     return;
   }
 
@@ -679,34 +676,15 @@ sub _finish_query {
   my @answer = $pkt->answer;
   foreach my $rr (@answer) {
     if ($rr->address =~ $dnsmatch) {
-      dbg("$rulename: $ent->{zone} hit '$ent->{value}'");
+      dbg("$ent->{rulename}: $ent->{zone} hit '$ent->{value}'");
       $ent->{value} =~ s/\@/[at]/g;
-      # Hit now if only one query exists, otherwise call hits at scan end
-      if ($pms->{hashbl_emails_count}{$rulename} == 1) {
-        $pms->test_log($ent->{value});
-        $pms->got_hit($rulename, '', ruletype => 'eval');
-        $pms->register_async_rule_finish($rulename);
-      } else {
-        push @{$pms->{hashbl_emails_hits}{$rulename}}, $ent->{value};
-      }
+      $pms->test_log($ent->{value});
+      $pms->got_hit($ent->{rulename}, '', ruletype => 'eval');
+      $pms->register_async_rule_finish($ent->{rulename});
       return;
     }
   }
 }
-
-sub check_cleanup {
-  my ($self, $opts) = @_;
-
-  my $pms = $opts->{permsgstatus};
-
-  # Call any remaining hits
-  if (exists $pms->{hashbl_emails_hits}) {
-    foreach my $rulename (keys %{$pms->{hashbl_emails_hits}}) {
-      $pms->test_log(join(', ', sort @{$pms->{hashbl_emails_hits}{$rulename}}));
-      $pms->got_hit($rulename, '', ruletype => 'eval');
-    }
-  }
-}
 
 # Version features
 sub has_hashbl_bodyre { 1 }

Modified: spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm?rev=1888435&r1=1888434&r2=1888435&view=diff
==============================================================================
--- spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm (original)
+++ spamassassin/branches/3.4/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm Tue Apr  6 13:08:42 2021
@@ -1159,6 +1159,11 @@ sub got_dnsbl_hit {
   $str =~ s/\s+/  /gs;	# long whitespace => short
   dbg("uridnsbl: domain \"$dom\" listed ($rulename): $str");
 
+  if (!defined $pms->{uridnsbl_hits}->{$rulename}) {
+    $pms->{uridnsbl_hits}->{$rulename} = { };
+  };
+  $pms->{uridnsbl_hits}->{$rulename}->{$dom} = 1;
+
   if ( $pms->{uridnsbl_active_rules_nsrevipbl}->{$rulename}
     || $pms->{uridnsbl_active_rules_arevipbl}->{$rulename}
     || $pms->{uridnsbl_active_rules_nsrhsbl}->{$rulename}
@@ -1167,20 +1172,14 @@ sub got_dnsbl_hit {
     || $pms->{uridnsbl_active_rules_rhsbl_ipsonly}->{$rulename}
     || $pms->{uridnsbl_active_rules_rhsbl_domsonly}->{$rulename})
   {
-    # Hits are saved and called in check_cleanup
-    $pms->{uridnsbl_hits}->{$rulename}->{$dom} = 1;
-  }
-}
-
-sub check_cleanup {
-  my ($self, $opts) = @_;
-
-  my $pms = $opts->{permsgstatus};
+    # TODO: this needs to handle multiple domain hits per rule
+    $pms->clear_test_state();
+    my $uris = join (' ', keys %{$pms->{uridnsbl_hits}->{$rulename}});
+    $pms->test_log ("URIs: $uris");
+    $pms->got_hit ($rulename, "");
 
-  # Call any remaining hits
-  foreach my $rulename (keys %{$pms->{uridnsbl_hits}}) {
-    $pms->test_log("URIs: ".join(', ', sort keys %{$pms->{uridnsbl_hits}->{$rulename}}));
-    $pms->got_hit($rulename, '');
+    # note that this rule has completed (since it got at least 1 hit)
+    $pms->register_async_rule_finish($rulename);
   }
 }