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.cf
content_filter
pickup(8)
コンテンツフィルタリング。
参考までに、私はこれを行うのに労力をかける価値はないと思います。誰もメールゲートウェイでローカルメールを生成できるべきではありませんし、ない中央メールゲートウェイの場合、とにかく間違った場所で制限していることになります。