Окт 30 2009

Почта. Методы хранения писем.

Хранение почты на первый взляд довольно тривиальная процедура. Но это только на первый взгляд. Практически любая почтовая переписка имеет достаточно высокую цену. Поэтому при выборе хранилища для почты нужно побеспокоится о таких вещах как:
1. Легкость резервного копирования
2. Легкость восстановления из бекапа
3. Восстановление работоспособности после сбоя

На сегодняшний день я сталкивался с такими вариантами хранения сообщений:
1. Mailbox — почтовый ящик в виде одного файла на ящик
2. Maildir — почтовый ящик в виде директории с файлами — каждый файл — письмо
3. Хранение писем в базах

А теперь рассмотрим эти варианты более подробно.
1. Mailbox — это самый старый формат. При сегодняшних требованиях к почте — у него можно найти сплошные недостатки.
Во первых — это медленный доступ. Для того, что бы отобразить почтовый ящик нужно считать весь файл содержащий письма. Для того, что бы внести изменения в неструктурированный файл — нужно выполнить много операций.
Во вторых — это проблемы с блокировкой. При доставке нескольких больших писем будет проблема с блокировками. Пока одно письмо не добавится в файл, следующие письма должны ждать в очереди. То же самое относится к процедуре получения писем — файл заблокирован и ноые письма не поступают.
Процедура резервного копирования и восстановления связана с блокировкой ящика.
Резюме: В тех местах, где идет насыщенный поток почты mailbox лучше не использовать

2. Maildir — современный формат, один файл — одно письмо. Блокировки присутствуют только на уровне одного письма. При большом количестве писем, доступ к ящику затруднен, но письма всегда можно переместит в поддиректории, тем самым разгрузив почту. Для резервного копирования можно применять простейшие, но от этого не менее эффективные методы, включая rsync. Тем самым можно быстро и легко получить полную копию всей переписки. Восстановление писем, тоже не вызовет больших сложностей.
Резюме: Maildir подходит для всех случаев. Вполне достойный способ хранения.

3. Остался последний метод — хранение в базе. Тут мое мнение неоднозначное. С одной стороны в базе, к примеру в MySQL — очень удобно держать письма, казалось бы. Можно легко получить достум к письму, легко искать и т.д. и т.п.
И как показывает практика, да. Наличие структурированного файла с индексным поиском ускоряет работу. Но тут присутствуют и свои отрицательные стороны. В первую очередь проблемы связанны с падением сервера в случае аппаратного сбоя или сбоя питания. В этой ситуации, в зависимости от размера файла, будет задержка с доступностью системы. База будет проверяться на наличие ошибок и все это время система будет недоступна.
Схема бекапа легко реализуется. Уж резервировать базы проще простого. Но восстановление базы из бекапа — задача, выполняющаяся, чаще всего при недоступной системе.
Резюме: Метод хранения хорош. Но использовать нужно осторожно.

Из всего изложенного могу сказать, что Maildir меня не подводил ни разу. И если отсутствуют «особые пожелания», почтовые системы я стараюсь строить с использованием именно Maildir.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть