Mbox - это общий термин для семейства связанных форматов файлов, используемых для хранения коллекций сообщений электронной почты. Впервые он был реализован в пятой редакции Unix .
Все сообщения в почтовом ящике mbox объединяются и хранятся в виде простого текста в одном файле. Каждое сообщение начинается с четырех символов «От», за которыми следует пробел (так называемая «строка From_») и адрес электронной почты отправителя. RFC 4155 определяет, что метка времени в формате UTC следует после другого разделительного символа пробела. [1]
Формат, похожий на mbox, - это система обработки сообщений MH . Другие системы, такие как Microsoft Exchange Server и Cyrus IMAP server, хранят почтовые ящики в централизованных базах данных, управляемых почтовой системой и не доступных напрямую отдельным пользователям. Формат почтового ящика maildir часто упоминается как альтернатива формату mbox для сетевых систем хранения электронной почты.
Протоколы хранения почты
В отличие от интернет-протоколов, используемых для обмена электронной почтой, формат, используемый для хранения электронной почты, никогда официально не определялся с помощью механизма стандартизации RFC и полностью оставался на усмотрение разработчика почтового клиента. Однако стандарт POSIX определил свободную структуру в сочетании с программой mailx . В 2005 году тип носителя application / mbox был стандартизирован как RFC 4155, в котором говорилось, что mbox хранит сообщения почтового ящика в их исходном формате Internet Message (RFC 2822), за исключением используемого символа новой строки, семибитного хранилища чистых данных и требований. что каждое новое добавленное сообщение завершается полностью пустой строкой в базе данных mbox. [1] [2]
Семья Mbox
Формат mbox использует одну пустую строку, за которой следует строка «От» (с пробелом) для разделения сообщений; это может создать двусмысленность, если сообщение содержит такую же последовательность в тексте сообщения.
За прошедшие годы возникло четыре популярных, но несовместимых варианта: mboxo , mboxrd , mboxcl и mboxcl2 . Схема именования была разработана Дэниелом Дж. Бернстайном , Рахулом Деси и другими в 1996 году. Каждая из них возникла из разных версий Unix . mboxcl и mboxcl2 произошли от формата файла, используемого почтовыми инструментами Unix System V Release 4. mboxrd был изобретен Рахулом Деси и др. как рационализация mboxo и впоследствии принята некоторыми почтовыми инструментами Unix, включая qmail .
Все эти варианты имеют проблему, заключающуюся в том, что содержимое сообщения иногда необходимо изменять, чтобы устранить двусмысленность, как показано ниже, чтобы приложения знали, какое правило цитирования использовалось для выполнения правильного возврата, что оказалось непрактичным. Использование MIME и выбор кодировки передачи содержимого, которая цитирует строки «From_» в соответствии со стандартами, гарантирует, что не нужно изменять содержимое сообщения, а изменять только его MIME- представление. Следовательно, контрольные суммы остаются постоянными, что является необходимым условием для поддержки S / MIME и Pretty Good Privacy . Приложения, которые создают сообщения и хранят их в файлах базы данных mbox, скорее всего, будут использовать этот подход для отделения содержимого сообщения от формата хранения базы данных.
mboxo и mboxrd определяют местонахождение сообщения, просматривая строки From, которые находятся перед заголовками сообщения электронной почты. Если From
строка " " встречается в начале строки в заголовке или теле сообщения (нарушение почтового стандарта для первого, но не для второго), сообщение электронной почты должно быть изменено до того, как сообщение будет сохранено в Mbox файл почтового ящика или линия будет принята в качестве границы сообщения. Чтобы избежать неправильной интерпретации From
строки " " в начале строки в теле письма как начала нового письма, некоторые системы "From-munge" [3]
сообщение, как правило, с добавлением знака "больше":
> С моей точки зрения ...
В формате mboxo такие строки имеют необратимую неоднозначность. [4] В формате mboxo это может привести к повреждению сообщения. Если строка уже содержится >From
в начале (например, в цитате), она не изменяется при написании. При последующем чтении почтовым программным обеспечением интерлиньяж >
ошибочно удаляется. Mboxrd формат решает эту проблему путем преобразования From
в >From
и преобразования >From
в >>From
и т.д. преобразование , то всегда обратима. [5]
Пример:
От MAILER-DAEMON Пт 8 июля, 12:08:34 2011 От: Автор @example.com> Кому: Получатель @example.com> Тема: Образец сообщения 1 Это тело. > От (следует избегать). Есть 3 линии. От MAILER-DAEMON Пт 8 июля, 12:08:34 2011 От: Автор @example.com> Кому: Получатель @example.com> Тема: Образец сообщения 2 Это второе тело.
В mboxcl и mboxcl2 форматы используют Content-Length:
заголовок для определения длины этих сообщений и тем самого следующих реального от линии . mboxcl по- прежнему цитирует строки From в самих сообщениях, как mboxrd , а mboxcl2 - нет.
Модифицированный mbox
Некоторые почтовые клиенты используют модификацию формата mbox для своих почтовых папок.
- Eudora использовала вариант mboxo, в котором адрес электронной почты отправителя заменяется постоянной строкой «??? @ ???». Большинство клиентов mbox хранят входящие сообщения как полученные. Eudora разделяет вложенные в сообщение вложения, сохраняя вложения как отдельные файлы в одной папке. [6]
- Mozilla семейство почтовых клиентов (Mozilla, Netscape, Thunderbird и др.) Используют mboxrd вариант с более сложными Из строки со ссылкой на правила. [7]
Блокировка файлов
Поскольку в одном файле хранится более одного сообщения, необходима определенная форма блокировки файла , чтобы избежать повреждения, которое может возникнуть в результате одновременного изменения почтового ящика двумя или более процессами. Это могло произойти, если программа сетевой доставки электронной почты доставляет новое сообщение одновременно с тем, как программа чтения почты удаляет существующее сообщение.
Различные взаимно несовместимые механизмы использовались различными форматами mbox для включения блокировки файлов сообщений, включая fcntl()
и lockf()
. Это плохо работает с сетевыми файловыми системами, такими как сетевая файловая система (NFS) , поэтому традиционно Unix использовал дополнительные файлы «точечной блокировки», которые можно было создавать атомарно даже через NFS.
Файлы Mbox также должны быть заблокированы во время чтения. В противном случае читатель может увидеть поврежденное содержимое сообщения, если другой процесс одновременно изменяет mbox, даже если фактического повреждения файла не происходит.
Как формат патча
При разработке с открытым исходным кодом обычно отправляют исправления в формате diff в список рассылки для обсуждения. Формат diff позволяет добавлять нерелевантные «заголовки», такие как данные mbox. [8] [9] Системы контроля версий, такие как git , поддерживают создание патчей в формате mbox и отправку их в список в виде сообщений электронной почты в потоке. [10] [11]
Смотрите также
Рекомендации
- ^ а б Холл, Э., изд. (Сентябрь 2005 г.). «Запрос комментариев: 4155 - Тип носителя application / mbox» . Инженерная группа Интернета . Дата обращения 17 мая 2021 .
- ^ Резник, П., изд. (Апрель 2001 г.). «Запрос комментариев: 2822 - Формат Интернет-сообщений» . Инженерная группа Интернета . Дата обращения 17 мая 2021 .
- ^ Гелленс Р., изд. (Февраль 2004 г.). «Запрос комментариев: 3676 - Формат текста / обычного формата и параметры DelSp - Раздел 4.4: Заполнение пробелов» . Инженерная группа Интернета . Дата обращения 17 мая 2021 .
- ^ "Настройка Netscape Mail в Unix: почему формат длины содержимого плохой" Джейми Завински 1997
- ^ де Бойн Поллард, Джонатан (2004). " " mbox "- это семейство из нескольких несовместимых форматов почтовых ящиков" . Часто задаваемые ответы .
- ^ «Руководство пользователя Eudora 6.2.4 Mac» (PDF) . п. 113. Архивировано из оригинального (PDF) 12 июля 2014 года . Проверено 29 октября 2015 .
- ^ "Импорт и экспорт вашей почты"
- ^ «Отправка исправлений: важное руководство по добавлению вашего кода в ядро - документация ядра Linux» . www.kernel.org .
- ^ Рэндал, Эллисон; Сугальский, Дэн; Тётч, Леопольд (2003). «Подача патча». Основы Perl 6 . O'Reilly Media, Inc. стр. 14 . ISBN 978-0-596-00499-6.
- ^ "Git - git-format-patch Documentation" . git-scm.com .
- ^ «Git - документация по git-send-email» . git-scm.com .
дальнейшее чтение
- Джонатан де Бойн Поллард (2004). « „ Mbox“семейство нескольких взаимно несовместимых форматов почтовых ящиков» . Часто задаваемые ответы .
- страница руководства qmail mbox
- Консорциум Internet Mail - орган по стандартизации
- Знайте, что такое файл MBOX
- Знать процесс преобразования MBOX в PST