Maildir - поширений формат зберігання електронної пошти, що не вимагає монопольного захоплення файлу для забезпечення цілісності поштової скриньки при читанні, додаванні або зміні повідомлень. Кожне повідомлення зберігається в окремому файл з унікальним ім'ям, а кожна папка являє собою каталог. Питаннями при додаванні, переміщенні і видаленні файлів займається локальна файлова система. Всі зміни робляться за допомогою атомарних файлових операцій, таким чином, монопольне захоплення файлу в жодному з випадків не є потрібним.
Тип | архів електронних листів |
---|---|
Розробник | Daniel J. Bernstein |
Специфікації
Каталог Maildir (ім'я якого часто також Maildir
), зазвичай, має три підкаталоги: tmp
, new
і cur
.
Maildir
Оригінальна специфікація формату Maildir була написана Даніелем Бернштайном, автором , , та інших програм. Хоча вихідна специфікація і писалася автором спеціально для своєї програми qmail, вона носить досить загальний характер, тому може бути реалізована в багатьох програмах.
Maildir++
Сем Варшавчик( Sam Varshavchik), автор та інших програм, написав розширення формату Maildir під назвою Maildir++ для підтримки вкладених папок і квот на пошту. У каталогах Maildir++ знаходяться підкаталоги з назвами, що починаються з точки ("."), які також є папками Maildir++. Це розширення, в зв'язку з цим, є порушенням специфікації Maildir, в якій наводиться вичерпний список можливого вмісту Maildir, але це сумісне відхилення і інше програмне забезпечення, що підтримує Maildir, підтримує і Maildir++.
Технічні операції
При доставці повідомлення воно поміщається в файл в підкаталозі tmp
(наприклад, SMTP-сервером postfix). Ім'я файлу формується з поточного часу, імені хоста, ідентифікатора процесу, який створив цей файл, і деякого випадкового числа — таким чином гарантується унікальність імен файлів.
Після запису в файл всього повідомлення зазвичай створюється жорстке посилання на цей файл в каталозі new
, а поточне посилання з tmp
видаляється, але в деяких реалізаціях просто використовується системний виклик rename()
, — все це робиться для того, щоб ніякий інший процес не зміг прочитати вміст повідомлення до тих пір, поки воно не буде записане повністю, оскільки MUA ніколи не дивляться в tmp
.
Коли поштовий клієнт знаходить повідомлення в каталозі new
, він переміщує їх у cur
(за допомогою rename()
, оскільки використання жорстких посилань, в даному випадку, може привести до дублювання повідомлень) і перед читанням файлів додає до їхніх імен інформаційні суфікси. Інформаційний суфікс складається з двокрапки (для поділу унікальної частини імені файлу і поточної інформації), числа '2', коми і різних прапорців. Число '2' вказує, грубо кажучи, версію інформації після коми. '2' — це єдина офіційно визначена в даний час версія. '1' відноситься до експериментальної версії. Можна лише припустити, що цей номер версії використовувався в процесі розробки формату Maildir. Специфікація визначає прапорці, які показують, чи було повідомлення прочитане, видалене і так далі, для них використовуються перші (великі) літери наступних слів: Passed, Replied, Seen, Trashed, Draft і Flagged. В Dovecot використовуються літери нижнього регістру (рядкові) для забезпечення відповідності 26 ключовим словам IMAP, куди можуть входити як стандартні ключові слова, такі як $MDNSent, так і прапорці визначені користувачем.
Технічні проблеми
Некоректний стан при роботі без блокувань
Daniel J. Bernstein проектував Maildir так, щоб кілька процесів могли безпечно проводити запис паралельно, без будь-якого явного блокування і навіть при використанні NFS. На практиці це працює досить добре, але може призводити до дивацтв. У процесі читання структури каталогу будь-які файли, які будуть перейменовані між першим і останнім системними викликами readdir()
, можуть не з'явитися в списку файлів. Це змушує читаючий процес повірити в те, що повідомлення було видалене, тоді як насправді змінилися лише його прапорці. Коли процес зчитує список повідомлень знову, раптом знову з'являється "видалене" повідомлення. Для усунення подібного роду проблем деякі програми доступу до пошти вводять свої власні блокування поверх Maildir. В Dovecot, наприклад, разом з Maildir використовується власна нестандартна система блокувань.
Блокування і масштабування
Існують неявні блокування, які використовуються файловою системою при оновленні каталогів. Некластерні файлові системи зазвичай дозволяють тільки одному потоку виконання ядра в будь-який момент часу оновлювати дані про те, що знаходиться в каталозі, тому системний виклик rename()
забезпечить необхідне блокування. Maildir не є системою без блокувань (lock-free), а лише системою без явних блокувань (explicit-lock-free). Для багатьох поштових систем розміром від малих до середніх це адекватно масштабується навіть на NFS, але коли система стає великою і обробляє безліч паралельних доставок, постійна зміна вмісту багатьох каталогів одночасно буде постійно призводити до недійсності даних кешу (cache invalidation) різних NFS-клієнтів, тому потрібно буде повторно проводити віддалені виклики процедур (RPC) READDIR, що погано масштабується. Крім того, багато файлових систем мають обмеження по числу файлів на каталог.
Maildir страждає, таким чином, від успадкованих обмежень масштабування всіх систем зберігання листів, побудованих за принципом «один лист — один файл».
Сумісність з файловими системами
Стандарт Maildir не можна реалізувати без модифікації на системах, що не підтримують двокрапки в іменах файлів. Сюди входять Microsoft Windows і деякі конфігурації .
У програмах, що працюють на таких системах, може використовуватися альтернативний роздільник (такий як ";" або "-"), і часто для його використання досить виправити програму, наклавши просту латку, оскільки мова йде про вільне і відкрите програмне забезпечення.
Оскільки в даний час немає угод про те, який символ використовувати для альтернативного роздільника, то на таких системах можуть бути проблеми взаємодії між різними програмами, що підтримують Maildir. Але не всім працюючим з Maildir програмам потрібно знати, який роздільник використовується, оскільки не всім програмам потрібно мати можливість читати або модифікувати прапорці повідомлень («read", "replied to" і т. д.). У програм, призначених лише для доставки пошти в Maildir, або програм архівації старих повідомлень звідти, тільки на основі їх дати, не повинно бути проблем з роботою незалежно від використовуваного роздільника. У разі, якщо читати і змінювати прапорці повідомлень потрібно тільки поштовому клієнту, і якщо використовується тільки один такий клієнт, то ніяких проблем взаємодії при використанні нестандартного роздільника не буде.
Програмне забезпечення, що безпосередньо підтримує Maildir
Поштові сервери
- IMAP-сервер bincimap
- IMAP-сервер Dovecot
- SMTP-і IMAP-сервер , для якого був винайдений формат Maildir++
- SMTP-сервер Exim
- SMTP-сервер Postfix
- SMTP-сервер , для якого був винайдений формат Maildir
- Відкритий крос-платформний (для *nix і Windows) SMTP-і POP3-сервер XMail
- SMTP-сервер MeTA1
- Поштовий сервер MagicMail
- Поштовий сервер
- Поштовий сервер Office Mail Server
Агенти доставки
- Maildrop
- Getmail - агент отримання та доставки пошти з підтримкою Maildir, що є альтернативою програмі
- mbsync
- OfflineIMAP
- mswatch
- mpop
Програми читання пошти
- Balsa - програма, яка раніше була офіційним користувацьким поштовим агентом GNOME (до Evolution)
- Cone - поштова програма з Curses-інтерфейсом
- mailx
- GNUMail
- KMail - програма читання пошти KDE
- Evolution - офіційний поштовий клієнт GNOME
Утиліти індексування і пошуку в пошті
- Beagle - може індексувати Maildir і багато інших форматів зберігання інформації
- Mairix - програма для індексування та пошуку повідомлень електронної пошти, збережених у форматі Maildir, MH або mbox
- Mboxgrep [ 13 липня 2012 у Wayback Machine.] - програма, яка може здійснювати пошук в папках Maildir. Це подібно до використання grep.
- notmuch - програма для індексування та пошуку поштових повідомлень, збережених в Maildir
- mu [ 24 жовтня 2012 у Wayback Machine.] - набір утиліт командного рядка для пошуку в каталогах Maildir
Програмне забезпечення, що опосередковано підтримує Maildir
Кількість програм, які можуть використовуватися разом з Maildir, насправді є набагато більшою, якщо враховувати взаємодію цих програм одна з одною і роль протоколів мережевого доступу.
Наприклад:
- Sendmail MTA не підтримує жодного формату доставки пошти (хоча багато хто думає, що підтримує). Sendmail використовує окремий процес доставки під назвою
mail.local
. Замістьmail.local
можуть використовуватися Procmail (та інші програми, що підтримують Maildir), тому справедливо буде сказати, що Sendmail підтримує Maildir в тій же мірі як і будь-який інший формат. - Багато програм читання пошти не підтримують Maildir, але підтримують формати віддаленого доступу, такі як IMAP. Оскільки існують різні сховища пошти IMAP, що підтримують Maildir, то будь-яка поштова програма, що підтримує IMAP, така як Microsoft Outlook, або Mozilla Thunderbird, може використовуватися для доступу до папок Maildir.
- Програма не підтримує Maildir (або будь-який формат локальної доставки), але оскільки вона розмовляє з SMTP-сервером або локальним агентом доставки, то будь-яка з вищезазначених програм може використовуватися для доставки пошти від Fetchmail в Maildir.
Див. також
Примітки
- Daniel J. Bernstein. (1995) Using maildir format (the original specification) [ 2 вересня 2000 у Wayback Machine.]
- Varshavchik, Sam (1998) Maildir++ и квоты Maildir [ 13 липня 2012 у Wayback Machine.], где скрыта спецификация Maildir++
- . Архів оригіналу за 9 жовтня 2012. Процитовано 28 січня 2022.
- . Архів оригіналу за 29 січня 2022. Процитовано 28 січня 2022.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Maildir poshirenij format zberigannya elektronnoyi poshti sho ne vimagaye monopolnogo zahoplennya fajlu dlya zabezpechennya cilisnosti poshtovoyi skrinki pri chitanni dodavanni abo zmini povidomlen Kozhne povidomlennya zberigayetsya v okremomu fajl z unikalnim im yam a kozhna papka yavlyaye soboyu katalog Pitannyami pri dodavanni peremishenni i vidalenni fajliv zajmayetsya lokalna fajlova sistema Vsi zmini roblyatsya za dopomogoyu atomarnih fajlovih operacij takim chinom monopolne zahoplennya fajlu v zhodnomu z vipadkiv ne ye potribnim MaildirTiparhiv elektronnih listivRozrobnikDaniel J BernsteinVnutrishnya struktura formatu MaildirSpecifikaciyiKatalog Maildir im ya yakogo chasto takozh Maildir zazvichaj maye tri pidkatalogi tmp new i cur Maildir Originalna specifikaciya formatu Maildir bula napisana Danielem Bernshtajnom avtorom ta inshih program Hocha vihidna specifikaciya i pisalasya avtorom specialno dlya svoyeyi programi qmail vona nosit dosit zagalnij harakter tomu mozhe buti realizovana v bagatoh programah Maildir Sem Varshavchik Sam Varshavchik avtor ta inshih program napisav rozshirennya formatu Maildir pid nazvoyu Maildir dlya pidtrimki vkladenih papok i kvot na poshtu U katalogah Maildir znahodyatsya pidkatalogi z nazvami sho pochinayutsya z tochki yaki takozh ye papkami Maildir Ce rozshirennya v zv yazku z cim ye porushennyam specifikaciyi Maildir v yakij navoditsya vicherpnij spisok mozhlivogo vmistu Maildir ale ce sumisne vidhilennya i inshe programne zabezpechennya sho pidtrimuye Maildir pidtrimuye i Maildir Tehnichni operaciyiPri dostavci povidomlennya vono pomishayetsya v fajl v pidkatalozi tmp napriklad SMTP serverom postfix Im ya fajlu formuyetsya z potochnogo chasu imeni hosta identifikatora procesu yakij stvoriv cej fajl i deyakogo vipadkovogo chisla takim chinom garantuyetsya unikalnist imen fajliv Pislya zapisu v fajl vsogo povidomlennya zazvichaj stvoryuyetsya zhorstke posilannya na cej fajl v katalozi new a potochne posilannya z tmp vidalyayetsya ale v deyakih realizaciyah prosto vikoristovuyetsya sistemnij viklik rename vse ce robitsya dlya togo shob niyakij inshij proces ne zmig prochitati vmist povidomlennya do tih pir poki vono ne bude zapisane povnistyu oskilki MUA nikoli ne divlyatsya v tmp Koli poshtovij kliyent znahodit povidomlennya v katalozi new vin peremishuye yih u cur za dopomogoyu rename oskilki vikoristannya zhorstkih posilan v danomu vipadku mozhe privesti do dublyuvannya povidomlen i pered chitannyam fajliv dodaye do yihnih imen informacijni sufiksi Informacijnij sufiks skladayetsya z dvokrapki dlya podilu unikalnoyi chastini imeni fajlu i potochnoyi informaciyi chisla 2 komi i riznih praporciv Chislo 2 vkazuye grubo kazhuchi versiyu informaciyi pislya komi 2 ce yedina oficijno viznachena v danij chas versiya 1 vidnositsya do eksperimentalnoyi versiyi Mozhna lishe pripustiti sho cej nomer versiyi vikoristovuvavsya v procesi rozrobki formatu Maildir Specifikaciya viznachaye praporci yaki pokazuyut chi bulo povidomlennya prochitane vidalene i tak dali dlya nih vikoristovuyutsya pershi veliki literi nastupnih sliv Passed Replied Seen Trashed Draft i Flagged V Dovecot vikoristovuyutsya literi nizhnogo registru ryadkovi dlya zabezpechennya vidpovidnosti 26 klyuchovim slovam IMAP kudi mozhut vhoditi yak standartni klyuchovi slova taki yak MDNSent tak i praporci viznacheni koristuvachem Tehnichni problemiNekorektnij stan pri roboti bez blokuvan Daniel J Bernstein proektuvav Maildir tak shob kilka procesiv mogli bezpechno provoditi zapis paralelno bez bud yakogo yavnogo blokuvannya i navit pri vikoristanni NFS Na praktici ce pracyuye dosit dobre ale mozhe prizvoditi do divactv U procesi chitannya strukturi katalogu bud yaki fajli yaki budut perejmenovani mizh pershim i ostannim sistemnimi viklikami readdir mozhut ne z yavitisya v spisku fajliv Ce zmushuye chitayuchij proces poviriti v te sho povidomlennya bulo vidalene todi yak naspravdi zminilisya lishe jogo praporci Koli proces zchituye spisok povidomlen znovu raptom znovu z yavlyayetsya vidalene povidomlennya Dlya usunennya podibnogo rodu problem deyaki programi dostupu do poshti vvodyat svoyi vlasni blokuvannya poverh Maildir V Dovecot napriklad razom z Maildir vikoristovuyetsya vlasna nestandartna sistema blokuvan Blokuvannya i masshtabuvannya Isnuyut neyavni blokuvannya yaki vikoristovuyutsya fajlovoyu sistemoyu pri onovlenni katalogiv Neklasterni fajlovi sistemi zazvichaj dozvolyayut tilki odnomu potoku vikonannya yadra v bud yakij moment chasu onovlyuvati dani pro te sho znahoditsya v katalozi tomu sistemnij viklik rename zabezpechit neobhidne blokuvannya Maildir ne ye sistemoyu bez blokuvan lock free a lishe sistemoyu bez yavnih blokuvan explicit lock free Dlya bagatoh poshtovih sistem rozmirom vid malih do serednih ce adekvatno masshtabuyetsya navit na NFS ale koli sistema staye velikoyu i obroblyaye bezlich paralelnih dostavok postijna zmina vmistu bagatoh katalogiv odnochasno bude postijno prizvoditi do nedijsnosti danih keshu cache invalidation riznih NFS kliyentiv tomu potribno bude povtorno provoditi viddaleni vikliki procedur RPC READDIR sho pogano masshtabuyetsya Krim togo bagato fajlovih sistem mayut obmezhennya po chislu fajliv na katalog Maildir strazhdaye takim chinom vid uspadkovanih obmezhen masshtabuvannya vsih sistem zberigannya listiv pobudovanih za principom odin list odin fajl Sumisnist z fajlovimi sistemami Standart Maildir ne mozhna realizuvati bez modifikaciyi na sistemah sho ne pidtrimuyut dvokrapki v imenah fajliv Syudi vhodyat Microsoft Windows i deyaki konfiguraciyi U programah sho pracyuyut na takih sistemah mozhe vikoristovuvatisya alternativnij rozdilnik takij yak abo i chasto dlya jogo vikoristannya dosit vipraviti programu naklavshi prostu latku oskilki mova jde pro vilne i vidkrite programne zabezpechennya Oskilki v danij chas nemaye ugod pro te yakij simvol vikoristovuvati dlya alternativnogo rozdilnika to na takih sistemah mozhut buti problemi vzayemodiyi mizh riznimi programami sho pidtrimuyut Maildir Ale ne vsim pracyuyuchim z Maildir programam potribno znati yakij rozdilnik vikoristovuyetsya oskilki ne vsim programam potribno mati mozhlivist chitati abo modifikuvati praporci povidomlen read replied to i t d U program priznachenih lishe dlya dostavki poshti v Maildir abo program arhivaciyi starih povidomlen zvidti tilki na osnovi yih dati ne povinno buti problem z robotoyu nezalezhno vid vikoristovuvanogo rozdilnika U razi yaksho chitati i zminyuvati praporci povidomlen potribno tilki poshtovomu kliyentu i yaksho vikoristovuyetsya tilki odin takij kliyent to niyakih problem vzayemodiyi pri vikoristanni nestandartnogo rozdilnika ne bude Programne zabezpechennya sho bezposeredno pidtrimuye MaildirPoshtovi serveri IMAP server bincimap IMAP server Dovecot SMTP i IMAP server dlya yakogo buv vinajdenij format Maildir SMTP server Exim SMTP server Postfix SMTP server dlya yakogo buv vinajdenij format Maildir Vidkritij kros platformnij dlya nix i Windows SMTP i POP3 server XMail SMTP server MeTA1 Poshtovij server MagicMail Poshtovij server Poshtovij server Office Mail ServerAgenti dostavki Maildrop Getmail agent otrimannya ta dostavki poshti z pidtrimkoyu Maildir sho ye alternativoyu programi mbsync OfflineIMAP mswatch mpopProgrami chitannya poshti Balsa programa yaka ranishe bula oficijnim koristuvackim poshtovim agentom GNOME do Evolution Cone poshtova programa z Curses interfejsom mailx GNUMail KMail programa chitannya poshti KDE Evolution oficijnij poshtovij kliyent GNOMEUtiliti indeksuvannya i poshuku v poshti Beagle mozhe indeksuvati Maildir i bagato inshih formativ zberigannya informaciyi Mairix programa dlya indeksuvannya ta poshuku povidomlen elektronnoyi poshti zberezhenih u formati Maildir MH abo mbox Mboxgrep 13 lipnya 2012 u Wayback Machine programa yaka mozhe zdijsnyuvati poshuk v papkah Maildir Ce podibno do vikoristannya grep notmuch programa dlya indeksuvannya ta poshuku poshtovih povidomlen zberezhenih v Maildir mu 24 zhovtnya 2012 u Wayback Machine nabir utilit komandnogo ryadka dlya poshuku v katalogah MaildirProgramne zabezpechennya sho oposeredkovano pidtrimuye MaildirKilkist program yaki mozhut vikoristovuvatisya razom z Maildir naspravdi ye nabagato bilshoyu yaksho vrahovuvati vzayemodiyu cih program odna z odnoyu i rol protokoliv merezhevogo dostupu Napriklad Sendmail MTA ne pidtrimuye zhodnogo formatu dostavki poshti hocha bagato hto dumaye sho pidtrimuye Sendmail vikoristovuye okremij proces dostavki pid nazvoyu mail local Zamist mail local mozhut vikoristovuvatisya Procmail ta inshi programi sho pidtrimuyut Maildir tomu spravedlivo bude skazati sho Sendmail pidtrimuye Maildir v tij zhe miri yak i bud yakij inshij format Bagato program chitannya poshti ne pidtrimuyut Maildir ale pidtrimuyut formati viddalenogo dostupu taki yak IMAP Oskilki isnuyut rizni shovisha poshti IMAP sho pidtrimuyut Maildir to bud yaka poshtova programa sho pidtrimuye IMAP taka yak Microsoft Outlook abo Mozilla Thunderbird mozhe vikoristovuvatisya dlya dostupu do papok Maildir Programa ne pidtrimuye Maildir abo bud yakij format lokalnoyi dostavki ale oskilki vona rozmovlyaye z SMTP serverom abo lokalnim agentom dostavki to bud yaka z vishezaznachenih program mozhe vikoristovuvatisya dlya dostavki poshti vid Fetchmail v Maildir Div takozhmbox mailspoolPrimitkiDaniel J Bernstein 1995 Using maildir format the original specification 2 veresnya 2000 u Wayback Machine Varshavchik Sam 1998 Maildir i kvoty Maildir 13 lipnya 2012 u Wayback Machine gde skryta specifikaciya Maildir Arhiv originalu za 9 zhovtnya 2012 Procitovano 28 sichnya 2022 Arhiv originalu za 29 sichnya 2022 Procitovano 28 sichnya 2022