Windows: hMailServer und SpamAssassin

Spam-Mails sind ein lästiges Thema. Im Laufe der Jahre wurden viele Filter-Möglichkeit und Abwehrmassnahmen entwickelt. Eine längst etablierte Variante stellt dabei der SpamAssassin dar, ein open source Spam-Filter.

Dieser lässt sich mit wenig Aufwand in den Freeware-E-Mail-Server hMailServer integrieren.

SpamAssassin installieren

spamd.exe als Windows-Dienst einrichten

Da der Freeware-Spam-Assassin von JAM Software keinen Dienst enthält, muss man an dieser Stelle auf ein weiteres Tool zurückgreifen. Im Test funktionierte RunAsSvc (zumindest unter Windows XP) ohne Probleme.

  • RunAsSvc herunterladen und nach „C:\Programme\RunAsSvc“ entpacken.
  • Die „RunAsSvc.exe“ starten.
  • Unter „Dienstname“ einen Namen, z.B. SpamAssassin, eingeben.
  • Bei „Pfad zur Exe-Datei“ den Ordner und die Datei „spamd.exe“ angeben, z.B. „C:\Programme\JAM Software\SpamAssassin for Windows\spamd.exe“.
  • Optional: Möchte man ein Protokoll schreiben lassen, über die Aktivitäten des Spam-Filters, so kann man unter „Parameter“ zusätzlich noch „-l -s C:\SA\spamd.log“ angeben.
  • Abschließend auf die Schaltfläche „OK“ klicken.

Daraufhin wird der Dienst installiert und gestartet.

Alternativ kann auch srvany aus dem Windows Ressource Kit verwendet werden.

Automatische Aktualisierung

