Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Was fehlt?

Es liegt in der Natur der Sache: Ein Wiki ist niemals fertig. Wir geben uns große Mühe, mit der Entwicklung Schritt zu halten; lassen Supportanfragen direkt in neue Artikel einfließen … aber auch wir sind nicht perfekt. Wenn du hier nicht fündig wirst: Nicht schmollen - Bescheid sagen! Unter hallo@uberspace.de steht dir unser Team gerne bereit. Hand drauf!

mail:spamassassin

SpamAssassin

SpamAssassin ist eine in Perl entwickelte freie Software unter der Apache-Lizenz die auch auf dem Uberspace zur Verfügung steht und verwendet werden kann um Spam in E-Mails zu erkennen. Das Programm arbeitet so, dass es nach einem vorliegenden Regelwerk eine E-Mail einliest und diese mit Punkten bewertet und anhand der dann addierten Gesamtsumme dieser Punkte (dem sogenannten Schwellenwert) einstuft ob es sich bei dieser E-Mail um Spam handelt oder nicht. Das Regelwerk basiert auf regulären Ausdrücken die entweder auf Inhalte einer E-Mail zutreffen oder nicht. Dieses vorgegebene Regelwerk kann natürlich durch zusätzliche und auch eigene Regeln erweitert werden.

Hinzu kommt, dass im SpamAssassin noch andere Filter eingebunden werden können um den zu ermittelnden Schwellenwert noch eindeutiger festzulegen. Die gebräuchlichsten Filter wären hier Razor, pyzor oder DCC. Viele dieser Filter arbeiten mit Prüf- oder Checksummen die über den Inhalt oder über Teile der E-Mail gebildet werden. Diese werden zum Abgleich herangezogen um sie mit auf externen Servern hinterlegten und als Spam eingestuften Checksummen zu vergleichen.

SpamAssassin auf einem Uberspace-Server

Auf unseren Uberspace-Servern ist schon ein SpamAssassin installiert und dieser wird von uns natürlich auch gepflegt und auf den neusten Stand gehalten. Wir binden zusätzlich das Regelwerk von ZMI (German Language Ruleset) ein. Alle Regelwerke werden alle 3 Stunden automatisch aktualisiert. Der SpamAssassin ist bei uns nicht in den Mailserver integriert da wir auf den Uberspace-Servern keine inhaltsbasierte Vorfilterung vornehmen wollen (wir nehmen lediglich keine Mails von Hosts an, die auf Blacklists aufgeführt werden, unabhängig von ihrem Inhalt). Eine Filterung von E-Mails kann von Dir aber in den Zustellungsprozess in ein Postfach eingebunden werden oder vor der Weiterleitung an eine andere E-Mail-Adresse erfolgen.

Verwendung des SpamAssassin

Nutzung des spamc

Es läuft auf den Servern ein SpamAssassin-Daemon (der spamd) den du mit dem SpamAssassin-Client (dem spamc) ansprechen kannst. Der spamd ist auf den Servern wie folgt konfiguriert:

  • Ausgabe sämtlicher Header (X-Spam-Checker-Version, X-Spam-Level und X-Spam-Status)
  • Ausgabe zusätzlicher Header bei Spamerkennung (X-Spam-Report und X-Spam-Flag)
  • Bewertung als Spam ab Spamscore (Schwellenwert) 5.0
  • Umschreibung des Subjects in Subject: [SPAM] <Ursprüngliches Subject>

Die Einbindung in den Zustellprozess einer E-Mail erfolgt am einfachsten via maildrop. Wie du den spamc hier ansprichst und das Ergebnis des SpamAssassin zur weiteren Filterung nutzt, kannst du in der maildrop Dokumentation nachlesen. Hier gibt es dann auch gleich ein paar praktische Beispiele.

Nutzung des spamassassin

Alternativ, aber nicht so performant, ist die Nutzung des SpamAssassin an sich. Auch hier hilft dir wieder maildrop um den Aufruf in den Zustellprozess der E-Mail einzubinden:

xfilter "/usr/bin/spamassassin -x"

Das -x sorgt dafür das kein user preferences file (also keine Userkonfigurationsdatei) erstellt wird. Wenn der Aufruf ohne das -x erfolgt liegt in deinem Heimatverzeichnis ein Verzeichnis .spamassassin mit einer Konfigurationsdatei user_prefs die bei jedem Aufruf von /usr/bin/spamassassin herangezogen wird. Aber beachte das diese Einbindung des SpamAssassin wirklich sehr unperformant ist und ein Filterungsprozess ein bisschen dauern kann da bei jedem Aufruf der SpamAssassin komplett gestartet werden muss und er nach dem Aufruf auch nicht weiter zur Verfügung steht.

