Hello.

In conclusion, the following patch is needed.


--- ../Mail-SpamAssassin-4.0.1.orig/lib/Mail/SpamAssassin/Plugin/TxRep.pm 2024-03-26 13:52:09.000000000 +0900 +++ ../Mail-SpamAssassin-4.0.1/lib/Mail/SpamAssassin/Plugin/TxRep.pm 2024-06-01 05:09:01.496565000 +0900
@@ -1967,10 +1967,13 @@
 sub forget_message {
###########################################################################
   my ($self, $params) = @_;
   return 0 unless ($self->{conf}->{use_txrep});
my $pms = ($self->{last_pms})? $self->{last_pms} : Mail::SpamAssassin::PerMsgStatus->new($self->{main}, $params->{msg}); + if (!defined $pms->{relays_internal} && !defined $pms->{relays_external}) {
+    $pms->extract_message_metadata();
+  }

   dbg("TxRep: forgetting a message");
   $self->{forgetting} = 1;
   my $ret = $self->check_senders_reputation($pms);
   $self->{forgetting} = undef;


The three additional lines are a copy of learn_message immediately above.
Probably unnecessary if forget_message is called from line 1349.
However, it is necessary when called as $sa->learn($msg, $id=undef, $isspam=1, $forget=1) as in sa-learn.


Below is a demonstration.

abstract code
    $sa->learn($msg, $id=undef, $isspam=1, $forget=0);
    dump_tx_reputation();
    $sa->learn($msg, $id=undef, $isspam=1, $forget=1);
    dump_tx_reputation();

Without patch
    ---
    123.123.123.123|ip=none: 1
    123.123.123.123|ip=none|totscore: 20
    6e4a149a9841940055d7dc4e85c0c750aef09cfb@sa_generated|ip=none: 2
6e4a149a9841940055d7dc4e85c0c750aef09cfb@sa_generated|ip=none|totscore: 40
    host.name|ip=123.123: 1
    host.name|ip=123.123|totscore: 20
    u...@host.name|ip=123.123: 1
    u...@host.name|ip=123.123|totscore: 20
    u...@host.name|ip=none: 1
    u...@host.name|ip=none|totscore: 20
    ---
    123.123.123.123|ip=none: 1
    123.123.123.123|ip=none|totscore: 20
    host.name|ip=123.123: 1
    host.name|ip=123.123|totscore: 20
    host.name|ip=none: 1                          <-----------------
    host.name|ip=none|totscore: -20               <-----------------
    u...@host.name|ip=123.123: 1
    u...@host.name|ip=123.123|totscore: 20
    u...@host.name|ip=none: 1
    u...@host.name|ip=none|totscore: 0

With patch
    ---
    123.123.123.123|ip=none: 1
    123.123.123.123|ip=none|totscore: 20
    6e4a149a9841940055d7dc4e85c0c750aef09cfb@sa_generated|ip=none: 2
6e4a149a9841940055d7dc4e85c0c750aef09cfb@sa_generated|ip=none|totscore: 40
    host.name|ip=123.123: 1
    host.name|ip=123.123|totscore: 20
    u...@host.name|ip=123.123: 1
    u...@host.name|ip=123.123|totscore: 20
    u...@host.name|ip=none: 1
    u...@host.name|ip=none|totscore: 20
    ---
    123.123.123.123|ip=none: 1
    123.123.123.123|ip=none|totscore: 0
    host.name|ip=123.123: 1
    host.name|ip=123.123|totscore: 0
    u...@host.name|ip=123.123: 1
    u...@host.name|ip=123.123|totscore: 0
    u...@host.name|ip=none: 1
    u...@host.name|ip=none|totscore: 0


Thanks.

Reply via email to