mbox(5) Podręczniki użytkownika mbox(5)

mbox - Format pliku zawierającego wiadomości pocztowe

Dokument ten opisuje format pliku tradycyjnie używanego na systemach uniksowych do lokalnego przechowywania wiadomości e-mail. Pliki mbox zwyczajowo znajdują się w systemowym katalogu poczty oraz pod różnymi nazwami w katalogach Mail użytkowników i pod nazwą mbox w katalogach domowych użytkowników.

mbox jest plikiem tekstowym zawierającym dowolną liczbę wiadomości e-mail. Każda wiadomość składa się z datownika, po którym następuje treść wiadomości sformatowana zgodnie z RFC822 i RFC2822. Plik składa się z linii oddzielonych od siebie znakami końca linii (ASCII 10).

Linia datownika składa się z czterech znaków "From", po których występują: znak spacji, adres nadawcy wiadomości, kolejny znak spacji i na końcu oznaczenie czasu. Linia ta jest często nazywana linią From.

Adres nadawcy powinien być zgodny z addr-spec zdefiniowanym w rozdziale 3.4.1 dokumentu RFC2822. Oznaczenie czasu powinno być w formacie data-czas zwracanym przez asctime(3). W celu zachowania wstecznej kompatybilności ze starym oprogramowaniem lata zapisane dwucyfrowo większe lub równe 70 powinny być interpretowane jako lata 1970+, podczas gdy lata zapisane dwucyfrowo mniejsze niż 70 powinny być interpretowane jako lata od 2000 do 2069. Oprogramowanie odczytujące pliki w tym formacie powinno akceptować także nienumeryczną informację o strefie czasowej, taką jak "CET DST" oznaczającą letni czas środkowoeuropejski (Central European Time, Daylight Saving Time).

Przykład:

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

Aby uniemożliwić niepoprawną interpretację występujących w treści wiadomości linii zaczynających się od "From", po których występuje znak spacji, program dostarczający pocztę musi odpowiednio cytować wszystkie wystąpienia "From " na początku linii.

Istnieją dwa różne schematy cytowania: pierwszy (MBOXO) cytuje tylko zwykłe linie "From " w treści, poprzedzając je znakiem ">", a drugi (MBOXRD) cytuje także już cytowane linie "From ", również poprzedzając je znakiem ">" (to jest ">From ", ">>From ", ...). Drugi sposób ma tę zaletę, że linie takie jak

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

nie są niepoprawnie "odcytowywane", ponieważ program dostarczający pocztę w sposób MBOXRD zamieni taką linię na

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

przed jej zapisaniem. Oprócz MBOXO i MBOXRD istnieje także MBOXCL, który jest MBOXO z dołożonym polem "Content-Length", zawierającym liczbę znaków występujących w treści wiadomości; niektóre programy wyświetlające pocztę (MUA), takie jak mutt(1), automatycznie przekształcą skrzynki pocztowe MBOXO w MBOXCL podczas zapisu do nich, ponieważ format MBOXCL może zostać bez żadnych problemów odczytany przez dowolny program pocztowy użytkownika (MUA) wspierający format MBOXO.

Jeśli czas modyfikacji (zwyczajowo określany za pomocą stat(2)) niepustego pliku mbox jest większy od czasu dostępu do tego pliku, to plik zawiera nową pocztę. Wiele programów obsługi poczty (MUA) dodaje do każdej wiadomości nagłówek "Status:", określający, czy wiadomość została już przeczytana.

Ponieważ pliki mbox często są odczytywane przez wiele programów naraz, pliki mbox nie powinny być przetwarzane bez ich wcześniejszego zablokowania.

W powszechnym użyciu znajdują się trzy różne mechanizmy blokowania (oraz ich kombinacje):

  • Blokady fcntl(2) używane głównie w nowszych systemach, zgodnych z POSIX. Użycie tej metody jest w szczególności zalecane, jeżeli pliki mbox są umieszczone na sieciowych systemach plików (NFS), ponieważ wydaje się to jedyną niezawodną metodą unieważniania buforów podręcznych klientów NFS.
  • Blokady flock(2) używane głównie w systemach opartych na BSD.
  • Blokady "dotlocking" są używane we wszystkich typach systemów. Aby zablokować plik mbox o nazwie folder, aplikacja najpierw tworzy plik tymczasowy o unikatowej nazwie w katalogu, w którym znajduje się folder. Następnie aplikacje używa wywołania systemowego link(2) do utworzenia dowiązania folder.lock do tego pliku tymczasowego. Powodzenie wywołania systemowego link(2) powinno być dodatkowo potwierdzone za pomocą wywołania stat(2). Jeśli tworzenie dowiązanie się powiodło, to folder pocztowy jest uważany za zablokowany. Plik tymczasowy można wtedy usunąć.
Aby zwolnić blokadę, aplikacja po prostu usuwa plik folder.lock.

Jeśli łączy się wiele metod, to twórcy aplikacji powinni używać nieblokujących wersji wywołań systemowych fcntl(2) i flock(2), tak aby uniknąć zakleszczeń (deadlocks).

Jeśli łączy się wiele metod, to plik mbox nie może być uważany za poprawnie zablokowany dopóty, dopóki wszystkie pojedyncze blokady nie zostaną założone. Jeśli chociaż jedna metoda blokowania zawiedzie, aplikacja powinna zwolnić wszelkie blokady, które wcześniej poprawnie założyła i - po odczekaniu odpowiedniego czasu - zacząć całą procedurę blokowania od początku.

Mechanizm blokowania używany w danym systemie zależy od lokalnej polityki administratora i powinien być konsekwentnie używany przez wszystkie zainstalowane w systemie aplikacje wymagające dostępu do plików mbox. Niezastosowanie się do powyższego może prowadzić do gubienia wiadomości pocztowych i uszkodzonych plików mbox.

/var/mail/$LOGNAME

Folder poczty przychodzącej użytkownika $LOGNAME.

$HOME/mbox

Zarchiwizowane wiadomości pocztowe użytkownika w jego katalogu domowym $HOME.

$HOME/Mail/

Podkatalog katalogu domowego $HOME użytkownika powszechnie używany do przechowywania folderów w formacie mbox.

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

Thomas Roessler <roessler@does-not-exist.org>, Urs Janssen <urs@tin.org>

Format mbox pojawił się w wersji 6 systemu AT&T Unix.
Wariant tego formatu został opisany w dokumencie RFC976.

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Wojtek Kotwica <wkotwica@post.pl> i Robert Luberda <robert@debian.org>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

19 lutego 2002 Unix