Donnerstag, 8. März 2012

hMailServer SpamAssassin Integration

Heute geht's um die Integration des hervorragenden Spam-Filters "SpamAssassin" in einen hMailServer.



Ich bin hierzu bereits auf einige andere Blogs und Foren gestoßen, allerdings wurde dort meist schwerpunktmäßig beschrieben, wie der eigentlich Unix-basierte SpamAssassin in eine Windows-Umgebung integriert werden kann.

In den Beiträgen wurde zumeist beschrieben, wie SpamAssassin unter Verwendung der Skript-Sprache Perl auf einem Windows-System kompiliert werden kann. Auch wenn hier der Bastellust durchaus Anerkennung zu zollen ist, birgt dieser Weg doch einige Nachteile: Zunächst benötigt man hier die komplette Laufzeitumgebung von Perl. Danach sollte man mit Tools wie nmake und gcc vertraut sein und in der Lage sein unter Zuhilfenahme des Quellcodes der offiziellen Apache Seite ein eigenes Kompilat zu erzeugen. Der große Nachteil hierbei sind die hierfür notwendigen Perl-Module: Da diese für Windows oft nicht vorkompiliert erhältlich sind, muss man wiederum selbst Hand anlegen. Das heißt Modul suchen, herunterladen, und in den allermeisten Fällen ein paar notwendige Änderungen an deren Quellcode vornehmen, damit sie unter Windows fehlerfrei kompiliert werden können. Selbst wenn dieser Schritt gelingt, sind am Quellcode von SpamAssasin noch einige Änderungen vorzunehmen, damit dieser unter einem Windows-System annähernd stabil funktioniert.

Die andere, oft zu sehende Variante ist die Verwendung von SaWin32. Dort erhält man nebst vorkompiliertem SpamAssasin samt Runtime einen netten Mail Proxy zur einfachen Handhabung für den Endanwender. Leider ist das Projekt vor 5 Jahren eingestellt worden, entsprechend veraltet ist der dort vorzufindende SpamAssassin (Version 3.2.3). Die aktuelle Version ist 3.3.2. Auch wenn die Versionsnummer etwas anderes suggeriert: Der Unterschied bei der Erkennung von Spam ist gewaltig. Ich bin nicht mal sicher ob man in der Version 3.2.3 überhaupt noch von Spam-Filterung sprechen kann. Aktuelle Anti-Spam-Regeln wurden hierfür meines Wissens jedenfalls schon seit einer Ewigkeit nicht mehr veröffentlicht.

Sparen wir uns das also alles und nutzen den einfacheren Weg: "SpamAssassin for Windows"
Hierunter verbirgt sich eine aktuelle und ebenfalls vorkompilierte Windows-Variante von SpamAssassin, die ich im Zuge eines Praxissemesters beim Unternehmen JAM Software entwickelt habe.

Der Grund zur Verwendung von hMailServer liegt in dessen nativer Unterstützung eines SpamAssassin-Interfaces. Sofern Mail-Server und Spam-Filter auf dem gleichen Host laufen, gestaltet sich eine Installation und Konfiguration der beiden Komponenten extrem einfach.

Kommen wir zur Vorgehensweise:
  1. hMailServer herunterladen und installieren:
    http://www.hmailserver.com/index.php?page=download
  2. SpamAssassin for Windows herunterladen und installieren:
    http://www.jam-software.de/spamassassin/download.shtml
  3. Nach der Installation öffnet man eine Eingabeaufforderung und wechselt zum Installationsverzeichnis von SpamAssassin for Windows.
  4. Den SpamAssassin Daemon starten: spamd.exe



    Ggf. wird hier eine Firewall-Warnung erscheinen, diese sollte bestätigt werden um die Verwendung Netzwerk-basierter Spam-Tests zu ermöglichen.


  5. Wechsel zum hMailServer und dort unter Settings --> Anti-Spam  unter dem Reiter "SpamAssassin" das Häkchen bei "Use SpamAssassin" setzen. Mit dem Button "Test" kann nun die Funktionalität des Spam-Filters überprüft werden. 





Wenn alles funktioniert hat, sollten sowohl hMailServer als auch SpamAssassin eine Rückmeldung über die Verarbeitung der Test-Mail zurückgegeben:





Der unter X-Spam-Score angegebene Wert gibt Auskunft über den erreichten Spam-Score. Hier gilt, je höher de Wert, desto eher handelt es sich um Spam. In der Regel gilt eine E-Mail bei SpamAssassin ab einem Wert von 5 Punkten als Spam. Der extrem hohe Wert von 1000 wurde hier aufgrund der speziellen GTUBE-Regel erreicht, mit der Spam-Filter auf ihre Funktionalität hin überprüft werden.


Das war's soweit zur Integration des Spam-Filters. Es sei noch gesagt, dass man SpamAssassin am besten also Windows-Dienst betreiben sollte, da er mit der Zeit einen sehr hohen Speicherverbrauch aufweisen und somit instabil werden kann. Die Integration als Systemdienst soll hier allerdings nicht thematisiert werden.