postfwd バージョン2を使用して、sasl認証済みユーザーが送信する1日あたりのメール量を制限したいと思います。
Centos 6.4の最新の接尾辞を含む最新のtarball:postfwd-1.35をインストールしました
私にはこのルールしかありません
id=RULEZEROSASL
sasl_username=~/^(\S+)$/
action=rcpt(sasl_username/500/86400/REJECT only 500 recipients per day for $$sasl_username)
これは、認証されたユーザーのメールのみを拒否する必要があります(信頼できるメールサーバーからのメールは拒否しません)。
私のpostfwd2はtcp10045と私の接尾辞main.cfでリッスンします
# Restriction Classes
smtpd_restriction_classes = postfwdcheck
postfwdcheck = check_policy_service inet:127.0.0.1:10045
127.0.0.1:10045_time_limit = 3600
...
smtpd_recipient_restrictions =
permit_mynetworks
permit_sasl_authenticated
permit_tls_clientcerts
reject_unauth_destination
check_recipient_access hash:/etc/postfix/access
reject_invalid_helo_hostname
# postfwd con rate limiting
check_policy_service inet:127.0.0.1:10045
warn_if_reject reject_non_fqdn_helo_hostname
warn_if_reject reject_unknown_helo_hostname
warn_if_reject reject_unknown_client
reject_non_fqdn_sender
reject_non_fqdn_recipient
reject_unknown_sender_domain
reject_unknown_recipient_domain
warn_if_reject reject_unverified_sender
reject_unverified_recipient
reject_rbl_client zen.spamhaus.org
permit
/ etc/postfix/policyにあります
. postfwdcheck
ログとコマンドにルール一致エントリがありません
postfwd2 -vv --dumpcache -f /etc/postfwd.cf
リクエスト番号を表示します
[STATS] postfwd2::policy 1.35: **5** requests since 0 days, 01:05:31 hours
以下で行われる手動テストの場合にのみ増加します。
nc 127.0.0.1 10045 <request.sample
Postfwdがpostfixに関与していない理由はありますか?
接尾辞制限クラスは、OK、REJECT、またはDUNNOの3つの回答を返すことができます。通常、接尾辞の機能方法により、(OK、DUNNO)または(REJECT、DUNNO)が返されます。 DENYとOKは、残りのチェックが無視されることを意味し、DUNNOは、次のチェックに進むことを意味します。
したがって、あなたの場合、permit_mynetworks
またはpermit_sasl_authenticated
はOKを返します。したがって、smtpd_recipient_restrictions
の下でそれ以上チェックしませんが、別の制限クラスに配置して、最初に返す必要があります。 OK、メールを転送します。
「action = rcpt(...)」には「smtpd_recipient_restrictions」を使用しないでください。recipient_count属性を知る必要があるためです。マニュアルページから:
rcpt (<item>/<max>/<time>/<action>)
this command works similar to the rate() command with the difference,
that the rate counter is increased by the request's recipient_count
attribute. to do this reliably you should call postfwd from
smtpd_data_restrictions or smtpd_end_of_data_restrictions. if you want
to be sure, you could check it within the ruleset:
# recipient count limit 3 per hour per client
id=RCPT01 ; protocol_state==END-OF-MESSAGE ; client_address!=10.1.1.1
action=rcpt(client_address/3/3600/450 4.7.1 sorry, max 3 recipients per hour)
したがって、代わりにsmtpd_data_restrictionsで「check_policy_serviceinet:127.0.0.1:10045」を使用すると、機能します。そう願っています。