Durch verschiedene Scanner können ein- und ausgehende Mails untersucht werden. ISPConfig setzt hierfür z.B. auf SpamAssassin, ClamAV und Amavis. Die einzelnen Schwellenwerte (dazu später mehr) können individuell definiert werden.
Damit Spammails nicht im eigentlichen Posteingang auftauchen, kann man Mails anhand Ihres Spam-Wertes automatisch in einen eigenen Ordner verschieben lassen. Dadurch sind solche Mails über einen IMAP-Client oder einen Webmailer sichtbar und das Risiko, eine irrtümlich als Spam eingestufte Mail nicht zu sehen, wird etwas geringer.
Vorsicht: wenn die Mails über POP3 abgeholt werden, führt das Verschieben dazu, dass die Mails nicht mit abgerufen werden. Sie liegen nicht mehr im Posteingang, sondern in einem Unterordner. Das Verschieben erfolgt immer direkt auf dem Server.
Ablauf eines Scans
- die Email wird von Postfix angenommen
- und an Amavis weitergegeben
- SpamAssassin and ClamAV are called by Amavis to test the mail
- Anhand verschiedener Spam-Regeln (siehe auch Aktuelle Regeln für SpamAssassin von schaal @it) bekommt die Mail verschiedene Angaben im Header
- Postfix bekommt die Mail von Amavis zurück
Aufbau eines Mailheaders
Wir lassen hier ganz bewusst die meisten Einträge aus einem Mailheader weg, da sie für das Erkennen bzw. Verschieben von Spammails nicht relevant sind. Die wesentlichen Zeilen eines Mailheaders sehen z.B. so aus:
X-Virus-Scanned: Debian amavisd-new at scan.schaal-it.net
X-Spam-Flag: YES
X-Spam-Score: 7.039 X-
Spam-Level: *******
X-Spam-Status: Yes, score=7.039 tagged_above=3 required=5 tests=[BAYES_50=0.8, DATE_IN_PAST_24_48=1.34, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RP_MATCHES_RCVD=-0.001, SCHAALIT_HEADER_964=5] autolearn=no
X-Virus-Scanned
Die erste Zeile zeigt an, welcher Scanner verwendet wurde. Wenn Du dort andere Angaben haben möchtest, kannst Du die Amavis-Config entsprechend anpassen. Bei Debian oder Ubuntu wäre das dann $X_HEADER_LINE in /etc/amavis/conf.d/20-debian_defaults.
X-Spam-Flag
Wenn hier YES steht, wurde die Mail als Spam eingestuft.
X-Spam-Score
Der X-Spam-Score ist der Wert, den SpamAssassin anhand seiner Filterregeln für die Mail ermittelt hat. In ISPConfig kannst Du unter Spamfilter – Richtlinien – Tag Level im Feld „SPAM Markierungslevel 2“ den Wert eintragen, ab dem eine Mail als Spam markiert werden soll (5.00 bei Trigger happy).
X-Spam-Level
Das ist der ganzzahlige Wert von X-Spam-Score in * – in unserem Fall ist der Score 7.039 und damit gibt es sieben Sternchen. Den Wert kann man mit eigenen Filter verwenden, falls man nicht doch gleich den X-Spam-Score nehmen will.
X-Spam-Status
This is the really interesting part. Let’s just divide it into its individual parts:
Yes, score=7.039 das ist letztliche das gleiche wie in X-Spam-Flag und X-Spam-Score.
tagged_above=3 gibt den Wert an, ab dem überhaupt die hier genannten Zeilen in den Header eingefügt werden sollen. Bei ISPConfig ist das der „SPAM Markierungslevel“ bei den Richtlinien.
required=5 ist der Wert, ab dem die Mail dann auch als Spam markiert wird und damit das X-Spam-Flag auf YES steht. Bei den Richtlinien ist das der „SPAM Markierungslevel 2“
tests= zeigt Dir an, welche einzelnen Regeln SpamAssassin angewendet hat und anhand welcher Regel es wie viele Punkte für diese Mail gab:
BAYES_50, DATE_IN_PAST_24_48 und SCHAALIT_HEADER_964 haben den Wert erhöht, die Signierung mit DKIM hat den Score insgesamt um 0.1 reduziert (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU) und RP_MATCHES_RCVD hat den Wert um 0.001 reduziert.
Insgesamt also:
0.8 + 1.34 + 5 = 7.14
0.1 – 0.1 – 0.1 = -0,1
– 0.001
Und damit haben wir den Score von 7.039
Wenn Du Dich für die Inhalte der Tests interessierst, findest Du die Regeln in verschiedenen Ordner in /var/lib/spamassassin. Als Beispiel nehmen wir die Regel SCHAALIT_HEADER_964:
header SCHAALIT_HEADER_964
From =~ /\@pkv.*\.(online|net|com|org|co|info|de)/
describe SCHAALIT_HEADER_964 schaal @it Spam Header-964
score SCHAALIT_HEADER_964 5
Die Regel bezieht sich auf die From-Zeile in der Mail. Dabei wird ein RegEx verwendet, der diverse Spam-Mails zum Thema Private Krankenversicherungen aussortiert.
Verschieben der Mail in den Spam-Ordner
Nachdem Postfix die Mail von Amavis zurückbekommen hat (siehe Ablauf eines Scans), wird die Mail entweder verschickt oder – wenn der Empfänger einer von unseren Usern ist – über Dovecot in das Postfach zugestellt.
Das lokale Zustellen der Mail durch Dovecot ist einer der entscheidenden Stellen: wurde die Mail vorher durch SpamAssassin als Spam markiert, so wird sie nicht in den Posteingang, sondern in den Unterordner Junk verschoben. Dazu muss bei ISPConfig für das Email-Konto bei den Email-Filtern der Haken bei „Spam E-Mails in das Junk Verzeichnis verschieben“ gesetzt sein.
Grundsätzliches zu den Filtern bei ISPConfig
- Für die Domain oder das Postfach muss ein Spamfilter ausgewählt sein. Wenn bei der Domain und dem Postfach ein Filter definiert ist, greift der vom Postfach. Hat nur die Domain einen Filter, greift dieser auch für das Postfach. Kurz: Postfach überschreibt Domain – nur so kann jeder User seine ganz individuellen Werte definieren. Wird ein Alias verwendet, dann gilt der für die Domain definierte Filter.
- Der ausgewählte Spamfilter muss so definiert sein, dass die entsprechenden Werte auch zu der Mail „passen“. Hätte unser Filter also einen SPAM Markierungslevel 2 von 10, wäre die Mail nicht als Spam markiert worden.
- Spam-Mails werden nur verschoben, wenn der entsprechende Haken bei „Spam E-Mails in das Junk Verzeichnis verschieben“ gesetzt ist.
- Richtlinien kann nur der Administrator ändern oder anlegen. Hätte jeder Nutzer die Möglichkeit, würde sich das auf alle Postfächer auswirken, die diesen Filter nutzen. Im Zweifel legst Du besser eine zusätzliche Richtlinie an.