Exchange und NDRs

Normalerweise senden sich Personen per Mail Nachrichten mit korrekten Adressen zu. Allerdings wird es immer wieder passieren, dass Nachrichten aus verschiedenen Gründen nicht zustellbar sind und der Absender darüber informiert werden muss. Dies sind dann "Non Delivery Reports (NDR). Sehr häufig gibt es aber auch falsche NDRs, die durch Spammer oder Viren verursacht werden. Siehe auch Spam und NDR.

Quelle des NDR

SMTP-Nachrichten werden prinzipiell von einem MTA übertragen. Sie liefern ihre Mail bei ihrem eigenen MTA ein, welcher dieser direkt oder über Zwischenstationen (Relay) an den Empfänger zustellt.

Und an jeder Stelle kann ihnen eine Unzustellbarkeit zugesendet werden

Nun kann aber nicht jeder Mailserver für eine Unzustellbarkeit sein eigenes Format verwenden. Auch hierzu gibt es eine RFCals Standardisierung.

Der Mailserver hat bei der Rücksendung der Unzustellbarkeit sogar die Wahl, ob die original Nachricht in den Body eingebettet oder als Anlage angefügt wird. Hier eine Unzustellbarkeit von GMX:

Exchange hingegen sendet Unzustellbarkeiten mit der Originalmails als Anlage. Das ist ebenfalls RFC-konform und erlaubt dem Anwender einfacher, die Mail erneut zu senden.

Probleme mit NDRs

Solange ein Absender eine Nachricht versendet, ist er sicher froh, wenn das System die Unzustellbarkeit mitteilt. Aber es gibt durchaus auch negative Effekte bei der Erstellung und Übermittlung von Unzustellbarkeiten.

Einige Firmen und Personen gehen sogar soweit, die Unzustellbarkeiten auch schon zu filtern oder nicht mehr zu erstellen. Genau genommen ist dies natürlich eine Verletzung der RFC aber auf der anderen Seite hat natürlich niemand was davon, wenn ihre Mailserver tausende NDRs an unbeteiligte Personen sendet oder ihre Warteschlange überläuft.

Zukünftig erwarte ich, dass die empfangenden Mailserver die Mails direkt annehmen und bei Spam oder Viren die Verbindung ablehnen und damit die Erstellung des NDR dem sendenden Server übertragen. Und diese Server sind dann entweder die vertrauenswürdigen Kommunikationspartner. Spammer und Viren werden einfach ihre Mails nicht mehr los.

Exchange und NDRs

Nun stellt sich die Frage, wie konsequent Exchange mit den NDR-Meldungen umgehen und diese erstellt. Ist Exchange mit den aktuellen RFC-Standards kompatibel ? Laut einer Äußerung von David Lemson auf http://blogs.msdn.com/dlemson/archive/2004/07/02/172281.aspx ist Exchange 2000 und höher wirklich konform zu den aktuellen RFCs. Das war mit Exchange 5.x vielleicht nicht in jeder Hinsicht so. Aber Exchange 2000/2003 und Outlook haben auch eine zusätzliche Funktion, damit Anwender mit den Unzustellbarkeiten einfacher umgehen können. Diese stößt aber nicht immer auf ungeteilte Zustimmung.

Vermeiden von NDRs

Der sicher eleganteste Weg ist es, Mails an ungültige Empfänger überhaupt nicht anzunehmen. Dazu ist Exchange mit der Empfängerfilterung recht einfach in der Lage. Diese aktivieren Sie an zwei Stellen.

Zuerst müssen Sie in den globalen Einstellungen über eine Checkbox aktivieren

   

Zudem müssen Sie die Verbindungsfilterung beim virtuellen SMTP-Server aktivieren.

