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