Mbox - это общий термин для семейства связанных форматов файлов, используемых для хранения коллекций сообщений электронной почты. Впервые он был реализован для пятой редакции Unix .
Все сообщения в почтовом ящике mbox объединяются и хранятся в виде простого текста в одном файле. Каждое сообщение начинается с четырех символов «From», за которыми следует пробел (так называемая «From_ line») и адрес электронной почты отправителя. RFC 4155 определяет, что метка времени в формате UTC следует после другого разделительного символа пробела.
В отличие от интернет-протоколов, используемых для обмена электронной почтой, формат, используемый для хранения электронной почты, никогда официально не определялся с помощью механизма стандартизации RFC и полностью оставался на усмотрение разработчика почтового клиента. Однако стандарт POSIX определил свободный фрейм в сочетании с программой mailx . В 2005 году тип носителя application / mbox был стандартизирован как RFC 4155, в котором намекалось, что mbox хранит сообщения почтового ящика в их исходном формате Интернет-сообщений (RFC 2822), за исключением используемого символа новой строки, семибитного хранилища чистых данных и требований. что каждое новое добавленное сообщение завершается полностью пустой строкой в базе данных mbox.
Формат, похожий на mbox, - это система обработки сообщений MH . Другие системы, такие как Microsoft Exchange Server и Cyrus IMAP server, хранят почтовые ящики в централизованных базах данных, управляемых почтовой системой и не доступных напрямую отдельным пользователям. Формат почтового ящика maildir часто упоминается как альтернатива формату 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» [1] сообщение, обычно добавляя знак «больше»:
> С моей точки зрения ...
В формате mboxo такие строки имеют необратимую неоднозначность. [2] В формате mboxo это может привести к повреждению сообщения. Если строка уже содержится >From
в начале (например, в цитате), она не изменяется при написании. При последующем считывании почтовым программным обеспечением ведущий >
по ошибке удаляется. Mboxrd формат решает эту проблему путем преобразования From
в >From
и преобразования >From
в >>From
и т.д. преобразование , то всегда обратима. [3]
Пример:
От 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 разделяет вложенные в сообщение вложения, сохраняя вложения как отдельные файлы в одной папке. [4]
- Mozilla семейство почтовых клиентов (Mozilla, Netscape, Thunderbird и др.) Используют mboxrd вариант с более сложными Из строки со ссылкой на правила. [5]
Блокировка файлов
Различные взаимно несовместимые механизмы использовались различными форматами mbox для включения блокировки файлов сообщений , включая fcntl()
и lockf()
. Это плохо работает с сетевыми файловыми системами, такими как сетевая файловая система (NFS) , поэтому традиционно Unix использовал дополнительные файлы «точечной блокировки», которые можно было создавать атомарно даже через NFS.
Поскольку в одном файле хранится более одного сообщения, необходима определенная форма блокировки файла, чтобы избежать повреждения, которое может возникнуть в результате одновременного изменения почтового ящика двумя или более процессами. Это могло произойти, если программа сетевой доставки электронной почты доставляет новое сообщение одновременно с тем, как программа чтения почты удаляет существующее сообщение.
Файлы Mbox также должны быть заблокированы во время чтения. В противном случае читатель может увидеть поврежденное содержимое сообщения, если другой процесс одновременно изменяет mbox, даже если фактического повреждения файла не происходит.
Как формат патча
При разработке с открытым исходным кодом обычно отправляют исправления в формате diff в список рассылки для обсуждения. Формат diff позволяет добавлять нерелевантные «заголовки», такие как данные mbox. [6] [7] Системы контроля версий, такие как git , поддерживают создание патчей в формате mbox и отправку их в список в виде сообщений электронной почты в потоке. [8] [9]
Смотрите также
Рекомендации
- ^ RFC 3676 «Текстовый / простой формат и параметры DelSp». Раздел 4.4: Наполнение космоса. 2004 г.
- ^ "Настройка 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
- RFC 4155 - Тип носителя application / mbox