SpamAssassins Erkennungsrate mit SA-Learn verbessern

Unter „Training für SpamAssassin“ wurde bereits erklärt, wie man mit dem Hilfsprogramm sa-learn das Erkennungsverhalten von SpamAssassin trainieren kann.

An dieser Stelle möchte ich noch mal ein konkretes Beispiel dazu dokumentieren.

Auf meinem Server verwende ich die Maildir-Verzeichnisstruktur, zum Speichern meiner E-Mails.

In meinem Fall befinden sich die bereits gelesenen E-Mails im Posteingang im Pfad /var/mail/vmail/example.org/username/mail/cur. Die in diesem Ordner liegenden E-Mails sind kein Spam. Dies kann SpamAssassin mit dem folgenden Befehl mitgeteilt werden:

# sa-learn --ham /var/mail/vmail/example.org/username/mail/cur/ --progress
100% [=========================================================================================================================]  10.43 msgs/sec 00m01s DONE
Learned tokens from 13 message(s) (18 message(s) examined)

Spam landet in meinem Fall im Pfad /var/mail/vmail/example.org/username/mail/Junk/cur. Diese Mails können mit dem folgenden Kommando verarbeitet werden.

sa-learn --spam /var/mail/vmail/example.org/username/mail/Junk/cur

Weitere Informationen findet man auf der offiziellen Homepage von SpamAssassin.

6 Gedanken zu „SpamAssassins Erkennungsrate mit SA-Learn verbessern

  1. Lars

    crontab -e


    [...]
    0 5 * * 0 /usr/bin/sa-learn --spam /var/www/web*/user/*/Maildir/.Junk/cur > /dev/null 2>&1
    0 6 * * 0 /usr/bin/sa-update > /dev/null 2>&1
    5 6 * * 0 /usr/bin/sa-compile > /dev/null 2>&1
    [...]

    Antworten
    1. Jörg Kastning Beitragsautor

      Hallo Christoph,

      zwar benutze ich diese beiden Kommandos (noch) nicht selbst, doch versuche ich mich mal an einer Erklärung.

      Mit sa-learn --ham und sa-learn --spam erstellt SpamAssassin ausschließlich aus den eigenen vorhandenen Mails Regelsätze. Das Kommando sa-update lädt neue Regeln von einem Channel herunter. Durch sa-compile kann das Regelwerk kompiliert werden. Ich vermute, dass übersetzter Code bedeutend schneller verarbeitet werden kann.

      Weitere Informationen bietet die Dokumentation:

      VG
      Jörg

      Antworten
  2. Marvin

    Ich bekomme leider einen Error, hat wer eine Idee?
    root@mail:~# sa-learn –ham –username amavis –dbpath /var/lib/amavis/.spamassassin /srv/vmail/*/Maildir/.Sent/cur/* –progress

    -bash: /usr/bin/sa-learn: Die Argumentliste ist zu lang

    Antworten
    1. Tobias

      ! Bash shell expansion

      Durch den Stern „*“ am Ende deiner Pfadangabe ersetzt die Bash deinen Pfad durch eine Liste JEDER Datei die sich dort defindet. Und weil nun jede Datei/Verzeichnis einzeln aufgelistet ist meckert sa-learn.
      Anstelle von „sa-lear /var/path“ hast du dann
      „sa-learn /var/path/file1 /var/path/file2 /var/path/file… /var/path/subdir…“
      Probier es mal aus:
      echo ./
      echo ./*

      Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert