pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

spamassassin update, crashes with TxRep plugin



I just committed an update to spamassassin 4.0.0.  I have been running
rc4 for a few days and it is working mostly well on NetBSD 9 amd64, and
as good as or better than 3.4.6, which is as of a few hours ago EOL
upstream.  If you run SA make sure to look at the release notes and
hand-merge init.pre if locally modified.

Also, it can use a DMARC perl module, which is so far not a dependency
and is for now in wip.  With that rules fire about DMARC status.

I have been having random crashes with 3.4.6, and have now tracked those
down.  The TxRep module normally uses a hash db file, ties that to a
perl dict, and records stats for senders.  Somehow, the keys and values
set by that code lose the last character in being written to the
database, and that can sometimes lead to crashes, and sometimes just to
bad data.  I have a really gross hack that seems to result in correct
behavior.  If you are using TxRep with a db file (rather than sql),
please let me know if you think you are seeing this or not.  You can
look at the db with "db hash .spamassassin/tx-reputation".

My gross hack (not in the package) follows.  The X and Y do not appear
in the DB when this code runs.  Figuring this out and fixing is right is
left for further study, but it seems like a bug in DBD for bdb, or in
bdb.

--- DBBasedAddrList.pm.~1~	2022-12-06 18:27:06.000000000 -0500
+++ DBBasedAddrList.pm	2022-12-14 08:02:13.646210151 -0500
@@ -143,10 +143,12 @@
     $entry->{msgcount}++;
     $entry->{totscore} += $score;
 
-    dbg("auto-welcomelist: add_score: new count: ".$entry->{msgcount}.", new totscore: ".$entry->{totscore});
+    dbg("auto-welcomelist: add_score: new count: ".$entry->{msgcount}.", new totscore: ".$entry->{totscore}.", addr: ".$entry->{addr});
 
-    $self->{accum}->{$entry->{addr}} = $entry->{msgcount};
-    $self->{accum}->{$entry->{addr}.'|totscore'} = $entry->{totscore};
+    $self->{accum}->{$entry->{addr}.'X'} = $entry->{msgcount}.'Y';
+    dbg("DBBasedAddrList::add_score after count");
+    $self->{accum}->{$entry->{addr}.'|totscoreX'} = $entry->{totscore}.'Y';
+    dbg("DBBasedAddrList::add_score after totscore");
     return $entry;
 }
 





Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index