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?
- Spam Nachricht trifft ein und wird nicht erkannt [Posteingang]
- Manuelles verschieben in einen Spam-Folder [Spam]
- regelmäßiger Crondurchlauf des sa-learn Befehls für alle verfügbaren Postfächer
- Löschen der Spam-Nachricht / ggf. Kopie im Ham-Ordner
- 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