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

Exim4 Smart Host Relay

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

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

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

domainlist a_domains = a.com
domainlist b_domains = b.com : c.com : d.com : e.com

begin routers

smart_route_a:
  driver = manualroute
  domains = +a_domains
  transport = remote_smtp
  route_list = +a_domains mail.a.com
  no_more

smart_route_b:
  driver = manualroute
  domains = +b_domains
  transport = remote_smtp
  route_list = +b_domains mail.mollenhour.com
  no_more

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

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

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

Как мне написать электронную почту из user@a.com ретранслировать через mail.a.com?

Используйте условное выражение вроде

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

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