Das bedeutet aber auch, dass Exchange direkt von außen erreichbar sein muss oder ein System davor als Proxy agiert. Wenn Sie zwischen Exchange und Internet jedoch ein Relay haben, dann würde das Relay die Mail von extern annehmen, nicht zustellen können und ebenfalls NDRs erzeugen. Dann sollten Sie prüfen, ob Sie auf diesem Relay schon eine Userverifikation aktivieren können. Eine Liste aller gültigen internen SMTP-Adressen erhalten Sie z.B. mit VBS:SMTPList.

ACHTUNG:
Diese Einstellungen greifen nicht, wenn Sie Relay-Funktionen konfiguriert haben.

Relay-Funktionen können Sie in Exchange 2003 auf mehrere Arten einstellen

Exchange erkennt und verändert NDRs

Das Problem der meisten von Systemen generierten Quittungen ist, dass viele Anwender nicht so sehr viel damit anfangen können. Es sind Systemmeldungen mit teilweise nicht einfach zu verstehenden Meldungen. Ein Administrator wird sicher mit den verschiedenen SMTP-Status Codes die Ursache des Fehlers ermitteln können, aber Anwender sind damit manchmal überfordert. Die meisten Server senden die Fehlermeldungen zudem in Englisch.

Genau genommen sieht eine Quittung in etwas so aus (Auszug):

Für einen Administrator aussagekräftig, aber für Anwender weniger brauchbar. Microsoft hat Exchange 2000/2003 mit der Funktion ausgestattet, eingehende Quittungen zu erkennen, zu analysieren und durch eigene Fehlermeldungen zu ersetzen. Dazu wird die originale Unzustellbarkeit an eine eigens erstellte Meldung als Anlage beigefügt. In Outlook sieht das ganze dann so aus:

Die originale Unzustellbarkeit ist komplett unterschlagen worden. Aber oben links gibt es die Schaltfläche "Erneut Senden". Outlook kann also die originale Mail, welche an der NDR-Nachrichten verborgen mit angehängt ist, erneut senden. Auch OWA nutzt diese Besonderheit von Exchange.

Was sich dahinter verbirgt, kann man mittels POP3 und Outlook Express ansehen. Die Unzustellbarkeit kommt an und wird konvertiert. Outlook Express liest diese Unzustellbarkeit und zeigt die Exchange Meldung an. Zusätzlich sind hier aber deutlich zwei Anlagen zu erkennen. Die erste Anlage enthält die komplette ausgehende Originalmail. Damit kann Outlook diese auch wieder "erneut senden".  Die zweite Anlage enthält die eigentliche Unzustellbarkeit der Gegenseite.

Outlook Express kann also nicht dies Funktion "erneut senden" nutzen. Was Microsoft hier mit Exchange 2000/2003 macht ist interessant, da man damit anscheinend nicht einmal die RFC als solches verletzt, sondern einen Mehrwert für den Anwender schafft. Allerdings habe ich da doch meine Zweifel, ob das so bis ins Ende durchdacht ist.

Exchange 2007 Unzustellbarkeitsmeldung an Administratorpostfach

Mit Exchange 2007 wird der Windows SMTP-Server nicht mehr genutzt. Hier ist dann die Transport-Rolle für den Empfang und die Übertragung der Nachrichten per SMTP zuständig und damit auch für die Erkennung von unzustellbaren Mails und der Erstellung der NDRs.

Auch hier kann Exchange so konfiguriert werden, dass eine Kopie der Unzustellbar an ein besonderes Postfach z.B.: zwecks Fehlersuche gesendet wird.

# Internet NDRS in eine Mailbox zustellen
Set-OrganizationConfig -MicrosoftExchangeRecipientReplyRecipient postmaster@firma.tld

# externe NDRs als Kopie
Set-TransportConfig -GenerateCopyOfDSNFor 5.4.8, 5.4.6, 5.7.1, 5.7.2

# Festlegen der NDR From Adresse die zugleich auch Kopieempfaenger ist
Get-TransportServer | Set-TransportServer -ExternalPostmasterAddress postmaster@firma.tld

NDR Richtung
Diese Einstellung gilt nur für NDRs, die Exchange selbst erstellt, aber nicht für NDRs die Exchange von draußen empfängt !!!.

