Exim4 Smart Host Relay
Я использую Exim 4.71. Я бы хотел:
- Направляйте всю электронную почту от A.com до mail.A.com
- Направляйте всю электронную почту от [BE].com через mail.B.com
- Отправить все остальные письма напрямую.
Вот моя конфигурация, которая не работает так, как я надеялся:
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 = проверяет только целевой домен, а не исходный домен.