Назад | Перейти на главную страницу

Как выбрать смарт-хост на основе адреса From: в exim4 на Debian

Я хочу направлять электронные письма с помощью From: .*@host1.com через smtp.server1.com и электронные письма с полем От: .*@host2.com через smtp.server2.com.

На данный момент у меня настроен smarthost с dpkg-reconfigure exim4-config так что update-exim4.conf.conf содержит строку dc_smarthost='smtp.server1.com::587'. То есть все проходит через smtp.server1.com.

Я попытался добавить еще один маршрутизатор непосредственно перед определением smarthost: в файле конфигурации, установив senders = .*@host2.com

smarthost_server2:
  debug_print = "R: smarthost_server2 for $local_part@$domain"
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp_smarthost
  senders = .*@host2.com
  route_list = * smtp.server2.com byname
  host_find_failed = ignore
  same_domain_copy_routing = yes
no_more

но exim по-прежнему направляет все через smtp.server1.com. Я использую senders состояние правильно?

AFAIU, это должно быть довольно распространенная настройка для случаев, когда люди с электронной почтой.@ google.com и.@ gmail.com не хотят раскрывать в своих заголовках электронной почты @ gmail.com тот факт, что они также являются сотрудниками Google, поэтому ротация должна быть другой.

Ладно, я понял. senders это то, что предоставляет / etc / mailname, а не доменная часть From:

Следующие работы:

smarthost_server2:
  debug_print = "R: smarthost_server2 for $local_part@$domain"
  driver = manualroute
  domains = ! +local_domains
  transport = remote_smtp_smarthost
  condition = ${if match_domain{${domain:$h_From:}}{smtp.server2.com}{yes}{no}} 
  route_list = * smtp.server2.com byname
  host_find_failed = ignore
  same_domain_copy_routing = yes
no_more

Обратите внимание на условие, которое извлекает доменное имя из From: заголовок и сравнивает его с smtp.server2.com.