Maildir

редактировать

Формат электронной почты Maildir - это распространенный способ хранения сообщений электронной почты, в котором каждое сообщение хранится в отдельном файле с уникальным именем, а каждая почтовая папка является каталогом файловой системы. Локальная файловая система обрабатывает блокировку файлов при добавлении, перемещении и удалении сообщений. Основная цель разработки Maildir - устранить необходимость в программном коде для обработки блокировки и разблокировки файлов.

Внутренняя структура

СОДЕРЖАНИЕ

  • 1 Технические характеристики
    • 1.1 Maildir ++
  • 2 Техническая эксплуатация
  • 3 Проблемы совместимости файловой системы
  • 4 Программное обеспечение, которое напрямую поддерживает Maildir
    • 4.1 Почтовые серверы
    • 4.2 Агенты по доставке
    • 4.3 Читатели почты
  • 5 Примечания и ссылки
  • 6 См. Также
  • 7 Внешние ссылки

Характеристики

Maildir каталог (часто называют Maildir), как правило, имеет три подкаталога с именем tmp, new и cur.

В tmp подкаталоге временно хранятся сообщения электронной почты, которые находятся в процессе доставки. В этом подкаталоге также могут храниться другие типы временных файлов. В new подкаталоге хранятся сообщения, которые были доставлены, но еще не были просмотрены каким-либо почтовым приложением. В cur подкаталоге хранятся сообщения, которые уже были просмотрены почтовыми приложениями.

Maildir ++

Сэм Варшавчик, автор Courier Mail Server и другого программного обеспечения, написал расширение для формата Maildir под названием Maildir ++ для поддержки подпапок и почтовых квот. Каталоги Maildir ++ содержат подкаталоги с именами, начинающимися с символа '.' (точка), которые также являются папками Maildir ++. Это расширение не является нарушением спецификации Maildir, которая явно предусматривает возможность добавлять в maildir больше, чем tmp, new, cur.

Техническая эксплуатация

Программа, которая обеспечивает сообщение по электронной почте, на агент доставки почты, записывает его в файл в tmp каталоге с уникальным именем. Примерно в 1995 г. алгоритм, рекомендованный qmail для генерации уникальных имен файлов, заключался в объединении, разделенных символом точки, текущего времени Unix, идентификатора текущего процесса (PID) и текущего имени хоста ; проверьте, существует ли это имя файла (используя stat() ); и, если имя файла существует, отложите доставку на две секунды, а затем повторите попытку. (Этот алгоритм подвергся критике в 2006 году Тимо Сирайненом, создателем Dovecot. ) К 2000 году было рекомендовано добавлять к PID значение счетчика каждого процесса, значение которого должно увеличиваться после каждой доставки; и предложение об ограничении скорости было снято. К 2003 году в рекомендации были внесены дополнительные поправки, согласно которым вместо PID и счетчика должна создаваться средняя часть имени файла путем «конкатенации достаточного количества следующих строк, чтобы гарантировать уникальность» даже в условиях нескольких одновременных доставок на адрес. тот же maildir из одного или нескольких процессов:

  • # n, где n - (в шестнадцатеричном формате) вывод системного вызова unix_sequencenumber () операционной системы, который возвращает число, увеличивающееся на 1 каждый раз при вызове, начиная с 0 после перезагрузки.
  • X n, где n (в шестнадцатеричном формате) - результат системного вызова unix_bootnumber () операционной системы, который сообщает, сколько раз система была загружена. Вместе с # это гарантирует уникальность; к сожалению, большинство операционных систем не поддерживают unix_sequencenumber () и unix_bootnumber.
  • R n, где n - (в шестнадцатеричном формате) вывод системного вызова unix_cryptorandomnumber () операционной системы или эквивалентного источника, такого как / dev / urandom. К сожалению, некоторые операционные системы не включают криптографические генераторы случайных чисел.
  • I n, где n - (в шестнадцатеричном формате) номер inode UNIX этого файла. К сожалению, номера inode не всегда доступны через NFS.
  • V n, где n (в шестнадцатеричном формате) номер устройства UNIX этого файла. К сожалению, номера устройств не всегда доступны через NFS. (Номера устройств также бесполезны со стандартной файловой системой UNIX: maildir должен находиться на одном устройстве UNIX для работы link () и rename ().)
  • M n, где n - (в десятичном формате) счетчик микросекунд из того же метода gettimeofday (), который используется для левой части уникального имени.
  • P n, где n - это (в десятичном формате) идентификатор процесса.
  • Q n, где n (в десятичной системе) количество доставок, выполненных этим процессом.

