DBMail. Прикручиваем к Exim во FreeBSD

Продолжая статью по настройке 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.

На этом настройка закончена.

http://www.hilik.org.ua/dbmail-прикручиваем-к-exim/

Обновлено: 12.03.2015