FILE - Pickup Verzeichnis
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.
Das Verzeichnis gibt es auch mit Exchange 2007 weiterhin.
Allerdings gibt es dort auch ein "REPLAY"-Directory
http://www.microsoft.com/technet/prodtechnol/exchange/e2k7help/cec138e6-6deb-480e-8d69-2b3c4494942e.mspx?mfr=true
Achtung: Die Datei muss mit Exchange 2007 zwingend die Erweiterung "EML" haben. Ansonsten wird die Datei einfach nur gelöscht aber nicht versendet.
Ein besonderes Feature ist ein Verzeichnis namens "PICKUP", welches sowohl Exchange 5.5 als auch Exchange 2000 anbieten. Dieses Verzeichnis gehört zum SMTP-Connector bzw. zum Windows 200 SMTP-Server.
Gibt man diese Verzeichnis zum schreiben frei, so kann eine Mail einfach durch das Ablegen einer Datei in einem bestimmten Format versendet werden. Ganz ohne DLLs, TCP/IP Kenntnissen oder anderen Programmiertricks. Im einfachsten Falle reicht dazu eine Menge "ECHO"-Zeilen in einem Batchfile. Doch von Anfang an.
Das Verzeichnis
Zuerst müssen Sie das PICKUP-Verzeichnis finden. Dies ist je nach Version von Exchange an verschiedenen Stellen, z.B.:
- Exchange 5.5
C:\exchsrvr\imcdata\Pickup - Windows 2000
C:\inetpub\mailroot\pickup - Exchange 2000
C:\Programme\Exchsrvr\Mailroot\vsi 1\PickUp
Nun ist Windows natürlich sehr kommunikativ, so dass man solche ein Verzeichnis nicht nur für Windows Clients freigegeben kann, sondern auch für andere Betriebssysteme. Windows Server ist in der Hinsicht sehr kommunikativ und kann ein Verzeichnis auch per NFS, FTP, HTTP, Macintosh Volumes oder sogar als NetWare Emulation bereit stellen. Insofern können Sie jedem Client, der sich anmelden kann, diesen Ordner bereitstellen.
Die Nachricht
Eine Internet Mail besteht aus der Nachricht selbst (RFC-822), welcher alle Kopfzeilen, Empfänger, Absender, Betreff und im Body die Nachricht und die codierten Anlagen enthält. Dieser Nachricht selbst steckt wiederum in einem umschlag, welche die Mailserver zur Übertragung nutzen. (Siehe Mail im Internet).
Der SMTP-Dienst versucht nun anhand der abgelegten Nachricht die Informationen aus dem umschlag wieder auszulesen. Dazu sucht er zuerst nach den Feldner "X-SENDER" und "X-RECEIVER", aus denen er die Werte für "MAIL FROM" und "RCTP TO" generiert. Sind diese Werte nicht vorhanden, dann nutzt er die "To:" und "From:" Felder bzw. "Sender".
Einfache Mail
Wenn Sie so eine einfache Textdatei in das PICKUP Verzeichnis stellen, dann wird diese zugestellt. So eine Datei kann auch mit "ECHO"-Zeilen erstellt werden.
x-sender: absender@domain.tld x-receiver: empfaenger@domain.tld To: empfaenger@domain.tld From: absender@domain.tld Subject: Betreff der Nachricht Hier beginnt der Body
Anlagen und andere Inhalte sind natürlich in dem Body entsprechend codiert mit abzulegen. Tipp: Erstellen Sie eine Mail z.B. mit Outlook Express und speichern diese als EML-Datei ab. Diese Datei können Sie als Ausgangsmaterial für ihre Mail nutzen. Denken Sie an die beiden Leerzeilen am Ende der Mail.
Die Mails muss "ASCII" sein. Denken Sie daran, da einige Programme unter Windows per Default "UNICODE" schreiben.
Komplexe Mail
Nun wissen wir alle, dass die FROM-Zeile zwar in der Regel mit dem "MAIL FROM" des Envelope identisch ist, aber beim Zustellen an die TO-Zeilen ist doch mehr Flexibilität gefragt. Denn es kann ja sein, dass ich als TO-Zeile viele Leute haben möchte, aber mein Mailserver soll nur einen Teil davon bedienen. Das ist auch das Problem von POP3 Sammlern, die aus den TO-Zeilen die eigentlichen Empfänger auslesen möchten. BCC-Zeilen gibt es keine, so dass diese Anwender leer ausgehen.
Das PICKUP-Verzeichnis nutzt dazu besondere Felder in der Datei, die am Anfang stehen müssen:
- X-Sender
Bezeichnet den Server, wie er im SMTP-Protokoll als "MAIL FROM" übermittelt werden würde. Das Mailprogramm hingegen zeigt aber die From-Zeile an. - X-Receiver
Sind die gewünschten Empfänger, die die Mail erhalten sollen. Der Inhalt der "To:"-Zeile wird ignoriert. Das Mailprogramm hingegen zeigt aber die To-Zeile an.
Wenn sie mehrere Empfänger reichen möchten, dann werden die Mailadressen einfach durch Komma getrennt aneinander gehängt. Alternativ kann die X-Receiver Zeile auch wiederholt werden. Diese Felder werden oft "P1" genannt währen die Felder From: und To: als P2 bezeichnet werden und normalerweise nicht für das Nachrichtenrouting vorgesehen sind.
Im Fehlerfall
Je nach Version finden die die Fehler an verschiedenen Stellen.
- Bei aktiviertem Diagnoseprotokoll finden sich im Eventlog einige Einträge.
- Bei Exchange 5.5 liegen die Nachrichten optional im ARCHIV-Verzeichnis darunter
- Bei Exchange 2000 und dem virtuellen SMTP-Server gibt es ein "BADMAIL" Verzeichnis auf der gleichen Ebene, in die defekte Nachrichten verschoben werden.
Besonderheiten
Eine Besonderheit ist beim Exchange 5.5 Pickup Verzeichnis zu beachten. Nachrichten werden nach "extern" gesendet, d.h. selbst wenn es interne Empfänger gibt, so wird Exchange die Mail versuchen nach außen zu senden. (Test auf meinem Exchange 5.5. SP4 Deutsch). Exchange 2000 hat dieses Problem nicht.
Wenn Sie "alte" Nachrichten so wieder einstellen wollen, dann sollten Sie die "MessageID" können, denn Exchange führt Buch, welche Nachrichten schon weiter geleitet wurde, werden im Wiederholungsfalle geblockt. Schließlich geht Exchange dann davon aus, dass es sich um eine Schleife (Fehlkonfiguration) handeln muss.
Diese besondere Eigenschaft des Pickup erlaubt mir z.B.: die Mails eines Toten SMTP-Servers aus der Warteschlange nach etwas Anpassung wieder dem System vorzuwerfen.
Der einzige Punkt, an dem ein Benutzer erkennen kann, woher die Mail nun wirklich gekommen ist, ist die Ansicht der Kopfzeilen der Nachricht. Dort hinterlässt Exchange den Eintrag:
Received: from PickupDirectory by nawsv002.netatwork.de with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2653.13) id DCJLQLAH; Thu, 16 Jan 2003 18:58:49 +0100
Pickup und CDOSYS
Wenn Sie nicht den Umweg über eine selbst als Textdatei erstellte Mail gehen wollen, dann können Sie natürlich auch einfach das CDOSYS-Objekt nutzen, um eine Mail erstellen. Eine damit erstellte Mail landet nämlich auch einfach in Pickup als EML-Datei
Weitere Links
- Windows SMTP-Server richtig einrichten
- Blat
- WSH - Mail per CDO Senden
- Q198022 using the Windows NT Option Pack SMTP Pickup Directory
- Q201314 XFOR: Exchange Internet Mail Pickup Directory usage
- Q234243 XFOR: Read-Only Files in Pickup Directory Cause SMTP Service to Loop
- Q234244 XFOR: Message Submitted to Pickup Folder with Folded Header Goes to Badmail
- Q221384 XFOR: Pickup Directory Files Containing Single Period Are Not Padded Correctly
- Q297700 XFOR: How to Test Outbound Mail Flow With a File in the Pickup Folder
- Q201314 XFOR: Exchange Internet Mail Pickup Directory usage
- 910932 The SMTP service may leak domain list memory when you use the Pickup folder
- E2007: How to Configure the Pickup Directory
http://technet.microsoft.com/en-us/library/bb124549(EXCHG.80).aspx - E2007: Managing the Replay Directory
http://technet.microsoft.com/en-us/library/bb123721(EXCHG.80).aspx - E2007: Set-TransportServer
http://technet.microsoft.com/en-us/library/bb124238(EXCHG.80).aspx - E2010: Configure the Replay Directory
http://technet.microsoft.com/en-us/library/bb124608.aspx - E2010: Configure the Pickup Directory
http://technet.microsoft.com/en-us/library/bb124549.aspx - The RFC 822 Message Format
http://msdn2.microsoft.com/en-us/ms875965.aspx
Beschreibung der RFC822 Mail, wie sie im Pickup-Verzeichnis verarbeitet wird. -
Exchange 2007: Managing the Pickup Directory
http://www.microsoft.com/technet/prodtechnol/exchange/e2k7help/ae191700-953f-411c-906f-dc90feec3d5a.mspx -
Exchange 2007 "RELAY"-Directory
http://www.microsoft.com/technet/prodtechnol/exchange/e2k7help/cec138e6-6deb-480e-8d69-2b3c4494942e.mspx?mfr=true