Hier geht es darum, dass maildrop den SpamAssassin aufruft um die aktuell zuzustellende E-Mail auf Spam zu untersuchen. Auf den Uberspace-Servern läuft standardmäßig ein spamd (also ein systemweiter Dienst) der von dir mit Hilfe des spamc (der SpamAssassin Client) angesprochen werden kann. Der spamd ist so konfiguriert das er zu jeder E-Mail die er filtert alle wichtigen Headerzeile mit ausgibt. Diese wären in jedem Fall:

X-Spam-Checker-Version: Hier wird die Version des SpamAssassin angegeben und der Host auf dem dieser läuft.
X-Spam-Level: Hier wird die Spamscore durch die Angabe von * angegeben wobei jedes * die Spamscore um 1 erhöht. Als Beispiel wäre ein Level von * * * * eine Spamscore zwischen 4.0 und 4.9
X-Spam-Status: Hier wird die Spamscore, das Limit ab welcher Score die E-Mail als Spam angesehen wird, und die Ergebnisse des Checks angegeben. Als Beispiel bedeutet ein Status „Yes, score=6.4 required=5.0 tests=HTML_MESSAGE,HTML_MIME_NO_HTML_TAG,…“ das die E-Mail als Spam eingestuft wurde weil sie eine Score von über 5.0 aufweist. Beim Überprüfen führten die Checks „HTML_MESSAGE,HTML_MIME_NO_HTML_TAG,..“ zu einer Gesamtscore von 6.4

Im Fall dass der SpamAssassin die E-Mail als Spam bewertet werden zusätzlich folgende Zeilen hinzugefügt:

X-Spam-Flag: Die Headerzeile „X-Spam-Flag: YES“ sollte es nur geben wenn die E-Mail tatsächlich als Spam eingestuft wurde. Es reichte also aus, den Filter so zu setzen dass die E-Mail dann z.B. in den Ordner „Spam“ verschoben wurde. Leider ist AOL dann auf die Idee gekommen die Headerzeile „X-Spam-Flag: NO“ einzuführen was dann erst einmal Verwirrung gestiftet hat, da plötzlich Unmengen an E-Mails von AOL-Adressen als Spam eingestuft wurden. Seit dem reicht es nicht aus den Header „X-Spam-Flag:“ auszulesen, es muss auch der Wert „YES“ im Filter berücksichtigt werden.
X-Spam-Report: Hier wird detailliert angegeben wie sich die Spamscore ganz genau zusammensetzt. Das kann hilfreich sein um den Absender zu informieren was er ggf. am Aufbau seiner E-Mail ändern sollte.

Betrieb eines eigenen spamd

Du kannst auch, um deine eigene SpamAssassin-Konfiguration zu nutzen, selbst einen spamd auf deinem Uberspace betreiben. Diesen kannst Du als Dienst unter den daemontools laufen lassen. Für diesen Fall haben wir das Skript uberspace-setup-spamd geschrieben was du auf der Kommadozeile einfach ausführen kannst. Das würde dann wie folgt aussehen:

[suzi@eridanus ~]$ uberspace-setup-spamd 
Create config directory ~/.spamassassin
Create default spamd config ~/.spamassassin/user_prefs
Creating the ~/etc/run-spamd/run service run script
Creating the ~/etc/run-spamd/log/run logging run script
Symlinking ~/etc/run-spamd to ~/service/spamd to start the service
Waiting for the service to start ... 1 2 3 started!
 
Congratulations - You can now reach your dedicated spamd!
To connect to your own spamd you can use spamc with the option "--socket=/home/suzi/tmp/spamd.sock"

Deine Konfiguration für den spamd findest du jetzt unter ~/.spamassassin/user_prefs. Wenn du zum Beispiel den Schwellenwert heraufsetzen, Adressen in eine White- oder Blacklist einfügen oder das Subject bei Spamverdacht umschreiben möchtest, dann kannst Du diese Änderungen hier vornehmen. Hier findest du übrigens weitere Informationen zur SpamAssassin Konfiguration.

Wenn der spamc jetzt über das maildrop aufgerufen wird, dann muss man dem spamc noch den Socket mitteilen über den er den spamd nun ansprechen soll. Ansonsten würde er den spamd nutzen der global zur Verfügung steht.

xfilter "/usr/bin/spamc --socket=/home/suzi/tmp/spamd.sock"
mail/spamassassin.txt · Zuletzt geändert: 2015/05/08 11:34 von uber