Damit der Spam-Filter regelmässig mit neuen Regeln versorgt wird, ist es notwendig, den Update-Prozess zu starten. Unter Windows lässt sich dies einfach über den Task-Planer realisieren.

  • Geplante Tasks (bis Windows XP/Server 2003) oder die Aufgabenplanung (ab Windows Vista(Server 2008) aufrufen.
  • Einen neuen Task bzw. eine neue Aufgabe anlegen.
  • Den gewünschten Zeitpunkt für die Aktualisierung angeben.
  • Es muss die Datei „sa-update.bat“ aus dem SpamAssassins-Ordner ausgeführt werden.
  • Optional: Möchte man ein Protokoll über die Aktualisierungen schreiben lassen, so kann dies durch das Anfügen von „>> C:\SA\sa-update.log“ bei „Ausführen“ (XP) bzw. „Parameter“ (Vista) erreicht werden.

Tipp: Ein ansprechenderes Protokoll erhält man, wenn man nachfolgendes Skript ausführen lässt:

@echo off
echo. >> C:\SA\sa-update.log
echo %date% %time% >> C:\SA\sa-update.log
echo. >> C:\SA\sa-update.log
call sa-update.bat >> C:\SA\sa-update.log
echo. >> C:\SA\sa-update.log
echo --- >> C:\SA\sa-update.log

Dieses Skript im SpamAssassins-Ordner ablegen.

Ein paar Anmerkungen zum Update-Intervall: SpamAssassin bezieht die Regeln aus unterschiedlichen Quellen, dadurch kann keine allgemein gültige Aussage getroffen werden, wann der optimale Zeitpunkt zum aktualisieren der Regeln ist. In der offiziellen Dokumentation wird erwähnt, das einmal am Tag ein guter Startpunkt wäre. Das sehen wir genauso, allerdings kann es in der Praxis durchaus vorkommen, das dennoch Spam durchkommt aufgrund nicht aktueller Regeln. Ein ein- oder zweistündlicher Intervall kann wiederum zu kurz sein, zumindest haben wir anhand des Protokolls öfters beobachtet, das in einem solchen Zeitraum keine Änderungen eingetreten sind. Als guter Durchschnittswert hat sich bislang eine Aktualisierung alle vier Stunden herausgestellt.

SpamAssassin in hMailServer integrieren

Der hMailServer bringt eine einfache Möglichkeit der Anbindung von SpamAssassin mit:

  • Den hMailServer-Administrator öffnen und am Server anmelden.
  • Zu  „Settings – Anti-spam“ wechseln.
  • Zur Registerkarte „SpamAssassin“ wechseln.
  • Den Haken bei „Use SpamAssassin“ setzen.
  • Sofern sich der SpamAssassin nicht auf dem gleichen Computer befindet noch die Felder „Host name“ und ggf. „TCP/IP port“ konfigurieren.
  • Zur Überprüfung der Funktion auf die Schaltfläche „Test…“ klicken.
  • Abschließend auf die Schaltfläche „Save“ klicken.

Quellen:

hMailServer – Documentation – v5.3 – Anti-spam

How To Configure SpamAssassin for HMailserver in Windows Server 2003

Update 26.01.2013

Nach den ersten drei Tagen des Betriebs kann ich sagen, es funktioniert sehr gut und vor allem besser als nur mit der Blacklist die im hMailServer vorkonfiguriert ist.

An False Positive gab es bislang nur lediglich eine E-Mail. Dabei handelt es sich um den Newsletter der ESM Computer GmbH. Erfahrungsgemäß ist es keine Seltenheit das Newsletter von Spamfiltern geblockt werden. Abhilfe schafft das Whitelisten von bestimmten Adressen oder Domänen.

In der hier realisierten Kombination gibt es nun zwei Möglichkeiten:

  1. Die Whitelist im hMailServer konfigurieren oder
  2. die Whitelist im SpamAssassin konfigurieren.

In diesem Fall macht es aufgrund der Tatsache, das mehrere unabhängige Filter verwendet werden, Sinn, direkt im hMailServer die Whitelist zu konfigurieren.

Möchte man dennoch die Konfiguration des SpamAssassin ändern, so findet man die Konfigurationsdatei unter

C:\Programme\JAM Software\SpamAssassin for Windows\etc\spamassassin\local.cf

Update 22.11.2013

Findet man unter „C:\SA\sa-update.log“ folgende Einträge

Update failed, exiting with code 4

und beobachtet beim manuellen Ausführen folgende Meldungen

channel: no 'mirrors.khop-bl.sa.khopesh.com' record found, channel failed
channel: no 'mirrors.khop-general.sa.khopesh.com' record found, channel failed
channel: no 'mirrors.khop-sc-neighbors.sa.khopesh.com' record found, channel failed

so liegt das daran, das die Listen unter *.khopesh.com wohl nicht (mehr) gepflegt werden. Um den Fehler zu beheben, kann man unter

C:\Programme\JAM Software\SpamAssassin for Windows\UpdateChannels.txt

die entsprechenden Einträge jeweils mit einer # auskommentieren oder löschen. Beim nächsten Update gibt es diese Fehlermeldungen dann nicht mehr.

13 Kommentare

  • Sollte ich das „Use score from SpamAssassin“ nutzen oder nicht?

    Habe mir die Dokumentation dazu durchgelesen, und bin unschlüssig, ob das gut oder schlecht ist.

  • Hallo Uwe,

    eindeutig beantworten kann ich es leider nicht.
    Ich glaube ich hab‘ das nie verwenden und war mit dem Eregebnis dennoch zufrieden.
    Grundsätzlich kommt es aber wohl auch immer auf das Spamaufkommen und weitere Tests darauf an.
    Im Zweifelsfall einfach mal mit und ohne testen und beobachten, wie es sich verhält.

  • Okay, vielen Dank, ich probiere es mal mit dem Haken aus und beobachte, wie es sich verhält.

  • Hallo Andy,

    Dank deiner Anleitung habe ich SpamAssassin in HMailServer integriert. Nun wollte ich das Ganze testen und habe eine E-Mail an den Account der von HMailServer verwaltet wird geschickt. Inhalt der Mail ist ein String, den ich auf einer Seite gefunden habe und immer als Spam erkannt werden soll (ich packe ihn mal besser nicht hier in den Kommentar).

    Scheinbar wird die Mail von SpamAssassin nicht erkannt. Es erscheint kein Hinweis im Header der Mail und auch das [SPAM] wird nicht in den Betreff der Mail eingefügt. Mein dahinter liegender Thunderbird-Mail-Client stuft die Mail aber richtigerweise als Spam ein.

    Wo kann ich schauen, was da schief läuft?

  • Hallo Carsten,

    am besten mal die Protokollierung im hMS als auch für SA aktivieren und das Ganze nochmal prüfen.

    hMailServer – Documentation – Latest – Logging

    Zunächst sollte man schauen, ob die Mail(s) überhaupt beim SA ankommen.

  • Die Hacken habe ich alle gesetzt, es wird allerdings nur ein hmailserver-log geschrieben. In diesem kann ich sehen, wie die Mail vom Provider abgeholt wird. Von SA sehe ich da nichts.

  • Erstellt denn der SA ein Log (Einrichtung siehe Beitrag)?

  • Nein, es sieht nicht danach aus. Mit dem entsprechenden Parameter gestartet, aber es wird kein Log-File erzeugt. Bei den Diensten sehe ich den Dienst allerdings und kann ich auch beenden/starten.

  • Ok, nachdem ich den Ordner C:SA angelegt und den Dienst neu gestartet habe, wurde auch eine spamd.log angelegt. Allerdings leer.

  • Hm, der Beitrag ist ja bereits gut fünf Jahre alt, keine Ahnung, ob das alles so heute noch funktioniert.
    Evtl. mal den SA nicht als Dienst sondern z.B. in einer Eingabeaufforderung starten und sich die Meldungen ansehen.

    Hat denn der Test-Button aus HMS heraus funktioniert?

  • Die Meldungen in der Konsole gestartet besagen, dass SA auf 127.0.0.1 Port 783 läuft, soweit also gut. Und auch der Test in HMS zeigt mir ein Fenster, welches eine SA Mail zeigt.

    Ich probiere noch ein wenig weiter. Danke dir für deine Hilfe.

  • Was mir da noch einfällt:

    Es kommt darauf an, wie die Mails zum HMS gelangen, soll heißen:

    Direkt per SMTP klappt es ohne Umschweife.
    Werden Mails allerdings pro Account von einem externen Provider abgerufen, so muss im „External Account“ „Anti-spam“ aktiviert sein.

  • Genau das war es. Das hatte ich vergessen zu aktivieren. Und nun wird meine Test-Spam-Mail richtig erkannt.

    Ich danke dir und wünsche ein schönes Wochenende.

Schreibe einen Kommentar

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