По состоянию на ноябрь 2018 года автор qmail Бернштейн не вносил дальнейших изменений в рекомендации по созданию файлов. В современных системах POSIX временные файлы можно безопасно создавать с помощью mkstemp функции библиотеки C.

Процесс доставки сохраняет сообщение в maildir, создавая и записывая этот файл, а затем перемещая его в. Перемещение может быть выполнено с помощью переименования, которое во многих системах является атомарным. В качестве альтернативы это можно сделать, жестко связав файл с файлом, а затем отключив его. Любой оставшийся файл в конечном итоге будет удален. Эта последовательность гарантирует, что программа, читающая maildir, не увидит частично написанное сообщение. Одновременно может быть несколько программ, читающих maildir. Они варьируются от почтовых пользовательских агентов (MUA), которые обращаются к файловой системе сервера напрямую через протокол доступа к сообщениям Интернета или серверы протокола почтового отделения, действующие от имени удаленных MUA, до таких утилит, как biff и rsync, которые могут знать или не знать о них. структура maildir. Читатели никогда не должны заглядывать внутрь. tmp/uniquefilenamenew/uniquefilename newtmp tmp

Когда осведомленный процесс чтения maildir ( POP- или IMAP- сервер или почтовый пользовательский агент, действующий локально) находит сообщения в new каталоге, он должен их переместить cur. Это просто средство уведомить пользователя «у вас X новых сообщений». Это перемещение должно выполняться с использованием rename(), так как метод неатомарной ссылки и разрыва связи может привести к дублированию сообщений. На этом этапе к именам файлов добавляется информационный суффикс. Он состоит из двоеточия (чтобы отделить уникальную часть имени файла от фактической информации), «2», запятой и различных флагов. «2» указывает версию информации, которая следует за запятой. «2» - единственная официально указанная в настоящее время версия, «1» - экспериментальная версия. Спецификация определяет флаги, которые показывают, было ли сообщение прочитано, удалено и т. Д.: Начальная (заглавная) буква «Пропущено», «Ответлено», «Просмотрено», «Удалено», «Черновик» и «Помечено». Dovecot использует строчные буквы для соответствия 26 ключевым словам IMAP, которые могут включать стандартные ключевые слова, такие как $ MDNSent, и пользовательские флаги.

Хотя Maildir был предназначен для использования без блокировки, на практике некоторые программы, использующие Maildirs, также используют блокировки, например Dovecot.

Проблемы совместимости файловой системы

Стандарт Maildir может быть реализован только в системах, которые принимают двоеточия в именах файлов.

Системы, в которых не допускается использование двоеточий в именах файлов (включая Microsoft Windows и некоторые конфигурации Novell Storage Services ), могут использовать альтернативный разделитель, например ";" или же "-". Часто бывает тривиально исправить бесплатное программное обеспечение с открытым исходным кодом, чтобы использовать другой разделитель.

Поскольку в настоящее время нет соглашения о том, каким должен быть этот альтернативный разделитель, могут возникнуть трудности взаимодействия между различными программами, поддерживающими Maildir, в этих системах. Однако не все программное обеспечение, связанное с Maildir, должно знать, что такое символ-разделитель, потому что не все программное обеспечение, связанное с Maildir, должно иметь возможность читать или изменять флаги сообщения («читать», «отвечать на» и т. Д.); Программное обеспечение, которое просто доставляет в Maildir или архивирует старые сообщения только по дате, должно работать независимо от того, какой разделитель используется. Если только MUA необходимо читать или изменять флаги сообщений и используется только один, то можно использовать нестандартные альтернативные разделители без проблем совместимости.

Программное обеспечение, которое напрямую поддерживает Maildir

Почтовые серверы

Агенты по доставке

Читатели почты

  • aerc (эффективный и расширяемый почтовый клиент)
  • Balsa ранее была официальной программой чтения почты GNOME (до Evolution)
  • Конус для чтения почты на основе проклятий
  • Evolution, официальный почтовый клиент GNOME
  • GNUMail
  • Gnus
  • KMail, программа для чтения почты KDE
  • mailx
  • Матт
  • Notmuch (быстрая система электронной почты с глобальным поиском и тегами)
  • Сосна / Альпийский
  • Mozilla Thunderbird - экспериментальный и «по умолчанию отключен, поскольку все еще есть много ошибок»

Примечания и ссылки

Смотрите также

внешние ссылки

Последняя правка сделана 2023-12-31 02:07:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте