Окт 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.

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

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

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