MagicSpam: Auto Whitelisting und Log Filter

Anbei haben wir eine sehr Interessante und nützliche Quelle gefunden mit einer Recht guten Beschreibung, wie man MagicSpam ein wenig Flexibler gestalten kann. Wir haben den Quellcode an Zwei Stellen abgeändert zur Original Quelle, da dort zum einen zwei Fehler enthalten waren in den Scripte und zum anderen funktionierte die E-Mail Notifikation nicht. Wir haben diese Scripte selber im Einsatz, alle Scripte sind zum aktuellen Posting Datum aktuell und getestet.

Testsystem: Ubuntu 16.04 + Plesk 17.5.3 Update #39
Als Script Pfad haben wir bei uns: /var/www/vhost/bin/ angelegt.

Danke an den Herausgeber der Ursprungs-quelle: https://marketmix.com/de/magicspam-auto-whitelisting-und-log-filter/

Beschreibung

Erhalten Sie einen zuverlässigen, effizienten und vollständigen 2-stufigen Schutz vor Spam und Junk sowie Viren, Malware und Spyware. Blockieren Sie potenzielle Bedrohungen, auch in Form von Bildern, Videos oder Anhängen auf der Serverseite, bevor sie in Ihrem Postfach ankommen, und decken Sie die übrigen Anhänge mit einem umfassenden Virenschutz ab.

Geeignet für:

  • Web Professionals, Agenturen und KMUs, die sich gegen Sicherheitslücken schützen müssen, um Unterbrechungen oder Geschäftsverluste zu vermeiden.
  • MSPs, CSPs und Hosting-Provider, die die Posteingänge und Service-Integrität ihrer Kunden schützen müssen.

AIHoster

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.

Postfix: Autoresponder-Mails von anderen Mails unterscheiden

Damit unsere Lösung funktioniert, ist es notwendig in den Logdateien von Postfix die Autoresponder Mails von allen anderen Mails zu unterscheiden. Das geschieht mit folgendem Trick über die Betreffzeile (Subject) der Autoresponder Mails:

In Plesk wird das Subject jedes Autoresponders mit dem Zusatz „(Auto-Reply)“ versehen:

AIHoster

Da Postfix standardmässig keine Betreffzeilen in die Logdateien schreibt, muss die Konfiguration von Postfix wie folgt angepasst werden:

Unter /etc/postfix/main.cf wird folgende Zeile angehängt:

header_checks = regexp:/etc/postfix/header_checks

Danach erstellen wird eine neue Datei namens /etc/postfix/header_checks mit folgendem Inhalt:

/^subject:/ INFO

Nun starten wir Postfix über folgenden Befehl neu:

sudo /etc/init.d/postfix restart sudo /etc/init.d/postfix restart

Das neue Auto Whitelisting Skript für MagicSpam

Das Auto-Whitelisting Skript sieht wie folgt aus:

#!/bin/bash # # build-magic-whitelist.sh 1.02 # # Implements MagicSpam auto whitelisting by # collecting recipient addresses from the Postfix log. # # Ignoring AUTORESPONDER mails requires the following Postfix modifications: # # EDIT: /etc/main.cf: # ADD: header_checks = regexp:/etc/postfix/header_checks # # CREATE: /etc/postfix/header_checks # ADD: /^subject:/ INFO # # Restart Postfix to apply above mods. # # (c)2016 Harald Schneider # # Config.start # # Clear this variable, if you use a unmodified Postfix AUTORESPONDER="(Auto-Reply)" # # Config.end # Filter Postfix log # if [ $AUTORESPONDER = "" ]; then cat /var/log/maillog |grep -v "relay=local" |grep "relay=" |grep "status=sent" |perl -ne 'print lc "$1\n" if /to=<(.*?)>/' >/var/log/maillog-filtered.txt else cat /var/log/maillog |perl -MMIME::QuotedPrint=decode_qp -e 'print decode_qp join"",<>' |grep "info: header Subject:" |grep -v "Subject:.*$AUTORESPONDER" |perl -ne 'print lc "$1\n" if /to=<(.*?)>/' >/var/log/maillog-filtered.txt fi # Append existing Whitelist # cat /etc/magicspam/from_whitelist |awk '{print tolower($0)}' >> /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

Abschließend sollte ein Cron im Plesk eingerichtet werden, der via root, das Script einmal pro Stunde ausführt.
Bei uns ist dies „/var/www/vhost/bin/build-magic-whitelist.sh

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:

AIHoster

Der Magic Spam Log Filter Script im Detail

#!/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 a- Führt zu Fehler mailx -r $FROM -s "MagicSpam Report" -a $LOG.csv $TO < /var/log/magicspam-senders.csv # Cleanup # rm $LOG.csv rm /var/log/magicspam-senders.csv rm /var/log/magicspam-tmp.txt exit 0


MagicSpam
erzeugt in Plesk (oder anderen Systemen) einen automatischen Task, der um 0:00 Uhr die Logdateien rotiert. D.h. aus /var/log/mslog wird mslog.1, aus mslog.1 wird mslog.2 etc. Die letzte Datei mslog.8 wird gelöscht. Dann wird eine neue, leere mslog-Datei erzeugt in der wieder die aktuellen Einträge des neuen Tages landen.
Da wir /var/log/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.
Bei uns ist dies „/var/www/vhost/bin/filter-magic-spamlist.sh

AIHoster

2018-02-21T12:49:29+00:00 |Kategorien: HowTo, Linux, Plesk|Tags: , , , , , |Kommentare deaktiviert für MagicSpam: Auto Whitelisting und Log Filter

INFORMATION & SUPPORT

GESETZLICHE PFLICHT ZUR E-MAIL ARCHIVIERUNG

Wir beraten Sie ausführlich und verständlich zum Thema „Rechtssichere E-Mail-Archivierung“.

Aktuelle Beiträge