Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Прочие возможности DBMail
К числу прочих возможностей почтового сервера, часто востребованных администраторами, относятся:
n Квоты на размер почтового ящика – поддерживаются в DBMail непосредственно: максимальный размер ящика можно указать как при вызове утилиты dbmail-users ключом -m, так и изменив значение поля maxmail_size в таблице dbmail_users.
n SMTP-авторизация – вообще-то это задача MTA, но поскольку в DBMail уже хранится соответствие имен пользователей и их паролей, есть смысл настроить SASL на использование этой информации.
n POP/IMAP before SMTP – это альтернатива SMTP-авторизации, которая опирается на использование таблицы dbmail_pbsp и должна быть включена в /etc/dbmail.conf параметрами pop_before-smtp/imap_before_smtp.
n SSL/TLS – DBMail не поддерживает этот механизм непосредственно, но есть возможность организовать прозрачный с точки зрения клиентов SSL-доступ с помощью внешнего ПО, например, stunnel – работа с этим инструментом подробно рассматривалась в цикле статей Андрея Бешкова.
n Фильтрация почтовых сообщений на основании их содержимого – эту задачу и способы ее решения мы обсудим позже.
Кроме того, DBMail не обошелся без
GUI-конфигуратора DbMail Administrator (DBMA), написанного на Perl и ориентированного
на веб. Он доступен на
Рисунок 3. DbMail Administrator
Есть еще один веб-интерфейс к DBMail – swiftMail
(
Фильтрация почтовых сообщений средствами DBMail
Общеизвестным преимуществом IMAP является то, что почтовый пользователь может работать со своей и общей корреспонденцией с разных рабочих мест с помощью совершенно различных MUA: как традиционных, так и ориентированных на веб. Это означает, что правила, в соответствии с которыми сообщения распределяются по каталогам IMAP, должны определяться не на уровне MUA, а на уровне MDA.
В настоящее время в DBMail отсутствуют штатные способы решения этой задачи. В будущих версиях планируется использование специализированного языка программирования для фильтрации почтовых сообщений Sieve (описан в RFC 3028, активно используется в Cyrus IMAP), код поддержки Sieve даже есть в текущей стабильной версии, но он не завершен и недостаточно протестирован, поэтому при компиляции по умолчанию поддержка Sieve отключена. Кроме того, для большинства случаев Sieve является слишком мощным инструментом.
Сформулируем, что нам требуется от простейшего механизма фильтрации почтовых сообщений:
n Каждый пользователь может задать собственный список фильтров и назначить их приоритеты.
n Фильтр представляет из себя соответствие названия заголовка письма и его значения IMAP-каталогу, в который должно попасть письмо.
n Письмо попадает в каталог, если значение заголовка в письме содержит в себе значение заголовка в фильтре.
А теперь перечислим те способы решения задачи, которые пришли мне в голову:
n Использование традиционных MDA (procmail, maildrop) и dbmail-smtp.
n Использование фильтров MTA и патча для
поддержки RFC 3589 (Sieve Email Filtering – Subaddress Extension:
user+folder@server) в dbmail-lmtpd. Патч можно взять здесь –
n Использование средств СУБД (триггеров) для модификации записей, соответствующих сообщению, в БД.
n Написание собственного патча.
Сравним их (см. таблицу 1). После недолгих раздумий выбор был сделан в пользу последнего варианта. Самым трудным оказалось не реализовать нужную функциональность, а найти место в коде, куда ее необходимо вставить, не нарушив при этом работоспособности всего остального. Решение задачи сильно упростило то, что в DBMail хорошо организовано ведение логов. Для каждого демона в конфигурационном файле можно задать уровень отладки (параметр trace_level), определяющий степень детализации выводимых отладочных сообщений.
Таблица 1. Способы фильтрации почтовых сообщений средствами DBMail