NDR Konvertierung abschalten

Es hat etwas gedauert, bis ich die Funktion gefunden habe, mit der man dieses Verhalten abschalten kann. Es geht wieder ein mal über die Registrierung. Speichern Sie folgende Zeilen in Notepad als "RenderDSNsAsMessages.reg" und starten Sie die Datei mit einem Doppelklick.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem\InternetContent]
"RenderDSNsAsMessages"=dword:00000001

Die Änderungen werden sofort aktiv und die Unzustellbarkeiten sehen dann wie hier aus:

Zwar setzt Exchange weiterhin seine eigene Unzustellbarkeit ein, aber die original Meldung wird als Anlage auch hier sichtbar. Leider kann der Anwender dann natürlich nicht mehr einfach ein "Erneut Senden" anwählen, sondern muss die Mail aus der zweiten Anlage in eine neue Mail übernehmen.

Einige Gateways und Zusatzprodukte werten die Quittungen aus, um einen Status zu ermitteln. Diese Änderung kann diese Funktion stören. Betroffen ist aktuell z.B.: MRS, welches die Zugestellt-Quittung nicht mehr verarbeiten kann und diese sogar als "unzustellbar" ablehnt. Diese Meldungen finden sich dann im BADMAIL Ordner.

Leider betrifft diese Konvertierung im schlimmsten Falle auch die Zugestellt-Quittungen, d.h. wenn Sie intern eine Mail an ihren Kollegen mit Quittung senden, dann können Sie mit Outlook nicht mehr den Status nach verfolgen.

Anscheinend wirkt dieser Schlüssel bei Exchange 2007 SP1 nicht mehr

NDR mit Exchange 2007

Exchange 2007 hat das Format der NDRs wieder geändert. Zwar wird im oberen Teil die "Freundliche Meldung" für den Anwender angezeigt, aber in der gleichen Mail ist weiter unten grau abgesetzt die komplette Diagnoseinformation für den Helpdesk:

Exchange 207 NDR

Das erleichtert natürlich schon die Fehlersuche allein durch die Mail beim Anwender, die er auch weiterleiten kann.

FROM-Adresse des NDR

Eine Unzustellbarkeit ihres Exchange Servers kommt immer mit der Adresse "postmaster@defaultpolicydomain" als Absender. Sie sollten daher mindestens einem Benutzer oder Öffentlichen Ordner diese Mailadresse auch zuweisen, damit Rückmeldungen an diese Adresse auch ankommen.

Knifflig wird es, wenn die Default Domäne im RUS und Empfängerrichtlinien keine gültige SMTP-Domäne ist. Dann wird zwar eine Unzustellbarkeit erstellt, aber andere Systeme könnten diese blockieren (da unbekannte Domäne) oder nicht darauf antworten. Aus einem Artikel auf http://blogs.msdn.com/exchange/archive/2004/03/26/96834.aspx geht hervor.

The default DSN sink generator appends the default domain of the exchange organization to “From: postmaster@” and that forms the 822 from of the DSN message. You can override this domain, by implementing a transport event sink.

