mbox

mbox – ogólny termin dla rodziny podobnych formatów plików używanych do przechowywania zbiorów poczty elektronicznej (e-mail). Wszystkie wiadomości w mbox są skoncentrowane i przechowywane w pojedynczym pliku. Początek każdej wiadomości jest przedstawiony w postaci linii „From” (pol. „Od”) oraz pustej linii która jest dodawana na końcu każdej wiadomości. Przez pewien czas formatowanie mbox było bardzo popularne ponieważ narzędzia przetwarzania tekstu mogą być łatwo używane przez zwykły plik tekstowy używany do przechowywania wiadomości e-mail. W przeciwieństwie do protokółów internetowych używanych do wymiany emaili, tutaj program używany do przechowywania emaili został całkowicie uzależniony od programu klienta poczty elektronicznej (ang. e-mail client).

Podobnie jak inne znane na rynku klienty poczty elektronicznej, np. Microsoft Outlook, mbox nigdy nie był oficjalnie zaakceptowanym przez RFC mechanizmem standaryzacji (RFC standarization mechanism). Używa on własnego formatu i potrzebuje oprogramowania konwertującego do przepływu email pomiędzy innymi użytkownikami.

Rodzina formatu do przechowywania poczty (mbox family)

Rodzina mbox współgra z czterema głównymi, różniącymi się i niekompatybilnymi formatami: mboxo, mboxrd, mboxcl oraz mboxcl2. Schemat ich nazw (ang. naming scheme) został opracowany przez Daniela J. Bernstein i Rahula Dhesi we współpracy z innymi twórcami w 1996 roku. Każda nazwa została zaczerpnięta z różnych wersji Uniksa. Formaty mboxcl i mboxcl2 zostały zaczerpnięte z formatu pliku używanego przez Unix System V w wersji 4. Narzędzia poczty (mail tools) oraz imboxrd były wymyślone przez Rahul Dhesi jako kolejne usprawnienia formatu mboxo które później zostały zaadaptowane przez niektóre narzędzia pocztowe systemu Unix łącznie z qmail.

W formatach mboxo oraz mboxrd początek wiadomości lokalizowany jest przez skanowanie linii „from” (od) które są typowo znajdowane w nagłówkach email. Jeśli ciąg „from” występować będzie na początku oraz w linii nagłówka czy też w samej treści wiadomości to wiadomość musi być zmodyfikowana zanim zostanie zachowana w skrzynce pocztowej (mailbox) pliku mbox lub linia będzie odebrana jako granica wiadomości, która jest typowo zakończona przez znak „>”.

Odmiany mbox

Niektóre klienty poczty e-mail (ang. e-mail clients) używają modyfikacji mboxu dla ich pocztowych folderów (ang. mail folders).

  • Eudora – używa odmiany mboxo, gdzie wychodzący adres (osoby wysyłającej) jest zamieniony przez stały ciąg „???@???”.
  • Mozilla z rodziny MUAs (Mozilla, Netscape, Thunderbird, itd.) – używa odmiany mboxrd z bardziej złożoną linią „From”

Blokowanie plików

Stosuje się trzy, niekompatybilne ze sobą, sposoby blokowania plików mbox. Blokowanie jest konieczne, aby nie nastąpiło uszkodzenie pliku podczas jednoczesnej jego modyfikacji przez kilka procesów (na przykład, gdy program pocztowy usuwa z pliku wiadomość, a system umieszcza w nim nową).

