Exchange belässt Mails in der Poison Queue nach E-Mail Header Modifikation

Bei diesem Artikel handelt es sich um Gastbeitrag von Sebastian Danisch. Vielen Dank an Sebastian für diesen Artikel und die Lösung.

Gastbeitrag von Sebastian Danisch

Ein Kollege von mir kam die Tage auf die glorreiche Idee über die Sophos UTM den E-Mail Header so zu modifizieren, dass er die Content-ID aus dem Header entfernt. Sein Hintergedanke war, dadurch die internen Systeme zu verschleiern. Worauf er nicht geachtet hatte war, dass diese Modifikation für ausnahmslos alle E-Mails gilt, welche die UTM passieren; also auch für eingehende.

Nachdem sich einige Kollegen gewundert hatten, dass doch seit zig Stunden keine E-Mails mehr eingegangen waren, habe ich mir die Sache einmal genauer angesehen. Die UTM hatte alle E-Mails brav an die Exchange Server abgegeben. Die Postfächer wussten hiervon jedoch freilich nichts.

Beim Blick in die Queue fiel mir dann ein neuer Eintrag auf. Die Poison Queue:

Exchange belässt Mails in der Posion Queue nach E-Mail Header Modifikation

Suchen im Internet zu dem Thema brachten wenig bis gar keine Erkenntnisse. Lediglich, dass Exchange diese Mails zurückhält, weil sie seiner Meinung nach Schaden auf dem Server anrichten können.

Nun gibt es keinen Weg Exchange dazu zu bringen, diese E-Mails doch bitte zuzustellen, also quasi aus der Quarantäne zu löschen.

Um die E-Mails nun zu retten, müssen wir die E-Mails erst einmal aus der Queue herauslösen und exportieren. Hierfür nutzen wir das Outlook lesbare .eml Format. In die Exchange Management-Shell wird also folgendes eingegeben:

Get-Message -Queue %SERVERNAME%\Poison -ResultSize Unlimited | ForEach-Object {$Temp="C:\PFAD_ZUR_WIEDERHERSTELLUNG\"+$_.InternetMessageID+".eml"; $Temp=$Temp.Replace("<","_"); $Temp=$Temp.Replace(">","_"); Export-Message $_.Identity | AssembleMessage -Path $Temp}

Hierdurch werden alle in der Poison Queue hängenden E-Mails in den vorher definierten Pfad als .eml Dateien exportiert. Für jede E-Mail wird eine Datei generiert, welche am Dateinamenanfang eine numerische Message-ID mit sich bringt.

Um die exportierten Mails nun einem weiteren Zustellungsversuch zuzuführen, gibt es bei Exchange das sogenannte Pickup Verzeichnis. Mails im, vom Exchange, lesbaren Format können hier einfach reingeschmissen werden. Das Verzeichnis ist hier zu finden:

  • %ExchangeInstallPath%\TransportRoles\Pickup

Die exportierten E-Mails kann man hier getrost alle auf einmal reinkopieren. Im besten Fall werden sie nun nacheinander in die einzelnen Postfächer verteilt.

Exchange belässt Mails in der Poison Queue nach E-Mail Header Modifikation

Übrigens werden die E-Mails durch den Export nicht aus der Poison Queue gelöscht. Dies kann man über die Nachrichtenflusskontrolle machen.

In unserem Fall gab es 3 E-Mails, welche auch beim Pickup wieder in der Poison Queue gelandet sind. Man kann in so einem Fall aber die E-Mails direkt mit Outlook öffnen und den jeweilen Benutzern zukommen lassen.

Anmerkung von Frank

Die Poison Queue gibt es seit Exchange 2007. In dieser Warteschlange hält Exchange Mails an, wenn er der Meinung ist, dass es sich um Mails handelt die eine Gefahr für die Stabilität der Systeme darstellen können. In dem von Sebastian beschriebenen Fall wurde durch ein vorgelagertes Gateway der E-Mail Header modifiziert, Exchange hat die modifizierten Mails dann als Gefahr eingestuft und in der Poison Queue angehalten. Ohne das Eingreifen eines Administrators wird Exchange nicht versuchen diese Mails zuzustellen. Hier findet sich eine kurze Doku zur Poison Queue:

Mit dem Export der Mails aus der Poison Queue in EML-Dateien lassen sich auch nachträglich wieder SMTP-Header hinzufügen. Beispielsweise lassen sich die EML-Dateien mit einem Editor öffnen um korrupte Header zu reparieren oder fehlende Header zu ergänzen.

Die Mails in der Poison Queue lassen sich auch ohne den Export in eine EML Datei erneut zustellen, hier lässt sich dann allerdings nicht der Header modifizieren, es besteht also die Gefahr dass die Mails wieder in der Poison Queue landen. Der erneute Zustellversuch ohne Export ist hier beschrieben:

Leave a Comment