我想使用postfwd版本 2 来限制我的 sasl 身份验证用户每天发送的邮件数量。
我安装了最新的 tarball:postfwd-1.35,带有来自 Centos 6.4 的最新后缀
在我的我只有这条规则
id=RULEZEROSASL
sasl_username=~/^(\S+)$/
action=rcpt(sasl_username/500/86400/REJECT only 500 recipients per day for $$sasl_username)
它应该只拒绝经过身份验证的用户的邮件(而不是来自受信任的邮件服务器的邮件)。
我的 postfwd2 在 tcp 10045 上监听,在我的 postfix 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
知道为什么 postfix 没有使用 postfwd 吗?
后缀限制类可以返回三个答案,OK、REJECT 或 DUNNO,通常它们有 (OK, DUNNO) 或 (REJECT, DUNNO),因为后缀的工作方式。DENY 和 OK 表示忽略其余检查,DUNNO 表示继续下一个检查。
因此,在您的情况下,
permit_mynetworks
orpermit_sasl_authenticated
正在返回 OK,因此它不会在 下进一步检查smtpd_recipient_restrictions
,尽管您可以将它放在另一个限制类中,然后首先必须返回 OK,以便转发邮件。您不应将“smtpd_recipient_restrictions”用于“action=rcpt(...)”,因为它需要知道 recipient_count 属性。从手册页:
因此,如果您在 smtpd_data_restrictions 中使用“check_policy_service inet:127.0.0.1:10045”,它将起作用。希望如此。