Простой почтовый хостинг с хранилищем писем в БД MySQL. Часть 2. Прикрут к Postfix.

Настроив dbmail нужно обеспечить доставку почты в его БД. Для этого нужно правильно сконфигурировать MTA. Эта заметка о том как конфигурировать Postfix для доставки почты в dbmail. Прикручивается несложно, но нужно обязательно сначала установить Postfix, а потом уже приступать к прикручиванию.

Для начала нужно указать Postfix'у какие домены считать локальными, тоесть такими, для которых мы будем почту принимать. За это отвечает параметр mydestination в конфиге /etc/postfix/main.cf.

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

Тут указано что-то вроде базового значения. Этот список нужно дополнить обслуживаемыми доменами. К примеру

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, adment.org.ua

Вся почта, которая подпадает под эти критерии считается локальной и доставляется в mailbox. Для возможности доставлять почту в dbmail нужно соответствующий транспорт. Открываем файл /etc/postfix/master.cf и добавляем в конец

dbmail-lmtpd    unix     -       -       n       -       -      lmtp

Теперь почту можно доставлять как lmtp и транспорт получил имя dbmail-lmtpd. Перед тем как указывать нужный транспорт для mailbox нужно обьявить новые списки получателей для Postfix, тоесть нужно указать, что нужно доставлять почту именно тем юзерам, кто есть в БД dmail.

Для этого нужно чтобы Postfix был собран с поддержкой MySQL (чтобы был USE-флаг mysql). Кстати говоря предположение что Postfix должен быть собран с поддержкой базы, на которую посажен dbmail вполне верное. Нужно создать два файла: /etc/postfix/dbmail-recipients.cf

user = dbmail
password = пароль
hosts = localhost
dbname = dbmail
table = dbmail_users
select_field = userid
where_field = userid

и /etc/postfix/dbmail-aliases.cf

user = dbmail
password = пароль
hosts = localhost
dbname = dbmail
table = dbmail_aliases
select_field = alias
where_field = alias

Эти два файла кстати лучше все подряд не показывать, на Gentoo лучше установить для них группу postfix и права 640, таким образом видеть єти конфиги будут только root и postfix. Указываем ссылки на эти файлы в параметре local_recipient_maps конфига /etc/postfix/main.cf

local_recipient_maps = mysql:/etc/postfix/dbmail-aliases.cf mysql:/etc/postfix/dbmail-recipients.cf $alias_maps

Мы добавили $alias_maps, чтобы оставить возможность прикручивать алиасы для системных аккаунтов в конфигах. Далее указываем правильный транспорт для mailbox. Всё в том же конфиге /etc/postfix/main.cf правим параметр mailbox_transport:

mailbox_transport = dbmail-lmtpd:127.0.0.1:24

Мы указали на раннее обьявленный транспорт dbmail-lmtpd. Теперь остаётся правильно указать алиасы в системе, чтобы наш друг Postfix ничего не напутал.

Далее неполохо бы сделать какую-нибудь Web-морду.