Mit Exchange 2007 können Sie die "Postmasteradresse" auf der Transport Rolle setzen (SET-TRANSPORTSERVER -ExternalPostmasterAddress <adresse>

Allerdings konnte ich auf Exchange 2003 SP1 ein anderes Verhalten erkennen. Es ist durchaus möglich im virtuellen SMTP-Server mittels METAEDIT bzw. durch Anpassungen der XML-Datei die Default Domäne des virtuellen SMTP-Servers zu verändern.

Bei Änderungen auf dem IIS6 warnt MetaEdit 2.2, dass es nur für II4/II5 entwickelt wurde. Sie sollten daher den MetaEdit aus dem IIS6 Resource Kit nutzen. Alternativ können Sie den Wert auch mit folgendem Aufruf ändern:

cscript C:\inetpub\adminscripts\adsutil.vbs set SmtpSVC/1/DefaultDomain "firma.de"

Eine direkte Änderung der Metabase C:\Windows\System32\inetsrv\metabase.xml ist nicht empfehlenswert.

Dieser Wert kann mehrfach vorkommen !
Stellen Sie daher sicher, dass Sie den um passenden virtuellen SMTP-Server gehörenden Wert ändern.

Wenn der virtuelle SMTP-Server (Windows 2003SP1 mit Exchange 2003SP1) dann eine Unzustellbarkeit erzeugt wird NICHT die Domäne der Empfängerrichtlinie genutzt, sondern der Eintrag aus der Metabase. Leider kann ich nicht garantieren, dass dies mit älteren oder nachfolgenden Versionen immer noch so ist. Zudem

Exchange und NDR Größe

Normalerweise sendet ein System mit einer Quittung immer auch die komplette originale Mail mit. Das ist zwar RFC-konform, aber das ist natürlich eine Bandbreitenverschwendung und kostet am Ende auch Geld. Und daher kennt Exchange eine Option, die die Rückmeldung auf eine bestimmte Größe limitiert. Wenn Sie folgende Zeilen als Datei mit der Endung ".REG" abspeichern, auf dem Exchange Server starten und danach den SMTP-Dienst neu starten, dann werden alle Quittungen über 5KByte abgeschnitten.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SMTPSVC\Queuing]
"MaxDSNSize"=dword:00005120

Allerdings bedeutet das auch, dass die Anwender eben nur noch einen Teil der Mail bekommen und die "Erneut Senden"-Funktion nicht mehr nutzen können. Outlook weißt darauf aber auch gesondert hin, dass der Anwender die Mail in seinem eigenen Ordner "gesendete Objekte" suchen muss und von dort erneut senden kann.

In Exchange 2010 kann dies mit "Set-TransportConfig" getrennt nach internen und externen NDRs eingestellt werden:

[PS] C:\>Get-TransportConfig

ExternalDelayDsnEnabled             : True
ExternalDsnDefaultLanguage          :
ExternalDsnLanguageDetectionEnabled : True
ExternalDsnMaxMessageAttachSize     : 10 MB (10,485,760 bytes)
ExternalDsnReportingAuthority       :
ExternalDsnSendHtml                 : True
ExternalPostmasterAddress           :
InternalDelayDsnEnabled             : True
InternalDsnDefaultLanguage          :
InternalDsnLanguageDetectionEnabled : True
InternalDsnMaxMessageAttachSize     : 10 MB (10,485,760 bytes)
InternalDsnReportingAuthority       :
InternalDsnSendHtml                 : True

Das Problem der Größe ist durchaus auch immer ein guter Kandidat für "Loops". Wenn Sie z.B. NDRs im virtuellen SMTP Server als Kopie auch an einen anderen Benutzer senden lassen und dieser Mails über eine Regel oder einen alternativen Empfänger weiterleitet, dann wird daraus aufgrund der Größe wieder ein NDR und die Schleife ist perfekt.

Exchange und NDR ans Verteilermitglieder

Wenn Sie eine Mail versenden und der Empfänger nicht erreichbar ist, dann erwarten Sie eine "Unzustellbarkeitsmeldung" an ihr Postfach zurück. Auch eine "Zugestellt"-Quittung können Sie anfordern.

Leider funktioniert dies nicht, an Mitglieder einer Verteilergruppe, wenn Sie z.B. in deren Namen senden (Siehe auch Senden als). Das Verhalten ist in folgendem KB-Artikel beschrieben:

  • 839949 Troubleshooting mail transport and distribution groups in Exchange 2000 Server and in Exchange Server 2003

A4: Exchange server does not send NDRs, read receipts, delivery receipts, or out-of-office messages to members of distribution groups. Delivery status notifications are sent either to the sender of the message or to the owner of the distribution group and NDRs are sent only to the owner of the distribution group.

Sie können dieses Verhalten allerdings auch wieder abschalten durch folgenden Wert in der Registrierung der Exchange Server:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSExchangeTransport\Parameters\DLUnsuppressedMessageTypes:DWORD = 79

