web-dev-qa-db-ja.com

差出人に基づいてスマートホストを選択する方法:Debianのexim4のアドレス

From:.*@Host1.comからsmtp.server1.comまでのメールと、From:.*@Host2.comからsmtp.server2.comまでのメールをルーティングしたい。

今のところ、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 and。 @ gmail.comで、@ gmail.comのメールヘッダーに自分がもグーグルの従業員なので、ルーティングは異なるはずです。

5
mikhailian

はい、分かりました。 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と比較する条件に注意してください。

4
mikhailian