Pipeline Tracing

Seit Exchange 2007 werden alle Mails immer über die E2K7:Hub/Transport-Rolle übertragen. Sogar Mails zwischen Postfächern auf dem gleichen Server werden vom Postfachspeicher einer Hub/Transport-Rolle angekündigt, welche dann die Mail aus dem Postausgang abholt, verarbeitet und zustellt.

Die Hub/Transport-Rolle übernimmt dabei eine ganze Menge an Veränderungen und Prüfungen der Mail z.B.

  • Empfangsbeschränkung beim Empfänger prüfen
  • Globale Quotas prüfen und anwenden
  • Transportregel anwenden
  • Transportarchiv anwenden
  • Messagetracking schreiben
  • Header in der Mail erweitern
  • Verteiler auflösen

Dies ist nur eine partielle Auflistung, weil die Transportrolle um weitere E2K7: Transportagents erweitert werden kann. Zwar protokollieren die Server viele Fehler schon im Eventlog oder im Messagetracking aber für eine genauere untersuchung, wann eine bestimmte Mail durch welchen Schritt korrumpiert wird, ist es erforderlich, die Mail als Kopie an allen zwischenschritten zu erhalten. Und genau das macht das Pipelinetracing, welches sie auf der Hub/Transport-Rolle aktivieren können.

Aktivieren des Pipeline Trace

Die Einstellung ist pro Hub/Transport-Rolle durchzuführen, durch welche eine fragliche Mail geroutet werden könnten. Die Aktivierung erfolgt über die PowerShell. Hier ein Beispiel um die Replikationsnachrichten eines öffentlichen Informationsspeichers zu untersuchen.

set-TransportServer `
-Identity SRV01`
-PipelineTracingEnabled $true `
-ContentConversionTracingEnabled $true `
-PipelineTracingPath "C:\Program Files\Microsoft\Exchange Server\TransportRoles\Logs\PipelineTracing" `
-PipelineTracingSenderAddress SRV01-IS@msxfaq.local

Die Hub/Transport-Rolle legt dann für jede neue Mail Im angegebenen Verzeichnis ein neues unterverzeichnis an, in welchem die Mails während der verschiedenen Abschnitte liegen.

Verzeichnis mit den Nachrichten

Auswerten der Dateien

Die Dateien selbst sind Textdateien die nach RC822 aufgebaut sind. Sie können also einfach diese mit Outlook Express oder Windows Mail oder jedem Texteditor öffnen. Im Texteditor sehen Sie dann auch zusätzliche Header, anhand denen Sie die Verarbeitung durch die einzelnen Agenten sehen können:

Message in Notepad

Die Hub/Transport-Rolle übernimmt auch die Arbeit, Nachrichten zu konvertieren. Es kann durchaus passieren, dass eben solche ein Konvertierung nicht erfolgreich abgeschlossen werden kann. Dann findet sich im Unterverzeichnis "ContentConversionTracing" je eine EML und eine TXT-Datei mit der problematischen Mails. Die Textdatei enthält den Hinweis auf den Fehler.

Microsoft.Exchange.Data.Storage.PropertyValidationException: Property validation failed. 
    Property = [{00020329-0000-0000-c000-000000000046}:'Keywords'] 
    Categories  Error = Element 0 in the multivalue property is invalid..


Microsoft.Exchange.Data.Storage.PropertyValidationException: Property validation failed. 
    Property = [{00062004-0000-0000-c000-000000000046}:0x8092] 
    Email2AddrType Error = Email2AddrType is too long: maximum length is 9, actual length is 25

FAIL 554 5.6.0 STOREDRV.Deliver.Exception.ObjectValidation 
    Failed to process message due to a permanent exception Microsoft.Exchange.Data.Storage.ObjectValidationException: 
    The object is invalid and cannot be saved

Der erste Fehler weist auf Kategorien hin während der zweite Fehler auf fehlerhafte Mailadressen in Kontaktordnern und Fehler 3 oft bei Terminen auftritt (fehlendes Endedatum etc.).

Abschalten der Dateien

Vergessen Sie am ende nicht wieder das "Pipeline Tracing" abzuschalten

set-TransportServer `
-PipelineTracingEnabled $false `
-ContentConversionTracingEnabled : $false

Transport Agenten

Über den Befehl "Get-transportPipeline" können Sie einfach sehen, welche Agenten an welcher Stelle des Systems eingebunden ist. Die Ausgabe zeigt auch gut, an welchen verschiedenen Stationen die Agenten aktiv werden.

Weitere Links