Message Tracking Konfiguration

Exchange protokolliert jede übertragene Mail und diese Daten sind wichtig für Fehlersuche und statistische Auswertungen aber auch Analyse von Missbrauch. Sie können sowohl die Dauer als auch den Ablageplatz einstellen. Dabei sind aber einige Randparameter zu beachten:

Protokollierung (2007 und neuer) einstellen

Das Nachrichtenprotokoll ist bei Exchange per Default deaktiviert. Die Server legen dazu Informationen zu allen übertragenen Nachrichten in Textdateien ab, die auch über Netzwerkfreigaben zu erreichen sind. Seit Exchange 2007 erfolgt die Konfiguration am einfachsten über die Powershell

# Loggging generell ein oder ausschalten
Set-TransportServer <Identity> -MessageTrackingLogEnabled <$true | $false>
Set-MailboxServer -MessageTrackingLogEnabled <$true | $false>

# Pfad für die Logfiles vogeben
# Beachten Sie, dass Exchange Trusted Subsystem auch die Rechte dort hat
Set-TransportServer <Identity> -MessageTrackingLogPath
Set-MailboxServer <Identity> -MessageTrackingLogPath

#Obergrenzen vorgeben. Exchange entfernt alleine dann zu alte Logs
Set-TransportServer <Identity> -MessageTrackingLogMaxFileSize <FileSize>
Set-MailboxServer <Identity> -MessageTrackingLogMaxFileSize  <FileSize>
Set-TransportServer <Identity> -MessageTrackingLogMaxDirectorySize  <Size>
Set-MailboxServer <Identity> -MessageTrackingLogMaxDirectorySize <Size>
Set-TransportServer <Identity> -MessageTrackingLogMaxAge <age>
Set-MailboxServer <Identity> -MessageTrackingLogMaxAge <age>

# Optional das Logging des Betreff abschalten
Set-TransportServer <Identity> -MessageTrackingLogSubjectLoggingEnabled <$true|$false>
Set-MailboxServer <Identity> -MessageTrackingLogSubjectLoggingEnabled <$true|$false>

Da per Default diese Logs 30 Tage aufbewahrt werden, sammeln sich hier durchaus einige Gigabyte die per Default auch noch im Exchange Installationsverzeichnis landen, welches in vielen Fällen auf der Windows-Partition (C:) liegt.

Messagetracking Pfad verlagern

Es ist sehr einfach, den Pfad für das Messagetracking auf eine andere Partition zu verlagern, wenn Sie sich den Weg ersparen wollen eine eigene Partition als Mountpoint an das Verzeichnis anzuhängen. Mir ist bei der Verlagerung natürlich wichtig, dass die bisherigen Daten ebenfalls mit übertragen werden. Daher gehe ich wie folgt vor:

  • Neues Zielverzeichnis anlegen
    Angeblich legt Exchange das konfigurierte Verzeichnis auch selbst an, wenn er denn die Rechte dazu hat.
  • Berechtigungen setzen
    Hier passiert gerne der Fehler, dass Sie nach dem Anlegen des Verzeichnis darauf vertrauen, dass die Standard-Rechte schon passen. Dem ist aber nicht so, da der Exchange TransportService als "Network System" weniger Rechte hat als ein normaler "Local System"-Dienst.
    Stellen Sie daher sicher, dass neben den Administratoren und System auch "Network System" (Netzwerk Dienst) das Recht "Vollzugriff" auf das Verzeichnis hat. Der dies verpasst und zufällig im Eventlog nachschaut findet ansonsten folgende Meldung
Protokollname: Application
Quelle:        MSExchange Common
Ereignis-ID:   6004
Aufgabenkategorie:Protokollierung
Ebene:         Fehler
Schlüsselwörter:Klassisch
Benutzer:      Nicht zutreffend
Beschreibung:
MessageTrackingLogs: Fehler beim Schreiben von Protokollen aufgrund von Fehler: 
Der Zugriff auf den Pfad "C:\ExMessageTracking" wurde verweigert..
  • Transport Dienst beenden (stop-WindowsService MSExchangeTransport)
    Ich möchte in den nächsten Schritten auch die alten Daten mitnehmen und das geht nur fehlerfrei, wenn der Transport nicht zwischenzeitlich drauf schreibt. Achten Sie darauf, dass der Dienst nicht automatisch wieder z.B.: durch ein Monitoring o.ä, gestartet wird. Wenn Sie mehrere Exchange Server haben, dann werden andere Transport-Dienste die Arbeit übernehmen. Wenn alles zügig geht, dann ist die Unterbrechung nur wenige Sekunden und wird nicht bemerkt.
  • Beenden des Mail Submission Service
    Exchange hat nicht nur einen Dienst für die Postfachdatenbanken sondern auch den "Mail Submission Service", welcher die Mails aus dem Postausgang fischt und an den Transport übergibt. Den sollten Sie natürlich auch kurz anhalten.
  • Transport-Parameter anpassen
    Dann ist es an der Zeit die Einstellung zu ändern. Per Powershell ändere ich:
Set-TransportServer <Identity> -MessageTrackingLogPath D:\extracking
Set-MailboxServer <Identity> -MessageTrackingLogPath D:\extracking

Diese Einstellung landet idealerweise in einem lokalen Domaincontroller, der auch von den Exchange Servern genutzt wird und sollte nach weniger als einer Minute in der Site repliziert sein.

  • Alte Trackinglogs verlagern
    Diese Wartezeit nutze ich dazu, die Messagetrackinglogs aus dem bisherigen Verzeichnis in das neue Verzeichnis zu verlagern.
  • Dienste wieder starten
    Nun kann ich den Transport Dienst und den Submission Dienst wieder starten

