Spoofdetect Sink

Der Spoofdetect-Sink ist eine Beispiel, wie Sie mit einem SMTP-EventSink und etwas VBScript eingehende Nachrichten kennzeichnen können, wenn die Absenderadresse ihnen seltsam vorkommt.

Eine Absenderadresse ist besonders dann seltsam, wenn die Mail aus dem Internet kommt aber vorgibt, von intern zu kommen. Seit Exchange 2003 ist es z.B. möglich, solche Adressen gleich beim Empfang abzulehnen. Wenn Sie dies aber nicht wollen, dann sollten sie ihre Mitarbeiter zumindest dezent darauf hinweisen, dass die Mail von extern kommt und der Absender vermutlich nur vorgibt, von intern zu kommen.

Das Musterskript prüft einfach nur die FROM-Adresse auf die angegebenen Domänen bei allen per SMTP empfangenen Mails. In Umgebungen mit mehreren Mailservern und Gateways, die per SMTP einliefern, betrifft dies auch die interne Kommunikation und sorgt daher für Irritationen. Das Skript muss dann entsprechend erweitert werden oder Sie nutzen für den Empfang aus dem Internet einen eigenen virtuellen SMTP-Server

Unterstützung durch Net at Work:
Für individuelle Anpassungen können Sie gerne auf die Dienste von Net at Work zurückgreifen.

Die Funktion

Und Exchange bzw. genauer Outlook und OWA erlauben genau dies durch das Feld "X-Message-Flag" im Header, die beim Lesen der Mail mit angezeigt werden:

Das Skript klinkt sich in den virtuellen SMTP-Server als "Transport Event Sink" ein, um die Absenderadresse zu überprüfen und wenn diese der konfigurierten Domäne entspricht, wird das X-Message-Flag gesetzt und die Mail zur weiteren Verarbeitung an den SMTP-Server zurück übergeben.

Das Skript ist ein Muster und funktioniert in einer TestUmgebung fehlerfrei. Zur Funktion in einer produktiven Umgebung würde ich persönlich eine Fehlerbehandlung addieren und Performancetests durchführen wollen.

Debugging

Eine einfache Funktion zur Fehlersuche ist hingegen schon eingebaut. SMTPEventsinks sind nicht einfach zu debuggen, da Sie versteckt im Prozess des IIS ablaufen. Die effektivste Version ist dabei sicher die Ausgabe der Aktivitäten in einer Datei. Der Sink legt dazu eine LOG-Datei an, die immer weiter geschrieben wird.

Wenn das Skript in der Produktion eingesetzt wird, dann muss natürlich sichergestellt werden, dass dieses Debugging nicht den Server Ausbremst und letztlich zuviel Platz belegt.

Download

Das folgende Archiv enthält den Code des SMTP EventSinks und zwei Batchfiles zur Installation und Deinstallation. Das VBScript muss jedoch angepasst werden, ehe Sie es installieren dürfen

tools/spoofdetect.1.0.zip

Sie müssen vor dem Einsatz auf jeden Fall die eigene Domäne von "msxfaq.de" auf ihre Domäne umstellen. Wenn Sie sogar mehrere Domänen betreiben, dann muss das Skript erweitert werden. Zudem sollten Sie die Meldung für den Anwender vielleicht anpassen.

Weitere Verbesserungen

Neben den schon genannten Erweiterungen wären noch denkbar:

  • Unterscheidung Extern/Intern
    Aktuell kann der Sink interne Mails nicht von externen Mails unterscheiden. Wenn der Sink aber auch die IP-Adresse des einliefernden Systems prüfen würde, dann würde der Aufwand über mehrere virtuelle Server wegfallen.
  • LocalDomains aus den Richtlinien
    Das Skript könnte die Liste der lokalen Domänen direkt aus dem Active Directory auslesen, das diese in den Empfängerrichtlinien hinterlegt sind. Das würde eine Konfiguration weniger bedeuten.
  • COM statt VBScript
    Aus Aspekten der Performance wäre eine Lösung als COM-Komponente auf jeden Fall vorzuziehen. In dem Fall könnte der Sink auch "Cacheble" sein, so dass die CPU-Belastung weiter sinkt und die Abfragen der "LocalDomains" aus dem AD nicht jedes Mal erfolgen müsste.
  • Optimierung auf "FROM"
    Der Filter kann schon bei der Registrierung des Eventsink auf bestimmte Absenderdomänen beschränkt werden. So könnte mit einem "MAILFROM=*@firma.de" die Verarbeitung effektiver erfolgen.

Weitere Links