web-dev-qa-db-ja.com

Eximにローカルメールを外部に配信させる

珍しいメール設定があります-Google Apps/Gmailが前にあり、Eximがウェブサーバーで実行されています。 Google Appsに存在しないアカウントのメールは、Eximに転送されます。これらは両方とも同じドメインを使用します。

問題は、Eximアカウント(またはPHPアプリ)から送信されるすべてのメールはローカルでのみ配信され、Gmail経由では送信されないことです。

おそらくそれをよりよく説明するために、この高品質のチャートを参照してください。

[Google Apps] (Tom, Dick, Harry)

   |
   v
[Exim] (Jane, Mary, Sue)

Janeに送信されたメールは、GoogleによってEximに転送されます。トムに送信されたメールは、単にGoogleによって配信されます。これが機能する部分です-問題はジェーンはトムにメールを送信できない Eximに関する限り、ショー全体を実行するためです。

EximでSmartHostを設定する方法について読んでいますが、認証が必要です。重要なことに、EximのアカウントはAppsのアカウントと一致しません。

外部ルートを介してローカルメールを配信するようにEximを構成するにはどうすればよいですか?

4
Sudowned

質問のコメントで参照した回答( 別のメールサーバーにルーティングできないメールを転送するようにサーバーを構成する )に基づいて、ローカル部分だけでなく、メールアドレス全体を使用するようにロジック部分を書き直しました。以下は私のテストで機能するようです。

1)置く example.com + local_domains内。

2)彼が推奨したルーターを追加します。 (これに続いて、有効なローカルメールボックスを持つ+ local_domainsおよびユーザーを受け入れる別のルーターが必要です):

not_local:
  driver = manualroute
  domains = +local_domains
  transport = remote_smtp
  condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/forward_to_google}}
  # Use whatever MX is correct for your domain below
  route_list = +local_domains s7a1.psmtp.com

3)作成/etc/exim/forward_to_googleを入れてください:

[email protected]: yes
# Not required if this is a local account, but
# shows how flexible this approach can be
[email protected]: no

4)eximの-btアドレステストオプションを使用してテストできます(私の構成には有効なローカルユーザー用の2番目のルーターがありませんが、最初のユーザーがローカル配信を表示するようにする必要があります):

$ exim -bt [email protected]
[email protected] is undeliverable: Unrouteable address
$ exim -bt [email protected] 
[email protected]
  router = not_local, transport = remote_smtp
  Host s7a1.psmtp.com [64.18.6.10] 
4
Todd Lyons