Exim4 Smart Host Relay

Я использую Exim 4.71. Я бы хотел:

  1. Направляйте всю электронную почту от A.com до mail.A.com
  2. Направляйте всю электронную почту от [BE].com через mail.B.com
  3. Отправить все остальные письма напрямую.

Вот моя конфигурация, которая не работает так, как я надеялся:

domainlist a_domains = a.com
список доменов b_domains = b.com: c.com: d.com: e.com

начать маршрутизаторы

smart_route_a:
  водитель = ручной маршрут
  domains = +a_domains
  транспорт = remote_smtp
  route_list = +a_domains mail.a.com
  больше не надо

smart_route_b:
  водитель = ручной маршрут
  domains = +b_domains
  транспорт = remote_smtp
  route_list = +b_domains mail.mollenhour.com
  больше не надо

dnslookup:
  водитель = dnslookup
  домены =! +local_domains
  транспорт = remote_smtp
  ignore_target_hosts = 0.0.0.0: 127.0.0.0/8
  больше не надо

Когда я отправляю письмо, например, с PHP mail() или же Zend_Mail_Transport_Smtp установка From: и Return-Path: как user@a.com, smart_route_a маршрутизатор не используется, вместо него используется dnslookup. Отключение dnslookup приводит к тому, что почта не отправляется.

Из журналов видно, что электронная почта, отправленная на somebody@a.com, использует smart_route_a, но то же письмо, отправленное с user@a.com на user@gmail.com, отправлено с использованием dnslookup,

Как сделать так, чтобы электронная почта от user@a.com передавалась через mail.a.com?

1 ответ

Решение

Используйте условный лайк

route_list = * "${if match{$header_from:}{\N.*\.a\.com$\N} {mail.a.com}}"

domains = проверяет только целевой домен, а не исходный домен.

Другие вопросы по тегам