Dann bekommen aber wieder alle Mitglieder des Verteilers die Quittung.

Exchange und NDR an öffentliche Ordner

Analog zu den Verteilen kann ein Anwender auch "im Auftrag von" einem öffentlichen Ordner eine Mail versenden. Auch hier kann es zu Rückläufern in Form von NDRs kommen, die Exchange per Default nicht in den öffentlichen Ordner zustellt:

  • PF Mail und Routing
  • Senden als
  • 817220 XADM: Non-Delivery Reports to a Distribution List or to a Public Folder in Exchange 2000 Server Are Not Supported
  • 295653 XADM: How to Send a Copy of an NDR to a Specific E-mail Address
  • 900088 NDRs are deleted by the Microsoft Exchange Information Store service when a public folder is designated as the recipient in Exchange Server 2003
  • 812216 XADM: E-mail Sent Using Public Folder Address Returned With NDR

Im Eventlog können Sie diese Meldungen ebenfalls erkennen: (Beispiel von Exchange 2007)

Ereignistyp:       Fehler
Ereignisquelle:    MSExchangeIS Public Store
Ereigniskategorie: Transport (Übermitteln)
Ereigniskennung:   2028
Computer:          SRV01
Beschreibung:
Fehler bei der Übermittlung einer Nachricht, die von dem Öffentlichen Ordner 
PF1 gesendet wurde.
 An: 'pfadresse@firma.tld'
Cc:

 Der Unzustellbarkeitsbericht wurde gelöscht.

Hier wurde eine Mail "im Auftrag des Users" gesendet und scheint bei der Gegenseite nicht angekommen zu sein. In der Folge wurde ein NDR erstellt, der an den Ordner zurück gehen sollte. Es gibt keine Lösung für dieses Problem, es sei denn Sie schreiben Sich selbst ein Skript um die NDRs  und normale Mails zu ändern.

NDR und Sprache

Die Unzustellbarkeit wird per Default immer in der Sprache installiert, in der der Server installiert ist. Das mag nett sein, wenn Sie selbst intern Unzustellbarkeiten erhalten, aber ist im internationalen Gebrauch nur bedingt nutzbar. Besonders problematisch wird dies, wenn Sie z.B. einen japanischen Server installiert haben. Dessen Unzustellbarkeitsmeldungen sind für nicht Japaner schwer zu verstehen. Daher gibt es auch einen TechNet Artikel, wie einem japanischen Server eine englische Fehlermeldung abzuringen ist:

  • 277856 XCON: Unable to Read NDRs That Are Sent from a Japanese Server to an English Client

Dabei wird mit dem Hilfsprogramm ADSUTIL in der Metadatenbank die Sprache eingestellt:

cscript.exe c:\inetpub\adminscripts\adsutil.vbs set smtpsvc/smtpdsnlanguageid 1033

Die Sprachen von Unzustellbarkeitsquittungen innerhalb von Exchange sind in der Datei mdbsz.dll definiert. Sie können mit Programmen wie rltools.exe, rlquiked.exe oder anderen Ressource Editoren hier Strings übersetzen, aber dies wird von Microsoft nicht unterstützt. Testen Sie daher die geänderte DLL in einer Testumgebung. Allerdings wird ihr Exchange damit nicht mehrsprachig und beim nächsten Servicepack oder Hotfix müssen sie eventuell erneut die Texte ändern.

NDRs protokollieren und finden

Es gibt "gute" NDRs, nämlich immer dann, wenn sich ein Anwender vertippt und daher zurecht darauf hingewiesen werden sollte. Zumindest wenn Sie sicher sind, dass die Absenderadresse korrekt ist. Ansonsten werden sie selbst zum Problem durch NDR Spamming. Andererseits gibt es aber schlechte NDRs, die immer dann dem Administrator Kopfzerbrechen bereiten, wenn Nachrichten, die eigentlich zugestellt werden sollten, doch nicht zugestellt werden. Vielleicht haben Sie ja nur eine Mailadresse vertippt, vielleicht ist aber auch ein Postfach voll, eine Weiterleitung oder Regel verweist an ein nicht mehr existentes Postfach oder ein Dienst (z.B. Monitoring o.ä.) kann eine wichtige Mail nicht senden.

