web-dev-qa-db-ja.com

Exim4スマートホストリレー

Exim4.71を実行しています。したい:

  1. すべてのメールをルーティングfrom A.comからmail.A.com
  2. すべてのメールをルーティングfrom [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を無効にすると、メールは送信されません。

ログから、送信された電子メールはto [email protected]smart_route_aを使用しているようですが、user @ a.comから[email protected]に送信された同じ電子メールはdnslookupを使用して送信されます。

メールを作成するにはどうすればよいですかfrom [email protected]をmail.a.com経由で中継しますか?

1
ColinM

次のような条件を使用します

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

ドメイン=送信元ドメインではなく宛先ドメインのみをチェックします。

2
topdog