DBMail. Прикручиваем к Exim.
Продолжая статью по настройке DBMail(DBMail. Почтовый сервер c MySQL хранилищем писем.), разберемся с совмещением Exim с DBMail.
Для работы с DBMail, Exim должен поддерживать MySQL. То есть собран должен быть из порта /usr/ports/mail/exim-mysql/.
Поскольку в базе DBMail присутствуют только email адреса, а список доменов не настолько часто меняется и смысла помещать их в базу я не вижу. База и так будет использоваться интенсивно для поиска реципиентов.
Поэтому ограничимся такими изменениями.
В первую очередь пропишем MySQL настройки сервера:
hide mysql_servers = localhost::(/tmp/mysql.sock)/dbmail/dbmail/dbmail-123
В оригинальном файле настроек exim находим секцию routers и после:
dnslookup: driver = dnslookup domains = ! +local_domains transport = remote_smtp ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more
Удаляем все до секции Transports:
###################################################################### # TRANSPORTS CONFIGURATION # ###################################################################### # ORDER DOES NOT MATTER # # Only one appropriate transport is called for each delivery. # ######################################################################
А на место удаленных роутеров вставляем свои:
dbmail_alias: driver = redirect domains = +local_domains data = ${lookup mysql{select userid from dbmail_users where user_idnr=(select deliver_to from dbmail_aliases where alias='$local_part@$domain')}} dbmail_users: driver = accept domains = +local_domains condition = ${lookup mysql{select userid from dbmail_users where userid='$local_part@$domain'}} transport = dbmail_transport
Теперь остается сделать транспорт, который по LMTP будет доставлять почту. Помещаем такой код в секцию transports, к примеру после:
remote_smtp: driver = smtp
и сам код который мы должны поместить:
dbmail_transport:
driver = smtp
protocol = lmtp
hosts = localhost
allow_localhost
return_path_addИ теперь проверяем. Сначала маршрутизацию оригинального пользователя sh@hilik.org.ua:
exim -bt sh@hilik.org.ua
в ответ видим:
sh@hilik.org.ua router = dbmail_users, transport = dbmail_transport
Все нормально. Теперь проверим работу алиасов:
exim -bt hilik@hilik.org.ua </pre и в ответ получим: <pre lang="bash"> sh@hilik.org.ua <-- hilik@hilik.org.ua router = dbmail_users, transport = dbmail_transport
Можно убедится, что произошло преобразование алиаса hilik@hilik.org.ua в sh@hilik.org.ua.
На этом настройка закончена.



