.\" -*- coding: UTF-8 -*- .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH maildir 5 .SH NAZWA maildir \- katalog na przychodzące wiadomości pocztowe .SH WPROWADZENIE \fImaildir\fP jest strukturą drzewiastą katalogów listów przychodzących. Rozwiązuje problemy niezawodności, jakie trapiły pliki \fImbox\fP i katalogi pocztowe \fImh\fP. .SH "KWESTIE NIEZAWODNOŚCI" Podczas przekazywania listu może nastąpić załamanie się systemu. W przypadku plików \fImbox\fP, jak i katalogów \fImh\fP list ten zostanie wówczas obcięty. Co gorsza: przy formacie \fImbox\fP, jeśli list zostanie ucięty w środku linii, to zostanie złączony z następnym. Agent transportu poczty (MTA) będzie później próbował ponownie dostarczyć list, ale jest niedopuszczalne, żeby popsuta wiadomość w ogóle się pojawiała. W \fImaildir\fP każdy list po przesłaniu jest z pewnością kompletny. Na danej maszynie mogą równocześnie pracować dwa programy dostarczające pocztę do tego samego użytkownika. Formaty \fImbox\fP i \fImh\fP wymagają, by oba programy aktualizowały jeden centralny plik. Jeśli nie korzystają one z jakiegoś mechanizmu blokowania, to plik ten zostanie uszkodzony. Istnieje kilka mechanizmów blokowania \fImbox\fP i \fImh\fP, z których żaden nie działa przenośnie i niezawodnie. W przypadku \fImaildir\fP żadne blokady nie są nigdy potrzebne. Różne procesy dostarczania nigdy nie tykają tego samego pliku. Użytkownik może próbować usunąć listy ze swojej skrzynki w tej samej chwili, gdy maszyna dostarcza nowy list. Przy formatach \fImbox\fP i \fImh\fP czytnik poczty użytkownika musi wiedzieć, jakiego mechanizmu blokowania używają programy dostarczające pocztę. Inaczej jest w przypadku \fImaildir\fP, gdzie czytnik poczty może bezpiecznie aktualizować lub usuwać dowolny dostarczony list. Wiele ośrodków korzysta z Sunowego \fBNetwork F\fPa\fBil\fPur\fBe System\fP (NFS), zapewne dlatego, że dostawca systemu operacyjnego nie oferuje niczego innego. NFS pogarsza wszystkie powyższe problemy. Niektóre z implementacji NFS nie zapewniają \fBżadnego\fP solidnego mechanizmu blokowania. Przy formatach \fImbox\fP i \fImh\fP, gdy dwie maszyny dostarczają pocztę do tego samego użytkownika lub gdy użytkownik czyta pocztę gdzieś poza maszyną dostarczającą, jego poczta jest zagrożona. \fImaildir\fP działa z NFS bez kłopotów. .SH "STRUKTURA MAILDIR" Katalog w formacie \fImaildir\fP ma trzy podkatalogi, wszystkie na tym samym systemie plików: \fBtmp\fP, \fBnew\fP i \fBcur\fP. Każdy plik w \fBnew\fP jest świeżo dostarczonym listem. Czas modyfikacji pliku jest czasem dostarczenia. List jest dostarczany \fIbez\fP dodatkowej linii \fBFrom_\fP w stylu UUCP, \fIbez\fP żadnego cytowania \fB>From\fP i \fIbez\fP dodatkowej pustej linii na końcu. Wiadomość ma normalnie format RFC 822, zaczynając się liniami \fBReturn\-Path\fP i \fBDelivered\-To\fP, ale może zawierać dowolne dane binarne. Może nawet nie kończyć się znakiem nowej linii. Pliki w \fBcur\fP są takie jak w \fBnew\fP. Różnicę stanowi to, że pliki w \fBcur\fP nie są już nowymi listami: czytnik poczty użytkownika już je widział. .SH "JAK LIST JEST DOSTARCZANY" Do zapewnienia niezawodności dostarczania wykorzystuje się katalog \fBtmp\fP. Program dostarcza przesyłkę pocztową w sześciu etapach. Najpierw, wykonuje \fBchdir()\fP do katalogu \fImaildir\fP. Potem pobiera za pomocą \fBstat()\fP informacje o pliku o nazwie \fBtmp/\fP\fItime.pid.host\fP, gdzie \fItime\fP to liczba sekund od początku roku 1970 strefy czasowej GMT, \fIpid\fP to identyfikator procesu programu, a \fIhost\fP jest nazwą komputera. W kroku trzecim, jeśli \fBstat()\fP zwrócił coś innego niż ENOENT [ENOENT=plik nie istnieje], program zasypia na dwie sekundy, aktualizuje \fItime\fP, i ponownie próbuje \fBstat()\fP, ograniczoną liczbę razy. W czwartym kroku program tworzy \fBtmp/\fP\fItime.pid.host\fP. W piątym zapisuje przez \fIzapis\-NFS\fP przesyłkę do utworzonego pliku. W szóstym kroku program, za pomocą \fBlink()\fP tworzy nowe dowiązanie tego pliku, \fBnew/\fP\fItime.pid.host\fP. W tym momencie list dostał pomyślnie dostarczony. Program dostarczający przed utworzeniem \fBtmp/\fP\fItime.pid.host\fP powinien uruchomić 24\-godzinny licznik czasu i porzucić dostarczanie jeśli licznik zostanie przekroczony. W przypadku wystąpienia błędu, przekroczenia limitu czasu czy normalnego zakończenia działania, program może spróbować użyć \fBunlink()\fP do usunięcia \fBtmp/\fP\fItime.pid.host\fP. \fIZapis\-NFS\fP oznacza (1) jak zwykle, sprawdzenie liczby bajtów zwracanych z każdego wywołania \fBwrite()\fP; (2) wywołanie \fBfsync()\fP i sprawdzenie zwróconej wartości; (3) wywołanie \fBclose()\fP i sprawdzenie zwróconej wartości. (Standardowe implementacje NFS obsługują \fBfsync()\fP niepoprawnie, ale poprawiają to niewłaściwym użyciem \fBclose()\fP). .SH "JAK LIST JEST CZYTANY" Czytnik poczty działa jak następuje. Przegląda katalog \fBnew\fP, szukając nowych wiadomości. Powiedzmy, że mamy nowy list, \fBnew/\fP\fIunikat\fP. Czytnik może swobodnie wyświetlić zawartość pliku \fBnew/\fP\fIunikat\fP, usunąć go lub zmienić mu nazwę na \fBcur/\fP\fIunikat:info\fP. Znaczenie \fIinfo\fP opisano na stronie \fBhttp://pobox.com/~djb/proto/maildir.html\fP. Oczekuje się również, że czytnik przeglądnie katalog \fBtmp\fP i wyczyści ewentualne znalezione tam stare pliki. Plik w \fBtmp\fP można bezpiecznie usunąć jeśli nie sięgano do niego w ciągu ostatnich 36 godzin. Warto, by czytniki pomijały wszystkie te pliki w \fBnew\fP i \fBcur\fP, których nazwy zaczynają się od kropki. Czytniki nie powinny próbować analizować nazw plików. .SH "ZMIENNE ŚRODOWISKOWE" Czytniki poczty obsługujące \fImaildir\fP korzystają ze zmiennej środowiskowej \fBMAILDIR\fP jako nazwy podstawowego katalogu pocztowego użytkownika. .SH "ZOBACZ TAKŻE" mbox(5), qmail\-local(8) .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Wojtek Kotwica i Robert Luberda . Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres .MT manpages-pl-list@lists.sourceforge.net .ME .