Postfixを使用して別のSMTPサーバーにメールをプロキシする


11

Toアドレスに応じて異なるSMTPサーバーにメールを転送(またはプロキシ)するにはどうすればよいですか?

ポート25でリッスンするSMTP(後置)サーバーを備えた1台のマシンがあります。Lamson(http://lamsonproject.org/)を使用して、着信メールと後置したいメールを処理したいです。

私の考えは、Lamsonを別のポートでリッスンするようにセットアップすることです。たとえば、localhost:10025としましょう。次に、ポート25でリッスンしてすべてのメールをキャッチするようにpostfixをセットアップします。

特定のメールを10025でLamsonにプロキシし、他のすべてのメール自体を処理するようにPostfixを設定するにはどうすればよいですか?

回答:


17

Postfixはその構成が非常に柔軟(したがって、複雑)であるため、これを実現するにはさまざまな方法があります。最も簡単な方法は、おそらくtransport(5)テーブルを使用することです。

最初に、postfixでトランスポートテーブルの使用を有効にします。

/etc/postfix/main.cf:
    transport_maps = hash:/etc/postfix/transport

また、Lamsonによって処理されるアドレス宛のメールをPostfixが受け入れることを確認する必要があります。permit_auth_destination有効な受信者アドレスを決定するためにPostfixが適用するルールを見てください。次の例では、 "example.com"がPostfixに知られていないドメインであると仮定すると、単純にリレードメインとして追加するのがおそらく最も簡単です:

/etc/postfix/main.cf:
    relay_domains = example.com

次に、適切なテーブルを作成します。たとえば、ドメイン「example.com」のメールと「user@mydomain.org」のメールを、ポート10025でリッスンしているローカルのLamsonにリダイレクトする場合:

/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    user@mydomain.org    smtp:127.0.0.1:10025

その後(およびトランスポートテーブルファイルが更新されるたびに1回)実行することを忘れないでください。

$ postmap /etc/postfix/transport

これでうまくいくはずです。必ずtransport(5)manページを読んでください。この強力な機能を使用する方法について、より多くのアイデアが得られます。


こんにちは、ヒントをありがとう。あなたの指示に従った後にメールを転送するのにまだ問題があります。NOQUEUEを取得しています:拒否:{my-mail-relay}からのRCPT拒否された受信者アドレス:ローカル受信者テーブルのユーザーが不明です。何か案は?
マティアス

ああ、Postfixがexample.comにリレーされるメールを受け入れることも確認する必要があります(現在、PostfixはLamsonのリレーとして機能しています)。Postfixが主に別のドメインにサービスを提供している場合、これを実現する最も簡単な方法は、「Lamsonドメイン」をに追加することrelay_domainsです。これを組み込むために回答するように更新しました。
アール

1
おかげで、手順を実行しても、localhostを有効なホストとして認識するためにpostfixを取得する際にまだ問題が発生していました。コマンドpostconf -e 'smtp_host_lookup = dns、native'を実行しました。これで問題が解決しました。postfixは、必要なメールをLamsonに転送しています。
マティアス

1
それが動作することを聞いて良い。変更smtp_host_lookupする127.0.0.1代わりに、の代わりに使用することもできますlocalhost。その改善に対応するために回答を更新しました。
アール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.