Trzy głównie używane różne mechanizmy i kombinacje blokowania:

  • fcntl(2) – blokowanie to jest przeważnie używane przez systemy zgodne ze standardem POSIX. Korzystanie z metody blokowania jest indywidualnie używane, jeśli pliki mbox są dostępne przez system plików sieci (Network File System – NFS), do tego czasu jedyny niezawodny sposób buforowania sieci plików systemu (NFS).
  • flock(2) – blokowanie to jest głównie stosowane w optymalnych systemach (based systems)
  • dotlocking – jest używany we wszystkich rodzajach systemu. Po to by blokować pliki mbox aplikacja najpierw tworzy plik tymczasowy z unikatową nazwą w katalogu w którym znajduje się plik mbox. Aplikacja następnie stara użyć się systemowego polecenia link(2) do stworzenia zwykłego powiązania nazwanego folder.lock do tymczasowego pliku. Powodzenie wywołania link(2) dodatkowo jest weryfikowane przez funkcję stat(2). Jeśli łącze zostało stworzone, to katalog poczty jest zablokowany. Pliki tymczasowe mogą być więc nieprawdopodobnie bezpieczne. Aby odblokować program wystarczy odłączyć plik folder.lock.

Jeśli połączonych jest wiele metod, narzędzia powinny upewnić się aby używać nie blokujących wariantów jak fcntl(2) i flock(2) po to by nie zablokować systemu. Jeśli połączonych jest wiele metod, plik mbox musi nie być z nimi związany (połączony), aby był skutecznie zablokowany przed wszystkimi załączonymi blokadami. Kiedy jedna z poszczególnych metod zawiedzie, aplikacja wtedy powinna zawiesić wszystkie blokady skutecznie nabyte, i zrestartować całą procedurę blokowania od początku, po odpowiednim opóźnieniu.

Mechanizm blokowania używany w konkretnym systemie jest sprawą lokalną założenia i powinien być zgodnie używany przez wszystkie aplikacje zainstalowane w systemie w którym dostępne są pliki mbox. Pojawienie się błędu może być skutkiem utracenia danych poczty oraz skasowanie plików mbox.

Ponieważ więcej niż jedna wiadomość jest przechowywana w pojedynczym pliku, niektóra forma blokowania pliku jest potrzebna aby uniemożliwić uszkodzenie które może być wynikiem użycia dwóch albo więcej procesów modyfikujących mailbox równocześnie. To się może wydarzyć gdy program dostarczania emaila dostarcza nowa wiadomość w tym samym czasie kiedy czytnik poczty kasuje istniejącą wiadomość.

Formaty

Format daty jest wyświetlany w sposób:

mbox-date =   weekday month day time [ timezone ] year 	 (pol. dzień powszedni miesiąc dzień czas [strefa czasowa] rok)
weekday =   "Mon" / "Tue" / "Wed" / "Thu" / "Fri" (pol. "Pon" / "Wto" / "Śro" / "..." / "Nie"
                     / "Sat" / "Sun"
month   =   "Jan" / "Feb" / "Mar" / "Apr" / "May"	 (pol. "Sty" / "Lut" / "..." / "Gru"
                     / "Jun" / "Jul" / "Aug" / "Sep"
                     / "Oct" / "Nov" / "Dec"
    day          =   1*2DIGIT				 (pol. 1*2cyfrowa)
    time         =   1*2DIGIT ":" 1*2DIGIT [ ":" 1*2DIGIT ]
    timezone     =   ("+" / "-") 4DIGIT		- pol. ("+" / "-") 4cyfrowa
    year         =   (4DIGIT / 2DIGIT)		- pol. (4cyfrowa / 2cyfrowa)

Przykład:

From: Pawel@aaa.org Tue Feb 23 15:56:55 2006 – pol. Od: Pawel@aaa.org wtorek luty 23 15:56:55 2006

Ograniczenia

Mbox przechowuje wiadomości mailbox w ich oryginalnym formacie (Internet Message (RFC 2822 ↓)), w miejscu bezpośrednio dostępnym dla użytkowników. Podobnym formatem jest MH Message Handling System. Inne systemy, takie jak Microsoft Exchange Server and the Cyrus IMAP server przechowują wiadomości w scentralizowanej bazie danych zarządzanej przez system pocztowy (mailowy) i nie bezpośrednio dostępny przez poszczególnych użytkowników.

Linki zewnętrzne