Der Exchange Server sollte ganz einfach nun wieder das Mailrouting aufnehmen und im Messagetracking sollten entsprechende Einträge ankommen. Das lässt sich recht einfach mit folgendem Befehl prüfen:

get-messagetrackinglog -start (get-date).addminutes(-1)

Wenn Sie hier Einträge sehen UND das bisherige Verzeichnis für Messagetrackinglogs leer bleibt, dann haben Sie alles richtig gemacht.

Frühere Versionen

Ich denke nicht, dass diese Exchange Version noch in Betrieb sind, aber wenn jemand doch einmal so einen Neandertaler findet, habe ich die Stellen noch beschrieben:

  • Exchange 5.5
    Exchange Administrator starten
    - Systemaufsicht des Servers: Haltezeit für Logs einstellen (z.B. 30 Tage
    - MTA Standortkonfiguration Tracking aktivieren
    - IS Standortkonfiguration Tracking aktivieren
    - weitere Connectoren Tracking aktivieren
    Daten sammeln sich in der Freigabe "tracking.log"
  • Exchange 2000/2003
    Exchange System Manager
    - Eigenschaften des Servers: Tracking aktivieren
    - Eigenschaften des Servers: Haltezeit für Logs einstellen (z.B. 30 Tage)
    Daten liegen dann in der Freigabe "%servername%.log"

Über die Freigabe greifen Tools zu, die den Laufweg einer Nachricht durch das System nach erfolgen. Leider hat daher auch jeder Benutzer recht viele Rechte. Allerdings muss das nicht jeder Anwender tun. Daher sollten Sie die Rechte auf diese Freigabe passend einstellen.

Weiterhin können und sollten Sie je Server einstellen, wie lange diese Dateien gehalten werden. Standard sind 7 Tage, d.h. nach einer Woche löscht Exchange die älteren Dateien alleine. Die Einstellungen erfolgt über den Exchange Administrator in der Konfiguration der Site bei der Systemaufsicht. Jede Mail produziert ca. 500 Byte umfang, so dass sie auch bei 1000 Nachrichten gerade mal 500 Kilobyte erreichen. So können sie auch 30 Tage oder mehr als Verfallszeit einstellen. Aber kontrollieren Sie diese Dateien und deren Größe.

Es gibt keine weiteren Protokolldateien seitens des Internet Mail Connectors oder anderen Dienste, die für eine einfache Auswertung herangezogen werden können.

Ein Tipp am Rande. Die Protokolldateien landen auf ihrem Exchange Server und sind Textdateien. Sie sollten bei geringem Platz auf der Festplatte überlegen, das Verzeichnis zu komprimieren. Die Protokolldateien werden oft auf 1/4 des ursprünglichen Platzes verdichtet. Wer die Dateien mit einem Packer komprimiert, kommt oft auf noch geringere Dateigrößen. Das erlaubt es auch mehr als die üblichen 7 oder 30 letzten Tage zu archivieren.

Das Format Protokolldateien

Die Protokolldateien sind einfache Textdateien, welche einen einfachen Datensatzaufbau haben:

  • Die Datei enthält Datensätze aber keine Überschriften bzw. Feldbezeichnungen
  • Die Datensätze sind durch einen Leerzeile (CR LF) voneinander getrennt
  • Die einzelnen Felder sind durch einen Tabulator voneinander getrennt

Sie können mit entsprechenden Werkzeugen (z.B. Excel) die Datei problemlos öffnen und betrachten. Die Beschreibung der einzelnen Felder ist in der BPOSdokumentation beschrieben. Es gibt im Exchange 2000 und Exchange 5.5 Ressource Kit entsprechende Berichte (Lightversion von Seagate Crystal Reports) zur Auswertung. Die Formatbeschreibungen sind auf folgenden Seiten (Exchange 5.x, Exchange 2000/2003). Weitere Informationen zum Auswerten der Logs finden Sie auch unter Reporting.

In der Protokolldatei ist aber keine Information über den Inhalt der Mail oder Namen von Anlagen oder deren Inhalte verfügbar. Maximal der Betreff kann bei Exchange 2000/2003 mit protokolliert werden. Wenn hierzu Informationen notwendig sind, dann kann ab Exchange 5.5 SP2 das so genannte Nachrichtenjournal  (Siehe auch Nachrichten Archivieren mit Exchange)

Nachverfolgen mit Exchange Administrator

Eine einfache schnelle Auswertung ist mit dem Exchange Administrator möglich. über den Menüpunkt "Extras - Nachrichtenstatus" können die diese Protokolldateien dazu nutzen, den Verlauf einer Mail zu kontrollieren. Der Exchange Administrator liest dazu ihre Datei ein und wenn die Mail an einen anderen Server übergeben wurde, liest er auf diesem Server weiter. (Daher auch die Freigabe). So können Sie sehr genau nachvollziehen, wann eine Mail durch welches System gelaufen ist.

Seit Exchange 2000 SP3 und Exchange 2003 nutzt der Exchange System Manager nicht mehr die Freigabe, sondern fragt die Daten per WMI ab,

Entsprechend ist WMI in Firewall (speziell auf Windows XP mit SP2) freizuschalten. Siehe auch

  • 875605 How to troubleshoot WMI-related issues in Windows XP SP2

Für eine Abrechnung reichen diese Funktionen aber nicht aus. Hier ist eine andere Software gefragt. Siehe (MSXFAQ - Reporting)

Auswertung

Es gibt eine Menge von Auswerteprogrammen für die Exchange Quellen. Ein Muster finden Sie auf dem Exchange Team Blog

Und natürlich auf einigen anderen Seiten