Сегодня хочу рассказать о том, как настроить почтовый сервер Exim в роли почтового релей сервера, который обслуживает две почтовые системы и два почтовых домена соответственно. Exim сервер в качестве почтового релея использую достаточно давно из-за его простоты, быстроты, удобства управления и, самое главное, его стоимости - он бесплатный.
Первоначальная конфигурация базировалась на конфигурации lissyara (http://www.lissyara.su/articles/freebsd/mail/exim+exchange/) с некоторыми специфическими изменениями под свои нужды. На Exim-е были реализованы различные виды борьбы с вирусами, спамом и прочие полезные “штучки”, которые облегчают жизнь администратору почтовой системы. Exim долго работал в качестве внешнего почтового релея для Exchange server 2007, который обслуживал только одну почтовую организацию со своим доменом. Но в один прекрасный день потребовалось, чтобы Exim начал обслуживать второй почтовый домен, который независим от почтовой организации Exchange сервера.
В таблице приведены исходные данные (Имена и адреса доменов изменены):
| Почтовая система | First | Second |
| Почтовый домен | maildom.net | maildom.org |
| МХ записи в DNS | mx.maildom.net | mx.maildom.org |
| внешний IP | 123.456.789.010 | 123.456.789.020 |
| локальный IP Exim | 192.168.1.100 | 192.168.1.110 |
| внутренний IP почтовой системы | 192.168.100.100 | 172.16.100.100 |
Дальше буду публиковать куски конфигурационных файлов, в которые вносились изменения согласно конфигурационным файлам с сайта lissyara, чтобы не возникло неточностей.
Файл конфигурации 100.main.conf. Добавил интерфейсы для прослушивания (без этого не будут работать транспортные правила) и два новых domainlist-а:
local_interfaces = <; 192.168.1.100 ; 192.168.1.110
domainlist second_domains = maildom.org
domainlist relay_to_second = maildom.org
Также изменил баннер приветствия:
smtp_active_hostname = ${if eq {$received_ip_address}{192.168.1.100}\
{mx.maildom.net}{mx.maildom.org}}
smtp_banner = "$smtp_active_hostname, ESMTP EXIM $version_number"
#smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
В результате при подключении telnet-ом на IP 123.456.789.010 видим приветствие:
220 mx.maildom.net, ESMTP EXIM 4.69
И при подключении на IP 123.456.789.020 видим приветствие:
220 mx.maildom.org, ESMTP EXIM 4.69
Файл конфигурации 600.routers.conf. Добавлен роутер для работы с другой почтовой системой. Новый роутер ничем не отличается от старого за исключением domains и route_list.
exchange_router:
driver = "manualroute"
domains = +relay_to_domains
transport = remote_smtp
route_list = * 192.168.100.100
no_moresecond_router:
driver = "manualroute"
domains = +relay_to_second
transport = remote_smtp
route_list = * 172.16.100.100
no_more
Файл конфигурации 700.transports.conf:
remote_smtp:
driver = smtp
interface = ${if eq{$smtp_active_hostname}{mx.maildom.net}\
{192.168.1.100}{192.168.1.110}}
helo_data = ${if eq{$smtp_active_hostname}{mx.maildom.net}\
{mx.maildom.net}{mx.maildom.org}}
Здесь пришлось переписать, точнее, изменить старый транспорт для того, чтобы при исходящем подключении почтовая сессия устанавливалась с нужного IP адреса, и Exim правильно представлялся.
В другие конфигурационные файлы были внесены domainlist-ы second_domain и relay_to_second по аналогии с уже работающими domainlist-ами в конфигурации.
Собственно, на этом все изменения и заканчиваются.
В итоге получилось, что Exim сервер успешно обрабатывает почтовые потоки двух независимых почтовых систем.