MMDF - Das Mailboxformat »Multi-channel Memorandum Distribution
Facility«
Dieses Dokument beschreibt das Mailboxformat
MMDF, das von einigen MTAs
und MUAs (z.B.
scomail(1)) verwendet wird, um E-Mails lokal zu
speichern.
Eine
MMDF-Mailbox ist eine Textdatei, die eine beliebige Anzahl
E-Mail-Nachrichten enthält. Jede Nachricht besteht aus einem Stempel,
gefolgt von einer E-Mail-Nachricht entsprechend
RFC822/
RFC2822,
wiederum gefolgt von einem Stempel. Das Dateiformat ist zeilenorientiert. Die
Zeilen werden durch Zeilenvorschübe getrennt (ASCII 10). Eine
Stempelzeile besteht aus den vier Zeichen »^A^A^A^A« (Strg-A;
ASCII 1).
- Beispiel für eine MMDF-Mailbox, die zwei
Nachrichten enthält:
Im Gegensatz zu den meisten anderen auf einer Einzeldatei basierenden
Mailboxformaten wie MBOXO und MBOXRD (siehe
mbox(5)) ist es in
MMDF-Mailboxen nicht nötig, die »From«-Zeilen in
Anführungszeichen zu setzen, da solche Zeilen in diesem Format keine
besondere Bedeutung haben.
Wenn die (üblicherweise durch
stat(2) ermittelte)
Änderungszeit einer nicht leeren Mailbox größer
beziehungsweise neuer als die Zugriffszeit der Datei ist, dann enthält
die Datei neue E-Mails. Viele MUAs setzen eine
»Status:«-Kopfzeile in jede Nachricht, um zu bezeichnen, welche
Nachrichten bereits gelesen wurden.
Da auf
MMDF-Dateien häufig von mehreren Programmen parallel
zugegriffen wird, sollte der Zugriff auf diese Dateien generell nicht ohne
Sperrung erfolgen.
Allgemein werden drei Sperrmechanismen (und Kombinationen davon) verwendet:
- •
- Das Sperren mit fcntl(2) wird zumeist auf aktuellen,
POSIX-konformen Systemen verwendet. Die Nutzung dieser Sperrmethode ist
insbesondere bei MMDF-Dateien ratsam, auf die über das
Network File System (NFS) zugegriffen wird, da es die einzige
Möglichkeit zu sein scheint, die Zwischenspeicher von NFS-Clients
zuverlässig für ungültig zu erklären.
- •
- Das Sperren mit flock(2) wird meist auf
BSD-basierten Systemen verwendet.
- •
- »Dotlocking« wird auf allen Systemtypen
verwendet. Um beispielsweise eine MMDF-Datei namens
Mail-Ordner zu sperren, legt eine Anwendung zunächst eine
temporäre Datei mit einem eindeutigen Namen in dem Verzeichnis an,
indem sich die Datei Mail-Ordner befindet. Die Anwendung versucht
dann, mit dem Systemaufruf link(2) einen harten Link namens
Mail-Ordner.lock zu erstellen, der auf die temporäre Datei
zeigt. Der Erfolg des Systemaufrufs link(2) sollte
zusätzlich mit stat(2)-Systemaufrufen verifiziert werden.
Falls der Link erfolgreich erstellt wurde, wird der Mail-Ordner als
»dotlocked« betrachtet. Der Link zur temporären Datei
kann daraufhin sicher entfernt werden.
-
- Um die Sperre aufzuheben, entfernt eine Anwendung einfach
die Datei Mail-Ordner.lock.
Wenn mehrere Methoden kombiniert werden, sollte bei der Implementierung
sichergestellt werden, dass die nicht blockierenden Varianten der
Systemaufrufe
fcntl(2) und
flock(2) verwendet werden, um tote
Verklemmungen zu vermeiden.
Wenn mehrere Methoden kombiniert werden, darf eine
MMDF-Datei nicht als
erfolgreich gesperrt betrachtet werden, bevor nicht alle einzelnen Sperren
wirksam sind. Wenn eine der einzelnen Sperrmethoden scheitert, sollte eine
Anwendung alle Sperren aufheben, die sie erfolgreich angewendet hat und mit
dem gesamten Sperrvorgang nach einer angemessenen Wartezeit von vorn beginnen.
Der Sperrmechanismus auf einem bestimmten System ist eine Sache der lokalen
Regeln und sollte konsistent von allen auf dem System installierten
Anwendungen genutzt werden, die auf
MMDF zugreifen. Erfolgt dies nicht,
kann es zum Verlust von E-Mail-Daten und beschädigten
MMDF-Dateien kommen.
MMDF ist kein Teil irgendeines gegenwärtig unterstützten
Standards.
MMDF wurde von Dave Crocker an der University of Delaware entwickelt.
scomail(1),
fcntl(2),
flock(2),
link(2),
stat(2),
mbox(5),
RFC822,
RFC2822
Urs Janssen
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario
Blättermann <
[email protected]> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die
GNU
General Public License Version 3 oder neuer bezüglich der
Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken
Sie bitte eine E-Mail an die
Mailingliste
der Übersetzer