Bessere Analyse von spamassassin Regeln

Eine Übersicht über die zugetroffenen Regeln in spam oder ham mit spamassassin zu erlangen ist nicht einfach. Einerseits möchte man wissen welche Regeln wie zuverlässig in spam oder ham auftauchen und andererseits möchte man beispielhaft sich einzelne Mails Header anschauen. Dafür habe ich ein php script erstellt was diese Aufgabe erledigt.

Idee war es, alle Mails direkt auf dem Server zu analysieren und entweder eine Konsolen oder HTML Ausgabe zu generieren.

/opt/plesk/php/8.0/bin/php spam-overview.php
Auszug der Ausgabe Regeln von ham Mails
Auszug der Ausgabe Regeln von spam Mails
False positive Regeln in ham/spam

Dies kann man gut benutzen um z.B. mit grep einzelne Regeln zu filtern und offensichtlich falsch vergebene scores zu erkennen. In dem Beispiel die Regel FREEMAIL_FORGED_REPLYTO wurde 6 mal in Mails gefunden die nicht im Spam Ordner waren. Da aber t-online.de Mails darauf anspringen, aber kein spamer bei mir diesen „Fehler“ macht, ist diese Regel nutzlos und kann auf 0 gesetzt werden.

Möchte man sich die Mails genauer anschauen ist die Ausgabe in HTML praktisch. Da das php Skript auf allen Mails arbeitet und root Rechte dafür benötigt möchte ich nicht, dass es als Webseite direkt aufrufbar ist. Das Skript wird per cron-job ausgeführt und das HTML wird an einem konfigurierten Ort abgelegt, welcher zusätzlich per Passwort geschützt ist.

/opt/plesk/php/8.0/bin/php spam-overview.php html
HTML Ausgabe für die spam/ham Übersicht

Es werden 15 Mails (zufällig gesetztes Maximum) in dieser Übersicht verlinkt. Dort wird der Header und der Dateipfad zur Mail angezeigt.

Email Header

Voraussetzung ist das Format was in der oberen Abbildung zu sehen ist. Im Standard ist dies nicht so ausführlich, was ich bei der Analyse im Thunderbird (Quelltext anzeigen) nicht sehr hilfreich finde. Also habe ich dazu in der Datei „/etc/spamassassin/80_report.cf“ folgende Konfigurationseinstellung vorgenommen:

dd_header all Report _REPORT_

Nach einem Neustart des spamassassin Dienst sollte jede eingehende Mail diesen Header enthalten.

Das Script ist aufgeteilt in mehrere Dateien. In der config.php sollten man die Pfade seines Systems anpassen.

Offene Baustellen

  • Alle Mailheader werden beim Parsen im Speicher gleichzeitig gehalten. Bei vielen Mails oder einem langen Zeitraum verbraucht das Script viel RAM.
  • Spam/Ham wird anhand des Ordners und nicht anhand der Information im Header erkannt. Dadurch muss der Spam automatisch in den richtigen Ordner verschoben worden sein. Das ist nicht in jeder Konfiguration so.
  • Die Konfiguration wird nicht geprüft und ist sehr anfällig auf Fehleingaben. z.B: fehlendes „/“ am Ende eines Pfades.
  • Code ist nicht sauber programmiert (einfach schnell runter gehacked)
  • Code ist schlecht Dokumentiert

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert