Окт 24 2009

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.

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


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