mbox
mbox — загальна назва форматів файлів, що використовуються для зберігання повідомлень електронної пошти. Всі повідомлення в поштовій скриньці формату mbox знаходяться в одному текстовому файлі. Початок поштового повідомлення визначається рядком з 5 символів: словом «From» з наступним пробілом. В кінці кожного повідомлення знаходиться пустий рядок.
Формат mbox досі популярний через зручність застосування з програмами обробки тексту.
На відміну від протоколів Інтернету, що використовуються для обміну повідомленнями, формат зберігання електронних повідомлень не був введений за допомогою RFC, а створювався розробниками ПЗ для роботи з електронною поштою.
В mbox (RFC 4155) повідомлення зберігаються у файлах, безпосередньо доступних користувачам, в оригінальному форматі Internet Message (RFC 2822). Так само, як і в іншій формі поштових скриньок MH Message Handling System. Інші системи, такі як Microsoft Exchange Server і Cyrus IMAP Server, зберігають поштові скриньки в централізованих базах даних, що обслуговуються поштовою системою і недоступні користувачам безпосередньо.
Альтернативою mbox часто називають формат зберігання електронних повідомлень maildir.
Сімейство форматів
Існує чотири несумісних між собою формати mbox: mboxo, mboxrd, mboxcl і mboxcl2, що походять з різних версій Unix. Схема найменування була розроблена Daniel J. Bernstein, Rahul Dhesi та іншими в 1996 році. mboxcl і mboxcl2 беруть початок з формату файлів, використовуваних поштовими програмами Unix System V Release 4. mboxrd був розроблений Rahul Dhesi зі співавторами, як покращений варіант mboxo, згодом був адаптований для використання деякими поштовими програмами Unix, включаючи qmail (ориг.: «and subsequently adopted by some Unix mail tools including qmail»).
mboxo і mboxrd визначають початок нового повідомлення по рядку, що починається зі слова «From», яке може міститися як в заголовку поштового повідомлення, так і в його тілі (стара помилка стандарту електронної пошти, яка, можливо, актуальна ще й досі) (ориг.: «a mail standard violation for the former, but likely for the latter»). Перед збереженням у поштовій скриньці формату mbox рядки тіла повідомлення, що починаються зі слова «From» повинні бути попереджені символом «більше»:
>From my point of view...
, що у форматі mbox може призвести до пошкодження повідомлення: якщо символ «більше» вже є на початку рядка перед «From», він залишається без змін. Надалі, при читанні електронної пошти, програма помилково видаляє початковий знак «>». Формат mboxrd вирішує цю проблему заміною «From» на >From і «>From» на «>>From». Таке перетворення завжди є зворотнім.
Приклад:
From MAILER-DAEMON Fri Jul 8 12:08:34 2011
From: Author <author@example.com>
To: Recipient <recipient@example.com>
Subject: Sample message 1
This is the body.
>From (should be escaped).
There are 3 lines.
From MAILER-DAEMON Fri Jul 8 12:08:34 2011
From: Author <author@example.com>
To: Recipient <recipient@example.com>
Subject: Sample message 2
This is the second body.
Формат mboxcl і mboxcl2 використовують заголовок «Content-Length:» для визначення довжини повідомлення і знаходження «справжніх» полів «From». mboxcl все ще використовує «>» для екранування «From», mboxcl2 — ні.
Змінений mbox
Деякі програми використовують для своїх потреб модифікації mbox:
- поштовий клієнт Eudora використовує змінений варіант mboxo, в якому адресу відправника замінено рядком «???@???». Більшість програм поміщають листи в mbox у незмінному вигляді. Eudora зберігає вкладення у вигляді файлів в окремому каталозі;[1]
- програми сімейства Mozilla (Mozilla Firefox, Netscape Navigator, Thunderbird та інші) використовують варіант mboxrd з ускладненими правилами екранування рядків «From».[2]
Блокування файлів
Варіанти mbox використовують різні, несумісні між собою механізми блокування файлів: fcntl(), lockf(), «dot locking». Це не надійно при використанні мережевих файлових систем, наприклад NFS.
Блокування файлів необхідне тому, що безліч повідомлень зберігаються в одному файлі, який може бути пошкоджений при одночасній спробі запису кількома програмами. Таке може статися, якщо програма доставки електронної пошти додає нові повідомлення в той момент, коли програма читання пошти видаляє старе повідомлення.
Рекомендується блокувати файли mbox навіть при простому читанні пошти. Інакше можна побачити пошкоджене повідомлення, якщо інший процес змінює файл в цей час.