Smtpdebugfix-Fix

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.

VBScript und 64Bit !
Viele 32bit COM-Objekte lassen sich auf einem 64bit System nur instanziieren, wenn die 32bit Version von CSCRIPT/WSCRIPT genutzt wird, welcher unter C:\Windows\SysWOW64\cscript.exe liegt.

Im Mai 2007 hat ein Leser die Seite Kuriositäten zum Anlass genommen, mit ein Problem seiner Umgebung zu schildern, die nicht weniger kurios ist. Da dieses "Verhalten" von Exchange jedoch keineswegs gewünscht ist, habe ich eine Abhilfe mit einem Exchange SMTP-EventSink geschaffen, welcher die Ursache beim Empfang einer Mail beseitigt.

Der Ausgangspunkt.

Der Leser hat mir beschrieben, dass Exchange bei einer bestimmten Art einer formatierten Mail eine sehr ausführliche "Unzustellbarkeit" erstellt, die nicht nur eine Liste der ungültigen sondern auch der erreichten Empfänger erstellt. Nehmen wir an Sie würden eine Mail folgendermaßen formatieren und an ihren Exchange Server senden.

HELO mail.spammer.ltd
MAIL FROM: spammer@firma2.tld
RCPT TO: frank.carius@example.com
RCPT TO: gibt.es.nicht@example.com
DATA
From: "Spammer" <spammer@firma2.tld> {set: debug=51}
To: frank.carius@example.com
cc: gibt.es.nicht@example.com
cc: gibt.es.nicht2@example.com
Subject: Testmail

Dies ist ein Test
.
QUIT

Sicher fällt ihnen auf, dass nach dem Displaynamen "Spammer" und der Mailadresse "<spammer@firma2.tld>" in geschweiften Klammern noch etwas steht, was da nicht hingehört. Auch wenn man in Google etwas sucht, dann findet man tatsächlich, dass einige Spammer Werte wie "{SET:debug=11}" oder "{SET:debug=51}" verwenden  Die Folgen hiervon sind allerdings sehr merkwürdig.

  • Mail ist unzustellbar
    Da Exchange 2000/2003 versucht, diese Absenderadresse in ein "MAPI-Feld" zu �bertragen. Das dies aber fehlschlägt, wird die Mail trotz ansonsten gültiger SMTP-Adresse nicht zugestellt. Der Absender bekommt einen NDR. Im Eventlog steht in etwa:

"für den Benutzer rfc822;frank.carius@example.com....wurde ein Unzustellbarkeitsbericht mit dem Statuscode 5.0.0 erstellt....."

  • Mehrfache NDRs
    Sende ich nun absichtlich eine Mail an 5 Empfänger einer Firma, von denen zwei Adressen "ungültig" sind, so bekomme ich von Exchange nicht nur eine NDR-Meldung mit den beiden ungültigen Adressen, sondern noch eine zweite NDR-Meldung, die sowohl die zugestellten als auch die fehlerhaften Adressen enthält.

Sicher kann man dies nun korrigieren, indem man die Unzustellbarkeiten an das Internet verhindert. Damit nimmt man aber einem Absender jede Möglichkeit, bei Fehlern zu reagieren. (z.B.: Mailbox Voll etc.) Die Überwachung müssen Sie als Betreiber dann selbst leisten. Daher ist ein Abschalten der NDRs sicher die letzte Option

Besser ist, es, wenn man die Gültigkeit von Empfängern direkt bei der Annahme aus dem Internet prüft und die Adresse auf SMTP-Protokollebene direkt ablehnt. (Siehe auch Empfänger). Damit muss der eigene Server keine NDR-Meldungen versenden, sondern der einliefernde Server ist dafür zuständig, bzw. ein Spammer kann die Mail gar nicht erst versenden. Dies löst nebenbei auch das Problem des NDR Spamming.

Temporäre Lösung

Trotzdem kann es natürlich sein, dass Sie solche "Sonderfunktionen" nicht erlauben wollen. Gerade kleine Firmen haben aber nun keine SENDMAIL oder andere Relays im Einsatz, um mit eigenen Skripten die Mails zu verändern. Exchange erlaubt aber im virtuellen SMTP-Server die Einbettung eigener Programme als VBScript.

Ein so genannter SMTP-OnArrival-Sink kann per SMTP eingehende Mails komplett verändern. Ein ähnliches Beispiel finden Sie z.B. schon bei MessageID-Fix. SMTPDEBUGFIX prüft einfach die Absenderadresse im Body auf solche Verfremdungen und entfernt diese.

Download und Installation

Um die Lösung zu implementieren sollten Sie folgendes Skript herunterladen, auf ihrem Exchange Server in das Verzeichnis C:\SMTPDEBUGFIX ablegen und mit der Erweiterung VBS versehen. Wenn Sie ein anderes Verzeichnis nutzen, müssen Sie die Pfade in den Batchdateien etc. anpassen.

smtpdebugfix.vbs.txt
Bitte Downloaden und nach C:\SMTPDEBUGFIX auf dem Exchange Server mit der Erweiterung VBS ablegen. Durch Aufruf von "AddSMTPDEBUGFIX.cmd" wird das Skript registriert. Durch den Aufruf von "DelSMTPDEBUGFIX.cmd" kann das Skript wieder deaktiviert werden.

Das Skript legt eine Diagnosedatei C:\SMTPDEBUGFIX\SMTPDEBUGFIX.LOG an, in der die Aktivität protokolliert wird. Wenn ersichtlich ist, dass das Skript funktioniert, sollten Sie in der Datei SMTPDEBUGFIX.VBS den Wert für den "Loglevel" auf 0 setzen. Alle Änderungen werden ohne Neustart des Exchange Servers, des virtuellen SMTP-Servers oder anderer Komponenten aktiv.

Testen

Zum Test des Scripts müssen Sie einfach per SMTP eine Mail mit dem fehlerhaften Absenderformat erstellen und an Exchange senden. Sie können dazu einfach die Beispielmail weiter oben abgeändert per TELNET an ihren Mailserver senden.

Wenn ihnen das zu aufwändig ist, dann schauen Sie einfach in das Protokollfile. Dort wird ihnen genau angezeigt, welche Mail derart formatiert war und daher geändert wurde.

Support

Wie alle Skripte auf dieser Seite kann ich nicht für die Funktion in allen Umfeldern garantieren. Bitte nutzen Sie die Newsgroup: Microsoft.public.de.german.exchange2000.general.

Unterstützung durch Net at Work:
Wir können Sie aktiv unterstützen. Rufen Sie einfach an.

Weitere Links