mbox(5) Benutzerhandbücher mbox(5)

mbox - Format für die Speicherung von E-Mail-Nachrichten

Dieses Dokument beschreibt das traditionell von Unix-Rechnern zum lokalen Speichern von E-Mail-Nachrichten verwendete Format. mbox-Dateien befinden sich typischerweise im E-Mail-Spool des Systems, unter verschiedenen Namen in den E-Mail-Verzeichnissen des Benutzers und unter dem Namen mbox in den Home-Verzeichnissen der Benutzer.

Eine mbox ist eine Textdatei, die eine beliebige Anzahl von E-Mail-Nachrichten enthält. Jede Nachricht besteht aus einem Stempel, dem eine gemäß RFC822, RFC2822 formatierte E-Mail-Nachricht folgt. Das Dateiformat ist zeilenorientiert. Zeilen werden durch Zeilenvorschubzeichen (ASCII 10) getrennt.

Eine Stempelzeile besteht aus den vier Zeichen »From«, denen ein Leerzeichen folgt, und diesem wiederum die Umschlag-Absenderadresse, darauf ein Leerzeichen und zuletzt ein Zeitstempel. Diese Zeile wird oft »From«-Zeile genannt.

Für die Absenderadresse wird erwartet, dass sie dem in RFC2822 3.4.1 definierten addr-spec entspricht. Das Datum muss date-time entsprechen, wie es von asctime(3) ausgegeben wird. Aus Gründen der Kompatibilität zu veralteter Software sollten zweistellige Jahreszahlen größer oder gleich 70 als die Jahre von 1970 und danach interpretiert werden, während zweistellige Jahreszahlen kleiner als 70 als die Jahre von 2000 bis 2069 interpretiert werden. Software, die Dateien in diesem Format liest, sollte auch darauf ausgelegt sein, eine nichtnumerische Zeitzoneninformation wie »CET DST« (mitteleuropäische Sommerzeit) zu akzeptieren.

Beispiel:

>From example@example.com Fri Jun 23 02:56:55 2000

Um in Nachrichtenkörpern Falschinterpretationen von Zeilen zu vermeiden, die mit den vier Zeichen »From« beginnen, gefolgt von einem Leerzeichen, muss das E-Mail-Auslieferungsprogramm (MDA) jedes Vorkommen von »From « am Anfang einer Zeile im Nachrichtenkörper als Zitat formatieren (in Anführungszeichen setzen).

Es gibt zwei unterschiedliche Zitierschemata, das erste (MBOXO) zitiert nur einfache »From «-Zeilen im Nachrichtenkörper, indem es ein »>« der Zeile voranstellt; das zweite (MBOXRD) zitiert auch »From «-Zeilen, durch Voranstellen eines »>« (d.h. »>From «, »>>From «, …). Letzteres hat den Vorteil, dass bei Zeilen wie

>From the command line you can use the '-p' option

das Zitat nicht falsch ausgehoben wird, da ein MBOXRD-MDA die Zeile vor dem Speichern in

>>From the command line you can use the '-p' option

umwandeln würde. Neben MBOXO und MBOXRD gibt es auch noch MBOXCL, was MBOXO mit einem "Content-Length:"-Feld ist, das die Anzahl der Bytes im Nachrichtenkörper angibt. Einige MUAs (wie mutt(1)) wandeln MBOXO-Mailboxen immer beim Zurückschreiben automatisch in MBOXCL-Mailboxen um, da MBOXCL von jedem MBOXO-MUA problemlos gelesen werden kann.

Falls die Änderungszeit (üblicherweise durch stat(2) ermittelt) einer nicht leeren mbox-Datei neuer als die Zugriffszeit der Datei ist, dann liegen neue Nachrichten vor. Viele MUAs setzen eine »Status:«-Kopfzeile in jede Nachricht, um anzuzeigen, welche Nachrichten bereits gelesen wurden.

Da auf mbox-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 mbox-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 mbox-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 mbox-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 mbox zugreifen. Erfolgt dies nicht, dann kann dies zum Verlust von E-Mail-Daten und beschädigten mbox-Dateien führen.

/var/spool/mail/$ANMELDENAME

Ordner für eingehende Nachrichten des Benutzers mit dem angegebenen $ANMELDENAMEN.

$HOME/mbox

Archivierte E-Mails des Benutzers in seinem $HOME-Verzeichnis.

$HOME/Mail/

Ein Verzeichnis im $HOME-Verzeichnis des Benutzers, welches häufig zum Speichern von Ordnern im mbox-Format verwendet wird.

mutt(1), fcntl(2), flock(2), link(2), stat(2), asctime(3), maildir(5), mmdf(5), RFC822, RFC976, RFC2822

Thomas Roessler , Urs Janssen

Das mbox-Format erschien in Version 6 von AT&T Unix.
Eine Variante dieses Formats wurde in RFC976 dokumentiert.

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> 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.

19. Februar 2002 Unix