next up previous contents
Next: Hogyan álljunk át Mailbox-rol Up: QMAIL, mint POP3 szerver Previous: Telepítése   Contents

MAILDIR

Ebben a fejezetben összehasonlítjuk az Mbox formátumot a Maildir-rel.

 

Mi történik, ha pont akkor dől össze a rendszer, amikor éppen hozzáfűzi az érkező levelet a Mailbox-hoz? Az üzenet alaposan meg lesz csonkítva, ráadásul ha a sor közepén történik a "baleset", akkor a következő levél ehhez a törött sorhoz lesz hozzáfűzve. A mailer persze megérti, hogy el lett rontva a kézbesítés, és újra kikézbesíti, de utána már elég problémás megjavítani az összeroncsolt mbox-to, nem beszélve arról, hogy a szakadt üzenetet már nem lehet visszaállítani.

Ezzel szemben a maildir formátum eléggé crash-biztos, gyorsabb és megbízhatóbb, mint az mbox, ráadásul csodákra képes, ha NFS-en át használjuk. Az mbox formátum magában is elég megbízhatatlan, de NFS-en át még rosszabb, az NFS átviteli tulajdonságai miatt.

Mailbox formátumnál könnyen előfordulhat, hogy egyszerre több processz akar ugyanabba a file-ba kézbesíteni. Ilyenkor, hacsak nem alkalmaznak valamiféle lockolű mechanizmust, az mbox könnyen megsérülhet. Kitaláltak már elég sok mbox és mh lockoló módszert, de még egyik sem mutatkozott nagyon stabilnak. Maildir formátumnál egyáltalán nincs szükség lockoló mechanizmusra, mert sohasem fordul elő, hogy különböző processzek ugyanabba a file írjanak.

Mbox-nál az is előfordulhat, hogy kézbesítés közben a kedves felhasználó épp kézbesítés közben szeretne levelet törölni a Mailbox-ból. Ehhez a levelező programnak ismernie kell a kézbesítő által használt lockoló mechanizmust. Maildir használatánál a levelezőnek nem kell ezzel foglalkoznia.

Sok site még most is használják a Sun NFS rendszerét, valószínűleg azért, mert a forgalmazó nem kínált más megoldást. Az NFS csak súlyosbítja az előbb említett problémákat, ugyanis vannak olyan NFS implementációk, amelyek SEMMILYEN lockoló mechanizmust nem tartalmaznak, így az mbox file-ok épségét kockáztatják, ha egynél több kézbesítés történik egyszerre.

A Maildir felépítése:

$HOME/Maildir/new

             /cur

             /tmp

A /new tartalmazza az éppen fogadott üzeneteket, ahol a file modifikációs dátuma a kézbesítés időpontját jelenti.Ez az üzenet mentes mindenféle UUCP sallangtól, mint a FROM_ mező, és üres sor sincs a végén.

A /cur teljesen ugyanez a stílus, a különbség csak annyi, hogy az itt tárolt leveleket már olvasták, és a levelezőprogram mozgatta át őket a /new könyvtárból.

A Maildir titka a /tmp könyvtár, ami garancia a halálbiztos kézbesítésre.

A kézbesítés hat lépcsőben történik:

1. Belép a Maildir könyvtárba.

2. A stat() függvénnyel megnézi, hogy a Maildir/tmp-ben van-e idő.pid.host_neve formátumú file-névvel rendelkező állomány. (idő=1970 óta eltelt másodpercek száma (9 jegy), a kézbesítő processz ID-ja (max. 5 jegy), és a gép host neve)

3. Ha a stat() azzal jön vissza, hogy ilyen file már létezik, akkor vár egy másodpercet, és újra megnézi.

4. Létrehozza az idő.pid.host_neve file-t.

5. Beleírja a levelet a file-ba.

6. Csinál egy hardlinket a /new könyvtárba /new/idő.pid.host_neve névre. Ebben a pillanatban befejezettnek tekinthetjük a kézbesítést.

 

Hogyan működik az olvasás?

A levelező a Maildir/new-ból tudja a levelet olvasni, de akár le is törölheti. Olvasás után a levél átkerül a /cur könyvtárba, de nem ugyanarra a névre, hanem kap még egy :-al elválaszott infó mezőt is, ahol:

1. Kísérleti szemantika

2. Azt jelenti, hogy minden, a vessző utáni karakter egy különálló flagnek felel meg.

Flagek:

S: Seen, olvasott levél

T: Trash, törlésre kijelölt levél

F: Flagged: későbbi user tranzakcióra kijelölt levél.

Egyetlen kikötés a flag-ekkel kapcsolatban, hogy az ASCII táblának megfelelő sorrendben legyenek. Pl.: 2,FRS




next up previous contents
Next: Hogyan álljunk át Mailbox-rol Up: QMAIL, mint POP3 szerver Previous: Telepítése   Contents
Czeh Istvan
1999-10-21