*******************************************************************************
                              BSmtp/2 v0.42
        Analyse von BSmtp Files und Versenden enthaltener Mails
                           (c)2000 by IzzySoft
*******************************************************************************
           Beschreibung des Dateiformates einer BSMTP Datei
*******************************************************************************

Nachdem ich darauf hingewiesen wurde, da das BSMTP-Format scheinbar nicht
hinlnglich bekannt ist (das ist halt die sogenannte "Betriebs-Blindheit":
Dinge, an die man sich gewhnt hat, bersieht man leicht), mchte ich dieses
kurz in einer separaten Kurz-Dokumentation beschreiben:

BSmtp steht fr Batch-SMTP und bedeutet im Klartext eigentlich soviel, da
mehrere Mails unterschiedlicher Absender und Empfnger in einer Mail trans-
portiert werden knnen. Hierfr wird ein Teil der wahrscheinlichen SMTP-
Session mit der jeweiligen Nachricht gespeichert - nmlich das, was der
SMTP-Client an den Server, welcher die Mail dann letztendlich entgegen nehmen
soll, fr die betreffende Mail sendet. Ein solcher Dialog sieht in etwa
folgendermaen aus (das erste Zeichen jeder Zeile mu sich weg-gedacht werden;
es zeigt die Richtung an: '>' heit, der Client sendet dies an den Server, '<'
entsprechend umgekehrt):

    >HELO ich.bins.de
    <250 OK
    <
    >MAIL FROM:<ein.user@domain.org>
    <250 Sender accepted
    >RCPT TO:<wer.anderes@andere.domain.org>
    <250 mailbox OK
    >RCPT TO:<noch_wer.anderes@ganz.andere.domain.org>
    <250 user not local, will forward.
    >DATA
    <354 Socket to me

In diesem Beispiel heit der Client-Rechner 'ich' und ist in der Domain
'bins.de' eingetragen. Ein User (MAIL FROM) schickt eine Nachricht an zwei
Empfnger (RCPT TO) und benutzt dazu als SMTP Server den Server von
'andere.domain.org'. Dazu ffnet er ein entsprechendes Socket (das habe ich
hier weggelassen) und identifiziert sich mit seinem Rechnernamen (erste
Zeile: HELO). Diese Anmeldung (und natrlich das vorherige ffnen des Sockets)
ist nur einmal pro Session, nicht aber einmal pro Nachricht notwendig - diese
Informationen werden daher auch nicht in der BSMTP Datei gespeichert.

Wohl aber die anderen Informationen, welche zum Server geschickt werden
mssen (also im obigen Beispiel mit '>' beginnen). Die zu obigem Beispiel
gehrige BSMTP-Datei mte also etwa folgenden Inhalt haben:

    MAIL FROM:<ein.user@domain.org>
    RCPT TO:<wer.anderes@andere.domain.org>
    RCPT TO:<noch_wer.anderes@ganz.andere.domain.org>
    DATA

Diese Informationen entsprechen den Informationen des sogenannten Envelops;
die eigentliche Mail folgt nach dem Wort 'DATA' und ist dem Server selbst
eigentlich relativ egal, weshalb wir den Inhalt hier nicht zu bercksichtigen
brauchen. Wichtig ist jetzt nur noch zu wissen, wie der Server (und der Client
natrlich ebenso) erkennen kann, da eine Nachricht zu Ende ist. Hierfr
dient ein einzelner '.' in einer Zeile (also '.<CR>', wobei <CR> fr den
Zeilenumbruch steht).

Soll jedoch nun in einer Nachricht ein einzelner Punkt in einer Zeile stehen,
mu er freilich "escaped" werden - sonst glauben Server und Client ja, die
Nachricht wre bereits beendet. Da unsere Batch-Datei nun mehrere Mails
enthalten kann - jedoch den Empfnger komplett erreichen soll, verwenden
wir am Ende jeder enthaltenen Nachricht zwei Punkte - und die transportierende
Nachricht endet dann (bis sie im Postfach liegt) mit einem einzelnen Punkt.

Eine vollstndige Beispiel-BSmtp-Datei liegt diesem Archiv nun auch bei
(Sample.Bsm) - so, wie sie mit BSmtp/2 verarbeitet werden kann. Alles vor
dem ersten 'MAIL FROM:' wird von BSmtp/2 ignoriert, da es zur 'Trger-
Nachricht' gehrt - und nicht zu den zu bearbeitenden Mails.

Unntig zu erwhnen, da die dort enthaltenen Adressen ein wenig manipuliert
sind, um dem Datenschutz gerecht zu werden :-)

Abschlieend hoffe ich, das Ganze halbwegs verstndlich erklrt zu haben.
Sollte mir dies (stellenweise oder komplett) nicht gelungen sein, teilt mir
dies bitte mit - ggf. gleich mit einer besseren Formulierung, die ich dann
frei verwenden darf!


Itzchak Rehberg
izzysoft@buntspecht.de
