Spamassassin – sa-learn automatisieren

Spam erkennen will „gelernt“ sein. Dazu lernt man den Spamassassin an. Der Befehl hierzu lautet sa-learn. Am besten verschiebt ihr dazu die E-Mails in den Junk-Folder, oder erstellt einen „Spam“ und einen „Ham“ Ordner. Anschließend führt den Befehl für spam und ham aus und löscht anschließend den Spam. Ham? Spam? Ham – also Schinken bezeichnet harmlose, gutartige E-Mails und gehören genauso zum Lernprozess! Der Befehl „sa-learn“ merkt sich den Token der Spam- oder auch Ham-E-Mail und wird so von Mal zu Mal besser in der Erkennung. Da ich grundsätzlich faul bin, möchte ich diesen Prozess automatisieren. Wie soll der Prozess aussehen?

  1. Spam Nachricht trifft ein und wird nicht erkannt [Posteingang]
  2. Manuelles verschieben in einen Spam-Folder [Spam]
  3. regelmäßiger Crondurchlauf des sa-learn Befehls für alle verfügbaren Postfächer
  4. Löschen der Spam-Nachricht / ggf. Kopie im Ham-Ordner
  5. Debug: Bestätigungsnachricht mit sa-learn-Ausgabe

Der Befehl zum anlernen lautet wie folgt – beachtet die Option –spam, bzw.

 sa-learn --dbpath /var/lib/amavis/.spamassassin/ --dir --spam -u amavis /var/vmail/domaint.tld/mail/.Spam/cur/

Die Ausgabe nach dem Absenden dann wie folgt:

Learned tokens from 26 message(s) (37 message(s) examined)

Das ganze legen wir in einem Script ab:

#!/bin/sh

DOMAINS="ehelicht.de momentlicht.de asteffen.de"

for DOMAIN in $DOMAINS; do
        echo "Domain: $DOMAIN"
        echo "SPAM anlernen"
        sa-learn --dbpath "/var/lib/amavis/.spamassassin/" --dir --spam -u amavis "/var/vmail/$DOMAIN/mail/.Spam/cur/"

        echo "HAM lernen"
        sa-learn --dbpath "/var/lib/amavis/.spamassassin/" --dir --ham -u amavis "/var/vmail/$DOMAIN/mail/cur/"
done
service spamassassin reload

Das ganze dann ausführbar machen und als cron einrichten.

chmod u+x crons/spamlearn.sh

Dazu habe ich noch einen kleinen Mail-Wrapper, der mir das Ergebnis als E-mail schickt. Das klingt jetzt wieder nach ungewollter E-Mail – aber gerade zum Anfang als Debug ganz sinnvoll.

/PFAD_ZUM_SCRIPT/crons/spamlearn.sh |  mail -s "Spam Cron auf domain.tld" admin@domain.tld

Und der Cron:

crontab -e
0 3 * * *  /PFAD_ZUM_SCRIPT/crons/spamlearn.sh |  mail -s "Spam Cron auf domain.tld" admin@domain.tld # jeden Tag um 3 Uhr

Von Alexander

Das Projekt derFernstudent.de ist für mich gleichermaßen Dokumentation und Erfahrungsbericht. Als Erfahrungsbericht für mein Fernstudium gestartet, dient es nun als Plattform, um mein Hobby und Wissen zu teilen. Ergänzt wird die Seite durch den YouTube Kanal

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.