web-dev-qa-db-ja.com

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

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

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

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

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

11
Mattias

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

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

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

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

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

次に、適切なテーブルを作成します。例えば。ドメイン「example.com」のすべてのメールと「[email protected]」のメールを、ポート10025でリッスンしているローカルのLamsonにリダイレクトするには、次のように入力します。

_/etc/postfix/transport:
    example.com          smtp:127.0.0.1:10025
    [email protected]    smtp:127.0.0.1:10025
_

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

_$ postmap /etc/postfix/transport
_

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

17
earl