Postfix check_policy_service - 受信メールのみをチェックし、内部および送信メールは無視します

Postfix check_policy_service - 受信メールのみをチェックし、内部および送信メールは無視します

Centos x64 (selinux 無効) に policyd サーバーをセットアップしようとしています。これにより、さまざまなサーバーから受信するメッセージの数と (さらに重要な点として) さまざまなユーザー アカウントから送信されるメッセージの数を制限できるようになります。現時点では、受信メール (たとえば、Google から) を制限するための設定は機能していると思いますが、postfix に内部メールと送信メールに対して同じポリシー チェックを実行させることはできません。

問題はここにあります (現時点では、postfix にポリシー サービスを使用させようとしているだけです)

main.cfに次の行を追加しました

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10031,   reject_unauth_destination
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031

そして、policyd を無効にしました(テストのため)

他のホスト(たとえばGmail)からこのマシンにメールを送信すると、postfixログにpolicydサーバーにアクセスできないというエラーが表示されます。

Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: connect from unknown[IP_ADDRESS]
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:23 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: connect to 127.0.0.1:10031: Connection refused
Sep 10 10:40:24 centosvbox1 postfix/smtpd[9378]: warning: problem talking to server 127.0.0.1:10031: Connection refused

これは、postfixがpolicydサーバーにアクセスしようとすることを意味します(これは期待どおりに動作します)

しかし、コンソール(mailxを使用)からユーザーroot(ローカルアカウント)または他の場所(gmail)にメールを送信しようとすると、そのような検索は行われず、policydにアクセスしようとすることなく、メールはそのまま通過します。

echo "ksfdhjksf" | mail -s "kjfhkjsfkjsfd" root

Sep 10 10:42:03 centosvbox1 postfix/cleanup[9386]: 9B606417D9: message-id=<20130910084203.9B606417D9@domain>
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: from=<root@domain>, size=458, nrcpt=1 (queue active)
Sep 10 10:42:03 centosvbox1 postfix/local[9388]: 9B606417D9: to=<root@domain>, orig_to=<root>, relay=local, delay=0.04, delays=0.03/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to mailbox)
Sep 10 10:42:03 centosvbox1 postfix/qmgr[9342]: 9B606417D9: removed

それで疑問に思うのですが、なぜ check_policy_service が機能しないのでしょうか? (これは postfix の問題だと思います)

メール送信時にシステム ユーザー (たとえば、Web アプリケーション) を policyd で制限する方法をご存知の方はいませんか?

答え1

でポリシーチェックを定義したのでsmtpd_*_restrictions、ローカルで生成されたメールに対してはクエリが実行されません。この種のメールはサービスを使用してPostfixキューに挿入されるためです。これを回避するには、サービスを変更してインスタンスを追加するpickup(8)必要があります(もちろん、コンテンツフィルタリングインスタンスも追加する必要があります。master.cfcontent_filterpickup(8)コンテンツフィルタリング

参考までに、私はこれを行うのに労力をかける価値はないと思います。誰もメールゲートウェイでローカルメールを生成できるべきではありませんし、ない中央メールゲートウェイの場合、とにかく間違った場所で制限していることになります。

関連情報