在我们的服务器上,我们使用 policyd 1.x 和 Postfix 2.1.5 来将未经授权的用户(即我们域的邮件)列入灰名单并强制实施传入配额。为此,我已main.cf
按如下方式设置 Postfix:
smtpd_restriction_classes = greylisting
greylisting = check_policy_service inet:127.0.0.1:10031
...
smtpd_recipient_restrictions =
permit_mynetworks,
...
permit_sasl_authenticated,
...
check_client_access pcre:/etc/postfix/checks/greylist.pcre,
并设置选择性灰名单配置:
# greylist.pcre
/^unknown$/ greylisting
# TLDs with high spam rate
/\.(ni|ru|hu|us|si|sk|cn|jp|ro|hn|mx|br|ar|cc|ae|ee|my|tr|pt|cz)$/ greylisting
... etc
即 SASL 身份验证覆盖 policyd。到目前为止,这很好用。但是,我现在想对经过身份验证的用户也使用 policyd,并设置一个完全不同的为这些用户设置规则:
对于某些未经授权的用户,根据远程主机名,
- 灰名单,
- 使用默认值进行记账(限制每次的邮件数量),
- 黑名单,
- 白名单。
对于授权(SASL)用户,
- 没有灰名单,
- 不同的用户特定的外发邮件配额与默认值,
- 没有黑名单,
- 没有白名单。
到目前为止,我认为我必须使用不同的 SQL 数据库和配置文件运行另一个 policyd 实例。
这是真的吗?或者有没有办法配置 policyd 的单个实例以根据远程主机名和 SASL 身份验证状态使用不同的规则集?
答案1
在 policyd v2 (cluebringer) 中这是可能的。您可以为每个策略定义规则(一个策略用于传入电子邮件,另一个策略用于传出电子邮件,另一个策略用于 SASL)。然后您可以为每个策略分配不同的 policyd 组件(grelist、SPF、配额)。