On-Line Библиотека www.XServer.ru - учебники, книги, статьи, документация, нормативная литература.
       Главная         В избранное         Контакты        Карта сайта   
    Навигация XServer.ru








 

Формат Maildir

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

 Как известно, все новое приживается обычно с трудом: необходимо, чтобы предлагаемое новшество наголову превосходило имеющиеся образцы, лишь тогда есть надежда, что на него хотя бы обратят внимание. Итак, большинство традиционных MUA не поддерживают формат Maildir, для дополнительных серверов (IMAP, POP3 и т.п.) нужны либо родные варианты программ qmail, либо заплатки. Для умеренного консерватора уже достаточно: лучше все оставить как есть...

 Ладно, представим ситуацию: происходит крах ситемы во время доставки сообщения. Для файлов в формате mbox это значит, что сообщение будет молчаливо обрезано и присоединено к следующему сообщению. Далее, mbox формат предполагает во время доставки почты конкретному пользователю обновление единого центрального файла программой доставки. Если программа не использует механизм запирания (lock), центральный файл может быть испорчен.

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

 Известно, что NFS (Network File System) не использует надежного механизма запирания. Это, как уже говорилось, чревато тем (для формата mbox), что при возможной доставке почты двумя машинами некоторому пользователю или при чтении пользователем почты откуда-либо, кроме самой машины, осуществляющей доставку почты - существует риск потерять часть почтовых сообщений. Что неприятно. Да, формат mh обладает практически теми же недостатками, что и mbox.

 А что же Maildir? Maildir - структура каталогов для хранения входящей почты. Каталог в формате Maildir состоит из трех подкаталогов: tmp, new и cur.

 Каждый файл в каталоге new представляет собой новое доставленное сообщение. Время модификации файла соответствует времени доставки сообщения. Сообщение доставляется без дополнительной строки From_ (UUCP-style), без пустой строки в конце. Формат сообщения соответствует RFC 822. Файлы в каталоге cur такие же, как в new, но файлы в cur не являются уже 'новыми' почтовыми сообщениями: они были просмотрены пользовательской программой чтения почты.

 Каталог tmp используется для обеспечения гарантированной доставки сообщений. Программа доставки производит следующие операции: переходит в каталог Maildir; создает (с некими предварительными проверками уникальности и отсутствия ошибок) файл tmp/time.pid.host, где time - число секунд с 1970 года по времени GMT (Гринвичу), pid - ID процесса доставки (гарантия уникальности - создается для каждой доставки вызовом fork), host - имя машины; записывает сообщение в файл; перемещает сообщение в new/time.pid.host.

 Программа чтения почты просматривает каталог new на наличие новых сообщений. Она может вывести содержимое нового сообщения new/unique, удалить new/unique или переименовать сообщение в каталог cur/unique:info (info эквивалентно полю Status, используемому программами чтения почты в формате mbox). Программа чтения также ожидает просмотра каталога tmp и удаляет обнаруженные там 'старые' файлы с сообщениями. Файл из tmp может быть надежно удален, если к нему не было доступа в течение 36 часов.

 На этом закончу этот краткий обзор. Итак, выбор за Вами: некоторые аргументы представлены. Если Вы решились, то, во-первых, можете посмотреть FAQ о переключении на использование Maildir. Во-вторых, этот процесс можно некоторым образом автоматизировать на будущее, а именно модифицировать скрипт adduser, добавив туда создание каталога Maildir (maildirmake), дополнить дот-файлы (dot-files), копируемые системой в домашний каталог при добавлении нового пользователя, установив необходимые переменные окружения (см.FAQ о Maildir), создать там файл типа dot.qmail содержащий строку ./Maildir/
Теперь, при добавлении нового пользователя будут производиться необходимые операции, обеспечивающие работу почтовой системы при использовании формата Maildir.

Назад       Содержание       Вперёд