SMTP-Clients

Alle Skripte sind Muster ohne jede Gewährleistung oder Funktionsgarantie. für Schäden bin ich nicht verantwortlich. Achten Sie auf Zeilenumbrüche bei der Übernahme.

Für die Übertragung von Nachrichten wird bei Exchange 2000/2003 der Windows SMTP-Dienst genutzt. Allerdings nutzen den nicht nur die Exchange Server selbst, sondern eben auch andere Dienste, die bei Exchange Nachrichten "einstellen".

Das könne zum einen normale "Anwender" sein, die einfach per Outlook Express eine Mail an ihre Exchange Organisation senden. Es kann aber auch Systeme geben, die über ihren Exchange Server eine Mail in das Internet senden müssen und ihren Exchange Server als "Relay" verwenden.

Normalerweise ist Exchange nicht als offenes Relay konfiguriert und der Versand damit nicht möglich. Korrekt wäre nun natürlich, die fraglichen Endgeräte bzw. Versender zu benennen und auf "SMTP authentifiziert senden" umzustellen oder wenn dies nicht geht, die Empfänger als Kontakte für Relay frei zuschalten (Siehe Weiterleitungen) oder notfalls die IP-Adresse für Relay zuzulassen. (Details siehe Relay mit Exchange 2000).

Nur allzu oft wissen Sie gar nicht, welche Systeme ihren Exchange Server als Relay benutzen und um erst einmal die Funktion zu erhalten (Speziell nach Migrationen von anderen Mailsystem ohne Schutz) öffnen Sie auch Exchange als Relay. Das sollte aber kein Dauerzustand bleiben.

Das Skript auf dieser Seite wertet die SMTP-Protokolle des virtuellen SMTP-Servers aus, um die Verwendung durch Clients zu ermitteln. Dazu werden alle Protokolldateien des angegebenen Verzeichnisses eingelesen und die IP-Adresse der Clients zusammengesucht. So haben Sie dann eine Liste der IP-Adressen, die Sie dann abgehen können. "Normalerweise" befinden sich in dieser Liste nur andere Exchange Server und SMTP-Clients. Bei einer direkten Verbindung aus dem Internet finden Sie natürlich auch diese hier wieder, wenn Sie kein Relay oder SMTP-Proxy zwischen Internet und Exchange haben.

SMTP Protokollierung einschalten

Damit dies funktioniert,  muss der SMTP-Server natürlich protokollieren. Die Minimaleinstellungen sind:

Sie müssen das Protokoll aktivieren und in den Eigenschaften sollten sie mindestens Datum, Zeit und Client-IP eintragen.

Das Ergebnis ist eine Protokolldatei pro Tag in der Form:

Natürlich können Sie auch mehr Daten protokollieren lassen. Beachten Sie dabei aber den eventuell erforderlichen Speicherbedarf auf der Festplatte. Normalerweise liegen die Protokolle auf "C:\WINDOWS\system32\Logfiles\SMTPSVC1\" und füllen dann die Systempartition auf.

Arbeitsweise des Scripts

Das Script mach dann folgenden:

  • öffnet alle Dateien "ex*.log" nacheinander und liest diese zeilenweise ein
  • Alle Zeilen mit einer "#" werden übersprungen.
  • Alle anderen Zeilen werden mit der Funktion "SPLIT" in einzelne Felder getrennt und das dritte Feld als C-IP in einem Array gespeichert bzw. die Zahl der Vorkommen erhöht
  • Am Ende wird dieses Array auf dem Bildschirm und als XML-Datei ausgegeben.

Achtung:
Wenn Sie ein anderes LOGFILE-Format wählen, bei dem die ClientIP an anderer Stelle steht, müssen Sie das Script entsprechend anpassen.

Natürlich gibt es auch bei diesem Script ein passendes Stylesheet (XSLT) um die Daten schön im Browser anzuzeigen.

Aufruf

Laden Sie sich das Script herunter und starten Sie es mit der Angabe des Pfades, in dem die Protokolldateien liegen.

smtpclient.1.2.vbs.txt

Beim Aufruf müssen Sie den Pfad der Protokolldateien mit angeben

cscript SMTPCLIENT.VBS C:\WINDOWS\system32\Logfiles\SMTPSVC1

Die Auswertung mehrere Megabytes an Protokolldateien kann einige Zeit dauern. Bitte haben Sie hier etwas Geduld.

Ausgabe

Die Ausgabe erfolgt dann wieder wie von anderen Scripten gewohnt als XML-Datei mit passendem Stylesheet zur Anzeige oder Weiterverarbeitung.

Durch einen einfachen Start der XML-Datei öffnet sich der Internet Explorer und zeigt die Daten an.

So sollten Sie sehr schnell einen Überblick erhalten, welche IP-Adressen wie oft in den Logfiles vorkommen. für jede IP-Adresse müssen Sie prüfen, ob sich diese an Exchange anmeldet oder  nur Nachrichten an ihre Organisation zustellt oder anonym ihr Exchange als Relay verwenden will. Im letzteren Fall müssen Sie bzw. der Betreiber des anderen Systems aktiv werden,  wenn die Abschaltung des offenen Relays vorgenommen wird.

Geplante Weiterentwicklung

Sicher kommt mit den ersten Schritten der Wunsch nach mehr.

  • So könnte so ein Script auch ähnlich einen TAIL die Dateien permanent überwachen und damit sogar Missbrauch erkennen.
  • Auch eine Auswertung unter Berücksichtigung der Zeit und des Volumens wäre ganz interessant. Eleganter weise schreibt Exchange ja die Daten im W3C-Format, so dass sie auch einfach die Daten z.B. mit Reportingtools für Webseiten auswerten lassen
  • Eventlogvariante
    Neuere Exchange Versionen erlauben die Verbindungsaufnahme im Eventlog zu protokollieren. Dann könnte sogar ein Trigger sofort aktiv werden, z.B.: wenn ein unerlaubter Client eine Verbindung versucht.