LINUX.ORG.RU
решено ФорумAdmin

Несколько релеев для exim

 ,


0

1

Всем привет, возник вопрос можно ли и если можно, то как настроить exim для поочередной отсылки писем на несколько релеев? То есть например в сети есть два почтовика, которые могут пересылать почту по smtp без авторизации и есть exim. Хочется сделать так, чтобы exim мог отправлять письма на оба сервера свои письма в режиме round robin.

В теории можно, но не пробовал.

Идея в следующем. Создается router:

roundrobin:
   driver = manualroute
   route_data = ${lookup{$domain}lsearch{/path/to/routes.txt}}
   transport = rrtransport
   ...

А в транспорте указываем скрипт, в котором обрабатывается нужная логика (round-robin).

rrtransport:
   driver = smtp
   transport_filter = /path/to/script.sh

И в конечном счете этот скрипт добавит в routes.txt либо:

* relay1.ru

либо

* relay2.ru
Chumka ★★★ ()
Ответ на: комментарий от autonomous

скрипт /path/to/script.sh он будет вызывать при каждой отправке письма?

да, но это не смертельно даже при яростном спаме

Chumka ★★★ ()
Ответ на: комментарий от Chumka

а можешь немного подробнее расписать? я с exim знаком на уровне dpkg-reconfigure exim4-config и не очень понимаю как использовать новый роутер :(

autonomous ★★★★★ ()
Ответ на: комментарий от Bers666

рекомендую взять exim.conf из центос.

Лучше вместе с самим центосом.

alex_the_v ★★★ ()

а вот еще нашел такой совет http://serverfault.com/questions/371428/configure-exim4-with-multiple-smarthosts

кто знает как правильно описать два смартхоста для exim?

у меня сейчас дефолтный hubbed_hosts

# router/150_exim4-config_hubbed_hosts
#################################

# route specific domains manually.
#
# see exim4-config_files(5) and spec.txt chapter 20.3 through 20.7 for
# more detailed documentation.

hubbed_hosts:
  debug_print = "R: hubbed_hosts for $domain"
  driver = manualroute
  domains = "${if exists{CONFDIR/hubbed_hosts}\
                   {partial-lsearch;CONFDIR/hubbed_hosts}\
              fail}"
  same_domain_copy_routing = yes
  route_data = ${lookup{$domain}partial-lsearch{CONFDIR/hubbed_hosts}}
  transport = remote_smtp
autonomous ★★★★★ ()

А если два роута подрят с неким фиктивным правилом основаным на id - делится на два первый роут, остальный на второй.

zloelamo ★★★★ ()
Последнее исправление: zloelamo (всего исправлений: 1)

созрел более конкретный вопрос, письма у меня идут через роутер smarthost

я поменял там строчки

-  route_list = * DCsmarthost byname
+ route_list = * 127.0.0.2;* 127.0.0.4
+ hosts_randomize

где 127.0.0.2 и 127.0.0.4 это smtp пересылальщики.

получилось так

smarthost:
  debug_print = "R: smarthost for $local_part@$domain"
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp_smarthost
  route_list = * 127.0.0.2;* 127.0.0.4
  hosts_randomize
  host_find_failed = defer
  same_domain_copy_routing = yes
  no_more

письма идут все равно на тот смартхост, который указан в DCsmarthost. почему так и что у меня тут не правильно?

autonomous ★★★★★ ()

правильный конфиг у меня получился таким

smarthost:
  debug_print = "R: smarthost for $local_part@$domain"
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp_smarthost
  route_list = * smtp1.hostname.ru:smtp2.hostname.ru:smtp3.hostname.ru randomize
  hosts_randomize
  host_find_failed = defer
  same_domain_copy_routing = yes
  no_more

хотя hosts_randomize наверное лишнее

autonomous ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.