Ноя 23 2008

Exim, маршрутизация, в зависимости от адреса отправителя.

Во многих компаниях, как правило, существует несколько внешних каналов. Как правило, один канал основной и один канал резервный, который обычно простаивает. Я такие каналы обычно использую, под почту определенной части пользователей. Для организации этого понадобится 3 smtp сервера:
1. Тот через который непосредственно отправляют почту пользователи. Его рекомендуют сделать выделенным, и именно на нем расположить все проверки на спам, вирусы и тд и тп.
2. Постоянный почтовый сервер, отправляющий почту через основной канал интернет, тут уже не нужны никакие «тяжелые» проверки
3. Резервный почтовый сервер, отправляющий почту через резервный канал.

Настраиваю я так:
в секции acl_rcpt, после проверки правильности символов в адресе, выглядит эта проверка так:

  deny    message       = Restricted characters in address
          domains       = !+local_domains
          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./

добавляю такие строки:

 #Для маршрутизации по умолчанию, ставим переменную acl_c5 в 0
  warn set acl_c5 = ${eval:0}
#Пользователи, почта которых отправляется, через альтернативный релай
#находятся в файле /usr/local/etc/exim/users-alt
  warn  message = Alt user
        domains = !+local_domains
        condition = ${if eq {${lookup{$sender_address}lsearch{/usr/local/etc/exim/users-alt}}}{yes}}
        set acl_c5 = ${eval:1}

По умолчанию, вся почта будет отправляться, через основной почтовый сервер, те же пользователи, адреса которых мы внесли в /usr/local/etc/exim/users-alt, пойдут на альтернативный почтовый сервер. Пока мы только пометили те почтовые сообщения, которые нам надо отправлять по другому пути. Теперь приступим, непосредственно к изменению маршрута письма.
Найдем секцию routers и в ней, в самом начале разместим такой код:

#Это мы маршрутизируем, те адреса, которых нет в нашем списоке
smartrelay:
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp
  route_data = 192.168.0.25
  condition = ${if eq {$acl_c5}{0}{1}{0}}
  no_more
  no_verify_sender
#Это для тех, кто есть в нашем списке
smartrelay_alt:
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp
  route_data = 192.168.0.26
  condition = ${if eq {$acl_c5}{2}{1}{0}}
  no_more
  no_verify_sender

Добавим адреса в наш файл, таким образом:

echo "hilik@hilik.org.ua yes" >> /usr/local/etc/exim/users-alt

Поле того как все настройки сделаны, перезапустим exim:

/usr/local/etc/rc.d/exim restart

И проведем несколько тестовых отправок, что бы убедится что все работает так как нам надо.

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

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

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