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. Такое преобразование всегда обратимо.[1]

Пример:

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 хранит вложения в виде файлов в отдельном каталоге.[2]
  • программы семейства Mozilla (Mozilla, Netscape, Thunderbird и другие) используют вариант mboxrd с усложнёнными правилами экранирования строк «From».[3]

Блокировка файлов[править | править код]

Варианты mbox используют разные, несовместимые между собой механизмы блокировки файлов: fcntl(), lockf(), «dot locking».

Блокировка файлов необходима потому, что множество сообщений хранится в одном файле, который может быть повреждён при одновременной попытке записи несколькими программами. Такое может произойти, если программа доставки электронной почты добавляет новые сообщения в тот момент, когда программа чтения почты удаляет старое сообщение.

Рекомендуется блокировать файлы mbox даже при простом чтении почты. Иначе можно увидеть повреждённое сообщение, если другой процесс изменяет файл в это время.

См. также[править | править код]

Примечания[править | править код]

  1. FGA: «mbox» is a family of several mutually incompatible mailbox formats Архивировано 3 ноября 2012 года.
  2. «Eudora 6.2.4 Mac user Guide, page 113». Дата обращения: 24 июня 2013. Архивировано 12 июля 2014 года.
  3. «Importing and exporting your mail». Дата обращения: 24 июня 2013. Архивировано 3 июля 2013 года.