まず、私の設定について説明します。 DebianWheezyで接尾辞2.9.6を使用しています。ポート25でAUTHを許可せず、代わりにMUAにポート587で送信サービスを使用するように強制します。 Debianはmaster.cfに次の設定が付属しています(デフォルトでコメントされています):
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Permit_sasl_authenticatedがsmtpd_client_restrictionsにある理由がわかりません。リレーアクセスを許可するには、main.cfで、またはできればmaster.cfの送信サービスの追加のオーバーライドで、smtpd_recipient_restrictions(または接尾辞> = 2.10の場合はsmtpd_relay_restrictions)にも追加する必要があります。
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
いずれの場合も、認証を2回チェックし、制限リストの評価が遅れると、両方のチェックがRCPTTOステージで実行されます。リレーアクセスがなければ、AUTHクライアントは$ mydestinationに送信できますが、ポート25のMTAはすでにそれを許可しています。遅延評価がなければ、smtpdは、クライアントチェックを実行するときに、AUTHに関する情報すら持っていません。
Smtpd_client_restrictionsでpermit_sasl_authenticatedを使用することに何かメリットはありますか?これのユースケースは何ですか?
通常、main.cfのsmtpd_client_restrictionsは使用されないため、これは単にmain.cfをオーバーライドするクリーンな方法です。これは、デフォルトでsmtpd_client_restrictions = permitに設定されていると言うのと同じです。
質問で言うようにsmtpd_recipient_restrictionsをオーバーライドすることで同じ結果を得ることができます。その場合、smtpd_client_restrictionsステートメントは必要ありません。おそらく、目立たないパフォーマンス上の利点があるかもしれませんが、main.cf関連のsmtpd_recipient_restrictionsに他の制限が存在する場合認証されたクライアントには、それらをmaster.cfにも追加し、将来の編集と同期することを忘れないでください。
また、Debianパッケージャーの観点からは、smtpd_recipient_restrictionsと比較して、main.cfで何かを実行する可能性がはるかに低いため、smtpd_client_restrictionsをオーバーライドする方が安全です。
Postfixは混合制限リストのサポートを開始しました。からの関連行: Postfix Docs
Around the time that smtpd_delay_reject was introduced, Postfix was also changed
to support mixed restriction lists that combine information about the client,
helo, sender and recipient or etrn command.
Mixing is needed for complex whitelisting policies. For example, in order to
reject local sender addresses in mail from non-local clients, you need to be
able to mix restrictions on client information with restrictions on sender
information in the same restriction list. Without this ability, many per-user
access restrictions would be impossible to express.
上記の段落は、混合制限がサポートされ、必要とされる理由を明確に説明しています。
あなたの場合、認証された後、client
(IP /ホストの接続)に制限を適用したくありません。 「ユーザーが認証しても、[email protected]
にメールを送信できないようにする必要があります」などの要件があるとすると、smtpd_recipient_restrictions
は次のようになります。
#/etc/postfix/main.cf
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/blocked_rcptto
permit_sasl_authenticated
#/etc/postfix/blocked_rcptto
[email protected] REJECT No mails can reach this user from us
お役に立てば幸いです。
私自身の質問に答えますが、考えられるユースケースの1つは次のとおりです。
後でsmtpd_client_restrictionsをmain.cf(デフォルトでは空)に追加してスパムなどをブロックした場合、master.cfに送信するためのオーバーライドがすでに存在していると、AUTHクライアントはこれらの制限をスキップできます。 smtpd_client_restrictionsをオーバーライドしないと、AUTHクライアントにスパムチェックを実行することで誰かを驚かせる可能性があります。もちろん、それは必ずしも悪いことではないかもしれません。