Na jednu stranu mam skodolibou radost, protoze v Centru jsme to zvladli :-) Na druhou stranu se jim moc nedivim, protoze IMAP RFC misty predepisuje chovani, ktere si prakticky vynucuje urcity zpusob ukladani dat a na druhou stranu nektere zasadni veci neresi (treba jak escapovat specialni znaky ve jmenech slozek).
Zrovna včera jste mě taky naštvali - když v Kmailu přesunu přes drag & drop několik mailů najednou do jiné složky v rámci účtu na Centru (IMAP), přesune se jen ten poslední a ostatní se ztratí. Třeba je chyba v Kmailu, ale Atlasu (taky IMAP) to funguje dobře.
Specialni znaky ve jmenech imap slozek resi RFC2192. CO se tyche ukladani dat - myslim ze Maildir, (nuceny imapem?) je o dost prijemnejsi v praci nez je mailbox...
IMAP nevyzaduje maildir, je to vsak vyhodnejsi sposob ukladania mailov oproti mailbox (najma co do pristupovych casov). Jediny problem by som videl v zahlteni servera mnozstvom malych fajlov (pri maidire 1 mail = 1 subor). To sa vsak da vyriesit vhodnou volbou FS, tato uloha sa prenechava citatelovi ako cvicenie (hint: FAT16 nebude vhodny FS :-D)
Hm, to RFC resi neco ponekud jineho. Mel jsem na mysli problem jako (ted nevim presne, jestli je to zrovna tohle): "jak se zapise jako parametr prikazu SELECT jmeno slozky, ktere obsahuje uvozovku".
Ukladani dat: Neresime ukladani mailu na lokalnim FS, ale situaci, kdy mate nejaky distribuovany datovy sklad mailu, s komunikaci pres TCP a nejakymi vlastnostmi a musite k nemu napsat IMAP rozhrani. RFC v mnoha pripadech (a IMHO zbytecne) predepisuje semantiku, ktera vyzaduje od datoveho skladu urcite vlastnosti.
A jeste jedna vec - system zadavani dlouhych retezcu delkou je sice fajn, ale jelikoz RFC pozaduje, aby prikaz skoncil pri chybe nejdrive co muze, tak se prikazova radka dost spatne parsuje :-/
A? Problem neni ve FS, ale v tom, ze musis napsat IMAP pro nejaky uz existujici ulozny system. Jesti je to filozoficky delane jako FS nebo nejak jinak je irelevantni.
Nejspíš skladují maily v databázi, či nějakým podobným způsobem, jinými slovy, maildir vs nudle v souboru je skutečně irelevantní, neb to není ani jedno z toho.
Neustále tady někdo tvrdí něco o distribuovaném filesystemu, ale není mi jasný, proč bych měl v případě systému s více jak tisíci uživateli používat na odkládání mailů filesystem. Jednak k tomu jde přistupovat několika dírama, čili by se muselo řešit zamykání. Muselo by se toho řešit poměrně hodně. Pokud na totéž použijete databázi, potom jednak můžete pop3 běžet na několika serverech kvůli vyrovnávání zátěže, druhák můžete použít něco poměrně mocného databázového na vyřešení zbytku. Nezajimavý není ani to, že rozhraní mezi web skripty a databází se dělá snáz proti témuž nad soubory. Zjednoduší se autentizace uživatelů atd. Mohl bych pokračovat. V principu to ale znamená, že musíte napsat vlastní POP3 server a MDA, což jde ale velmi snadno. MDA znamená načíst data a někam je praštit, to jde snadno, POP3 je jednoduchej protokol. Nebezpečí to má v zásadě jediný - 1GB přílohy u mailu a podobné prasečiny. (ISO image CDčka coby přílohu u mailu jsem už potkal...) I to se ale dá odchytat a odložit jinam. Pokud ale zkusíte nad totéž napsat IMAP, zjistíte, že problém nabývá poněkud komplexnějších rozměrů. Není to neřešitelné, ale je to pracné a popravdě řečeno, u každé firmy musíte v zásadě jít metodou největšího zisku a pokud se má dělat něco takového, každý si dá nejdřív na jednu stranu náklady a na druhou zisk. Pokud je to ziskový bez rizika, není o čem přemýšlet, pokud je to ziskový s rizikem, musí se to dobře zvážit a pokud je to neziskový, či ztrátový, tak se pochopitelně není o čem bavit. A kam do té kategorie by asi patřila implementace IMAPu, nad takový systém.
Závěrem podotýkám, že jsem pro ně nikdy nepracoval, takže to, co jsem popsal, je drobný nástin toho, jak bych to dělal já. Jestli to náhodou mají stejně....