Spamassassin funktioniert, lernt aber nicht? Die Genauigkeit des Bayes-Filters verbessert sich nicht

Spamassassin funktioniert, lernt aber nicht? Die Genauigkeit des Bayes-Filters verbessert sich nicht

Ich habe einen Mailserver mit einer funktionierenden Spamassassin-Installation (Postfix, Dovecot, Amavis, Clamav, Spamassassin unter Debian).

Alles funktioniert prima. Spamassassin filtert Spams heraus und ich erhalte die Header:

X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: YES
X-Spam-Score: 8.025
X-Spam-Level: ********
X-Spam-Status: Yes, score=8.025 tagged_above=-9999 required=3
    tests=[BAYES_50=0.8, DKIM_INVALID=0.1, DKIM_SIGNED=0.1,
    HTML_IMAGE_ONLY_24=1.618, HTML_MESSAGE=0.001,
    RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922,
    RCVD_IN_BL_SPAMCOP_NET=1.347, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
    URIBL_ABUSE_SURBL=1.25, URIBL_BLOCKED=0.001]
    autolearn=no autolearn_force=no

Ich trainiere Spamassassin (derzeit manuell) mit neuem Spam und Ham, wenn es eintrifft:

Tue Dec 15 22:22:14 2020
Spam training for [email protected]
Learned tokens from 12 message(s) (159 message(s) examined)
Ham training for [email protected]
Learned tokens from 4 message(s) (49 message(s) examined)
Deleting spam for [email protected] older than 30 days
Syncing the SpamAssassin journal
bayes: synced databases from journal in 0 seconds: 2711 unique entries (2711 total entries)
Statistics for this run:
0.000          0          3          0  non-token data: bayes db version
0.000          0       5288          0  non-token data: nspam
0.000          0        855          0  non-token data: nham
0.000          0     124148          0  non-token data: ntokens
0.000          0 1602145027          0  non-token data: oldest atime
0.000          0 1608066788          0  non-token data: newest atime
0.000          0 1608067345          0  non-token data: last journal sync atime
0.000          0 1607672985          0  non-token data: last expiry atime
0.000          0    5529600          0  non-token data: last expire atime delta
0.000          0      50552          0  non-token data: last expire reduction count
Run finished Tue Dec 15 22:22:27 2020

Alles scheint zu funktionieren. Allerdings habe ich in letzter Zeit festgestellt, dass Spam, der immer gleich aussieht, immer noch in den Posteingang gelangt. Es ist dieselbe Art von Spam, und nach ein paar Wochen Training kommt er immer noch durch. Der Bayes-Score ändert sich nicht.

X-Virus-Scanned: Debian amavisd-new at xxx.yyy.de
X-Spam-Flag: NO
X-Spam-Score: 1.852
X-Spam-Level: *
X-Spam-Status: No, score=1.852 tagged_above=-9999 required=3
    tests=[BAYES_00=-1.9, DIGEST_MULTIPLE=0.293, DKIMWL_WL_MED=-0.001,
    DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.249,
    HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, PYZOR_CHECK=1.392,
    RAZOR2_CF_RANGE_51_100=1.886, RAZOR2_CHECK=0.922, SPF_HELO_NONE=0.001,
    SPF_PASS=-0.001, T_KAM_HTML_FONT_INVALID=0.01]
    autolearn=no autolearn_force=no

Ich kann keine Probleme finden und alles, was ich bisher überprüft habe, scheint zu funktionieren. Die Mindestvorgabe von 200 Spams/Hams ist offensichtlich überschritten. Das sollte also kein Problem sein. Ich trainiere Spamassassin mit diesem Befehl:

/usr/bin/sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
/usr/bin/sa-learn --sync >> /var/log/sa-learn.log 2>&1

Was könnte das Problem sein? Ich weiß nicht mehr, wo ich suchen soll.

Jede Hilfe wird dankbar angenommen.

Antwort1

Die ergebnisse vonSpamassassinBayes-Trainings werden in einer Datenbank gespeichert, die aus einigen Dateien besteht, die üblicherweisegespeichert im Home-Verzeichnis des Benutzers, unter dem es läuftWenn Sie mit einem anderen Benutzer anrufen, greifen Sie nicht auf denselben Datensatz zu bzw. aktualisieren ihn nicht.

(erweiterte Version des früheren Kommentars)

Zur PrivilegientrennungSpamassassinläuft normalerweise unter einem separaten Benutzer, z. B. debian-spamdoder amavis, sodass während des automatischen Lernens die Datenbank dieses Benutzers aktualisiert wird. Wenn Sie die Datenbank manuell aktualisieren möchten, müssen Sie möglicherweise den richtigen Benutzer angeben, da Sie sonst Ihre Trainingsdaten nur in einer anderen, nicht verwandten Datenbank speichern würden.

Wie erkennt man das?Wenn Sie (Backups beiseite) zwei Instanzen der Trainingsdatendateien haben, haben Sie aufgerufenSpamassassinunter zwei verschiedenen Benutzern (wahrscheinlich einer von Ihrem Mailserver, einer von Ihrer Shell):

# find / -name bayes_toks
/var/lib/amavis/.spamassassin/bayes_toks
/root/.spamassassin/bayes_toks

Beide Dateien können einen Zeitstempel der letzten Änderung haben, denn sobald die Datenbank ausreichend gefüllt ist,Spamassassin kannWählen Sie ausreichend gut identifizierte E-Mails aus, umAutozugDas Ziel besteht darin, Token aus empfangener E-Mail ohne manuelle Aktion zu lernen (dieses Verhalten kann konfiguriert werden und ist normalerweise aktiviert).

Wie repariert man?Leiten Sie die gleichen E-Mails an die richtige Datenbank weiter - indem Sie sa-learnmit dem Benutzer/Homedir aufrufen, den sie beim Aufruf vom Mailserver verwendet (verifizierender Ordnername stimmt möglicherweise nicht mit dem Benutzernamen überein!):

sudo -H -u amavis sa-learn --no-sync --spam /var/vmail/$domain/$user/Maildir/.Junk/{cur,new} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --no-sync --ham /var/vmail/$domain/$user/Maildir/{cur} >> /var/log/sa-learn.log 2>&1
sudo -H -u amavis sa-learn --sync >> /var/log/sa-learn.log 2>&1

Ich empfehle nichtZusammenführungdie unbeabsichtigt aufgeteilten Datensätze, da das interne Dateiformat etwas verwirrend sein kann (obwohl esdürfenentsorgt werden --backupunddestruktivüberschrieben mit --restore), wohingegen ein erneutes Training mit denselben Spam-Daten viel einfacher ist und sa-learndarauf ausgelegt ist, die wiederholte Zusendung derselben E-Mail ohne negative Auswirkungen zu bewältigen.

verwandte Informationen