Möglicherweise ist die Erkennungsrate von Spamassassin zu Beginn nicht zufriedenstellend und einige Spammails werden nicht erkannt, obwohl Spamassassin aktuell ist. Die Trefferquote kann verbessert werden, indem Spamassassin anhand bereits vorhandener Mails „trainiert” wird. Der Software werden sowohl Spammails als auch normale, erwünschte Mails zur Analyse übergeben. Spamassassin lernt so mit der Zeit, wie eine Spammail aussieht und welche E-Mails erwünscht sind.
Für das Training wird das kleine Programm sa-learn mitgeliefert. Mit
sa-learn --spam /pfad/zur/Mailbox/Spam
wird die Erkennung von Spammails verbessert, indem die im Spam-Ordner liegenden Mails ausgewertet werden. Voraussetzung ist natürlich, dass vorher von Hand einige Spammails in den Spamordner verschoben wurden – vor allem auf die Spammails, die die Software nicht erkennt hat, komm es an! Es nützt nichts, Mails zu re-analysieren, die sowieso schon als Spam erkannt wurden und automatisch in den Spamordner verschoben wurden.
Spamassassin kann außerdem mitgeteilt werden, welche E-Mails okay sind und nicht als Spam in Frage kommen. Dazu wird der Parameter –ham genutzt und ein Verzeichnis, in dem sich mit Sicherheit keine Spammail befindet:
sa-learn --ham /pfad/zur/Mailbox/Sent
Diese beiden Kommandos sollten hin und wieder über sämtliche Postfächer des Mailservers laufen. Weil das von Hand nicht besonders komfortabel ist, habe ich ein kleines Script geschrieben, das den Job erledigt:
#!/bin/sh DOMAINS="domain1 domain2 domain3" cd /var/vmail/ for DOMAIN in $DOMAINS; do echo "Entered domain dir $DOMAIN" cd "$DOMAIN/" for USER in $(ls); do echo "Entered user dir $USER" cd "$USER/mail/" ### Learn spam ### sa-learn --spam "Spam/" ### Learn ham ### sa-learn --ham "Sent/" cd "../../" done cd "../" done
Es wird davon ausgegangen, dass der Pfad zur Mailbox eines Users folgendes Schema hat:
/var/vmail/domain/user/mail/
Die Domains, deren Postfächer analysiert werden sollen, werden oben durch ein Leerzeichen getrennt angegeben.
Das Script wird von root in eine Datei „sa-practise.sh” geschrieben und mit passenden Rechten versehen:
chmod +x sa-practise.sh
Damit das Script automatisch in festen Zeitintervallen ausgeführt wird, wird es je nach gewünschten Intervall nach /etc/cron.hourly [daily, weekly, monthly] verschoben:
mv sa-practise.sh /etc/cron.weekly/
Von nun an lernt Spamassassin selbstständig und verbessert mit der Zeit seine Trefferquote. Wichtig ist nur, dass weiterhin nicht erkannte Spammails manuell in den Spamordner verschoben werden, damit die Software mit neuen Informationen versorgt wird.