Gerade Konfigurationsfehler können dafür sorgen, dass plötzlich sehr viele NDRs generiert werden. So etwas sollten Sie auf jeden Fall mit bekommen. Und dazu eignen sich Performance Counter wunderbar, die Exchange bereit stellt. Insbesondere, wenn Sie SMTP-Domänen umstellen, Firmen migrieren etc. Betrachten Sie sich einfach mal folgende Counter ihres Exchange Servers:

  • AmbiguousRecipientsTotal und AmbiguousSendersTotal
    Nicht eindeutige Empfänger, z.B. doppelte SMTP-Adressen
  • UnresolvedOrgRecipientsTotal, UnresolvedOrgSendersTotal
    Nicht auflösbare Empfänger

Eine zweite Möglichkeit ist das Nachrichtentracking mit Exchange 2007/2010, welches natürlich auch fehlerhafte Mails und die damit generierten NDRs protokolliert. Per Powershell ist auch dies ganz einfach zu ermitteln.

Get-MessageTrackinglog -EventID fail  -start (get-date).addhours(-1)

Über den Parameter "Start" in Verbindung mit Get-Date kann man die Ergebnisse z.B.: auf die letzte Stunde einschränken

Allerdings können Sie so eine Anfrage nun nicht in "Realtime" durchführen, wenn Sie nicht gerade die MessageTracking-Dateien z.B. mit einem Tail überwachen. Aber wenn Sie z.B. durch die Performance Counter einen Hinweis bekommen dann hilft so ein Befehl sehr schnell, sich einen Überblick zu verschaffen.

Zuletzt gibt es noch eine Debug-Einstellungen des Edgetransport, die in der Datei "C:\Program Files\Microsoft\Exchange Server\V14\Bin\EdgeTransport.exe.config" konfiguriert werden kann. Der Parameter "ResolverLogLevel" ist hier der Schlüssel:

Die generelle Arbeit des "Resolvers" kann hier protokolliert werden, indem die Header oder sogar die komplette Mail protokolliert werden.

Recipient resolution logging is controlled by the ResolverLogLevel parameter in the EdgeTransport.exe.config application configuration file. The valid values for this parameter are Disabled, Enabled, and FullContent. The default value is Disabled. When the ResolverLogLevel parameter is set to Enabled, only message envelope data is logged. When the ResolverLogLevel parameter is set to FullContent, message envelope data and message header data is logged.
Quelle: Understanding Recipient Resolution http://technet.microsoft.com/en-us/library/bb430743.aspx

"Gelesen"-Quittung

Seit Exchange 2010 kann ein Administrator den POP3 und IMAP-Server konfigurieren, dass er endlich nicht mehr selbst auf eine "Gelesen-Anforderung" antwortet. Bislang konnte ein Anwender über POP3/IMAP4 nicht unterdrücken, dass der Absender eine Bestätigung bekommt, wenn die Mail nur "abgerufen" wird. Die Einstellung ist auf dem POP3/IMAP4-Server.

SET-POPSettings -SuppressReadReceipt $true

Zusammenfassung

Die Logik von Exchange hinterlässt ein gemischtes Gefühl. Die Idee ist nicht schlecht, die Anwender von kryptischen Fehlermeldungen zu entlasten. Besser fände ich aber, wenn der Administrator eine bessere Kontrolle über diese Funktion auf dem Server hätte oder wenn die Funktion einfach direkt in Outlook integriert werden würde. Dann könnten theoretisch sogar Outlook Anwender ohne Exchange Server davon profitieren.

Weitere Links

Keywords:NDR RFC DR Quittungen Unzustellbarkeit