Im 2. Teil zu meinen Bestrebungen dem Spam auf meinem Webserver Herr zu werden habe ich mich mit der Möglichkeit beschäftigt, Spam gar nicht erst zum User gelangen zu lassen.
Mit Hilfe von Squirrelmail als Webfrontend, Spamassassin auf dem Server und einem Cron Script, werden Spam Mails die der Assassin findet 5 Tage in einem Spam Ordner per Squirrelmail vorgehalten, und dann automatisch gelöscht. Vorher lernt Spamassassin natürlich schön aus dem Inhalt der Mails…
Zuerst habe ich jedem Mailuser in seinem Mail Spool ein Unterverzeichnis SPAM eingerichtet. Mailserver Config habe ich dann zentral angesagt, dass alles was Spamassassin während des Serverprozesses “Empfangen” findet (Markierung *SPAM*), direkt in den Ordner SPAM umleitet. Da dies für jeden Mailserver wie sendmail, postfix oder exim anders aussieht, verweise ich an dieser Stelle mal frech auf die Herstellerseiten der Pakete.
Jede erkannte Spam Mail wird nun also in den gesonderten Ordner verfrachtet, wo sich die User die Mails 5 Tage lang per Webmail, in meinem Fall Squirrelmail, ansehen können. Falls versehentlich falsche Mails als Spam deklariert werden, können diese verschoben werden.
Nach 5 Tagen dann aber schlägt von hinten und ohne Vorwarnung ein Lern-und-Kill Script zu, welches stumpf jeglichen Spam löscht. Ich habe mein lern-und-kill Script ganz doof killspam.sh genannt, und in einem meiner Bastelordner abgelegt. Also ab an den Platz eurer Wahl und
vi killspam.sh
getippt. Der Inhalt sieht dann so aus:
#!/bin/sh
# Variable Anzahl Tage, bis Spam zu alt wird
TOO_OLD=2
# Spam Ordner finden
PATH_SPAM=”find /var/mail/ -type d -name .spam
”
echo [$PATH_SPAM<br /> # raus, wenn kein spam<br /> if [ -z “$]{.math .inline}{PATH_SPAM}” ]; then
exit 0
fi
# Spam lernen und dann killen nach Variable [$TOO_OLD (Std. 5)<br /> if [ -n “$]{.math .inline}{PATH_SPAM}” ]; then
for each in “${PATH_SPAM}” ; do
FILES_TO_DELETE=”find ${each} -type f -ctime +$TOO_OLD
”
if [ -n “${FILES_TO_DELETE}” ]; then
for file in ${FILES_TO_DELETE} ; do
if [ -n ${file} ]; then
sa-learn –no-sync –spam ${file}
rm -f ${file}
fi
done
fi
done
fi
sa-learn –sync
exit 0
Dieses Script habe ich dann lecker per Cron in den täglichen Ablauf gebannt:
15 3 * * * /irgendwo/killspam.sh | mail -s “Killspam” mail@adresse.de
So wird täglich alles 5 Tage alte Zeug gelernt, und dann gelöscht UND Ihr erhaltet eine Mail vom Cron. Die Mailuser sehen auf meinem Server seither keine Spam Mails mehr, und bisher gab es keine false positives zu verzeichnen.