質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

Q&A

解決済

1回答

2972閲覧

postfixにて送信元IPアドレスごとにリレー先を制御したい

ikayarou

総合スコア14

Postfix

Postfixは、電子メールサーバソフトウェアで、 メールを配送するシステムMTAの一種です。

0グッド

0クリップ

投稿2020/07/10 11:21

おつかれさまです。
初めてpostfixを触っているのですが、理解が追いついていないところがあるため、以下の内容についてご教授いただけますと幸いです。

実現したいこと

特定の送信元IPアドレスを持つクライアントからのメールだけ特定のIPアドレス宛てへリレーし、
上記の送信元IPアドレスのメールは、指定したリレー先以外には送らないようにしたいです。

現在は送信元IPアドレスによる制御を考えていますが、他により良い実現方法がありましたら送信元IPアドレスによる制御でなくても問題ありません。

確認したこと

「check_client_access」を使えばクライアントの送信元IPアドレスに対して何かしらの振る舞いができそうだというところまで理解したのですが、
それ以上のことが分かりませんでした。。。

提供できる情報が少なくて大変恐縮ですが、お力添えをいただけますと大変助かります。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

envelope sender で配送先を振り分けるパラメーター sender_dependent_relayhost_maps はありますが、接続元 IPアドレスで振り分けるパラメーターはなさそうです。

check_client_access は smtpd でメールを受ける際には使用できますが、incoming キューに入ったあと、qmgr + trivial-rewrite で配送先を決める際には使用できないと思います。

Postfix Architecture Overview

特定の送信元IPアドレスを持つクライアントからのメールだけ特定のIPアドレス宛てへリレーし、
上記の送信元IPアドレスのメールは、指定したリレー先以外には送らないようにしたいです。

前段に 25 番ポートで受ける SMTP プロキシーを配置して、接続元 IPアドレスで振り分ける構成が考えられます。
SMTP プロキシーは、例えば、Nginx の ngx_stream_proxy_module + ngx_stream_geo_module など。
特定の送信元 IPアドレスならば特定の IPアドレス(MTA)へ、それ以外はローカルの postfix (例えば 10025 番ポート)へ。
ただし、postfix から見た接続先は 127.0.0.1 (nginx) になるので、mynetworks による制御が効かなくなります。

(nginx 設定例) stream { geo $relay_server { default 127.0.0.1:10025; 192.168.0.0/24 special.relay.host:25; } server { listen 25; proxy_pass $relay_server; } }

それがダメなら、postmulti で 1サーバーに 2インスタンス稼働させ(例えば、それぞれ 10025, 20025 番ポート)、それぞれリレー先を設定しておき、iptables の REDIRECT で、接続元 IPアドレスにより振り分ける方法が考えられます。

iptables -t nat -A PREROUTING -s 192.168.0.0/24 -p tcp --dport 25 -j REDIRECT --to-port 20025 iptables -t nat -A PREROUTING -p tcp --dport 25 -j REDIRECT --to-port 10025

投稿2020/07/11 13:31

TaichiYanagiya

総合スコア12146

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ikayarou

2020/07/12 19:47

いくつかの実現を方法を提示してくださり、誠にありがとうございます。 postfix単体では実装が厳しいことが分かりましたので、postmultiを使って検証をしてみます!
TaichiYanagiya

2020/07/13 00:23

サーバー 1台である必要がなければ、2台に分けて、それぞれ mynetworks でアクセス制限すればいいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問