MagicSpam ist ein hervorragender Spam-Filter für Plesk, CPanel oder MailEnable. Im Gegensatz zu SpamAssassin kommt MagicSpam mit einer grafischen Oberfläche und sehr einfacher Konfiguration daher. Leider fehlt der kostenlosen Version eine Auto-Whitelisting Funktion und die Log-Ausgabe ist auf 50 Einträge beschränkt. Die folgenden beiden Scripts ergänzen MagicSpam um Auto-Whitelisting und den Versand täglicher Reports.
Was ist eine Auto-Whitelist?
In der Whitelist von MagicSpam werden Mailadressen gesammelt, die ohne Spam-Prüfung durchgelassen werden. Wenn die Mailserver wichtiger Kontakte diverse Regeln verletzen, deshalb als Spam-Sender eingestuft und geblockt werden, ist die Whitelist das Mittel der Wahl.
Viele Adressen manuell auf die Whitelist zu setzen ist jedoch sehr mühsam und zeitraubend. Auto-Whitelisting nimmt ihnen diese Arbeit ab: In regelmässigen Abständen werden die Log-Dateien des eigenen Mailservers gescanned und alle Empfänger ausgehender Mails auf die MagicSpam Whitelist gesetzt. Damit ist sichergestellt dass jeder Empfänger Ihrer Mails auch antworten kann ohne im Spam-Filter zu landen.
Auto-Whitelisting für MagicSpam im Detail
Das folgende Script setzt voraus, dass Postfix als MTA (Mail Transfer Agent) eingesetzt wird.
Es wird stündlich z.B. über den Taskplaner von Plesk aufgerufen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#!/bin/bash # # build-magic-whitelist.sh 1.00 # # Implements MagicSpam auto whitelisting by # collecting recipient addresses from the Postfix log. # # (c)2016 Harald Schneider # # Filter Postfix log # cat /var/log/maillog |grep -v "relay=local" |grep "relay=" |grep "status=sent" | perl -ne 'print "$1\n" if /to=<(.*?)>/' >/var/log/maillog-filtered.txt # Append existing Whitelist # cat /etc/magicspam/from_whitelist >> /var/log/maillog-filtered.txt # Filter duplicates and write back to Whitelist # perl -ne 'print unless $seen{$_}++' /var/log/maillog-filtered.txt > /etc/magicspam/from_whitelist rm /var/log/maillog-filtered.txt exit 0 |
- Jede Mail, die Postfix verarbeitet, erzeugt einen Log-Eintrag in der Datei /var/logs/maillog.
- Aus diese Logdatei werden nun alle Empfänger ausgehender Mails extrahiert und in die Datei /var/logs/maillog-filtered.txt geschrieben.
- Damit manuell auf die MagicSpam Whitelist gesetzte Einträge nicht verloren gehen, werden diese an die maillog-filtered.txt angehängt.
- Im letzten Schritt wird nun die Whitelist von MagicSpam (/etc/magicspam/from_whitelist) durch die so gesammelten Adressen ersetzt. Duplikate werden dabei automatisch bereinigt.
- Am Ende wird /var/log/maillog-filtered.txt gelöscht.
MagicSpam Log filtern
Auto-Whitelisting setzt voraus, dass ein Kontakt zuerst einmal eine Mail erhält bevor er “freigeschaltet” wird. Daher ist es besonders in der Phase direkt nach der Installation von MagicSpam wichtig, die Log-Dateien im Auge zu behalten. Hier ist genau zu erkennen ob ein Kontakt fälschlicher Weise als Spam eingestuft wird.
Das folgende Script reduziert die tägliche Logdatei von MagicSpam auf 3 Spalten, die sehr schnell manuell kontrolliert werden können: Sender (FROM), Empfänger (TO) und “RULE”, d.h. die Regel die bei der Einstufung als Spam zur Anwendung kamen. Letzteres ist hilfreich zu entscheiden, ob diverse Settings in MagicSpam besser abgeschaltet werden.
Die so erzeugte und duplikat-bereinigte Liste wird am Ende zusammen mit dem original Log automatisch per Mail zugestellt:
Der Magic Spam Log Filter im Detail
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
#!/bin/bash # # filter-magic-spamlist.sh 1.02 # # Filters spam sender's addresses from the # MagicSpam logs. # # (c)2016 Harald Schneider # # Setup.start # LOG=/var/log/magicspam/mslog # Path of MagicSpam log file FROM=magicspam@yourdomain.com # Report mail sender TO=notify@yourdomain.com # Report mail recipient # # Setup.end # Filter MagicSpam log # echo "Processing MagicSpam Log ..." cat $LOG |grep ": SPAM" | perl -ne 'print "FROM\tTO\tRULE\n";print "$2\t$3\t$1\n" if /: SPAM(.*?):.*?from=<(.*?)>.*?rcpt=<(.*?)>/;' >/var/log/magicspam-tmp.txt # Filter duplicates and send as an attachment # perl -ne 'print unless $seen{$_}++' /var/log/magicspam-tmp.txt > /var/log/magicspam-senders.csv # Prepare original report # cp $LOG $LOG.csv echo "Sending reports ..." sendemail -f $FROM -t $TO -u "MagicSpam Report" -m "Reports attached.\n\n" -a $LOG.csv -a /var/log/magicspam-senders.csv # Cleanup # rm $LOG.csv rm /var/log/magicspam-senders.csv rm /var/log/magicspam-tmp.txt exit 0 |
Da wir /var/log/magicspam/mslog verarbeiten, macht es Sinn das Script kurz vor der Log-Rotation per Task-Planer zu starten, z.B. täglich um 23:55. So haben Sie am nächsten Morgen die Auswertung direkt im Postfach.
Mehr Infos zu MagicSpam gibt es hier:
www.magicspam.com
Die MagicSpam Free Edition gibt es z.B. bei allen allen Servern von HostEurope als kostenlose Extension für Plesk.
Eine verbesserte Version des Auto Whitelisting Skripts findet ihr hier.