使用逻辑 AND 来修复 smtpd_sender_restrictions

使用逻辑 AND 来修复 smtpd_sender_restrictions

我正在使用 postfix,我需要配置基于发件人的限制,以便未经身份验证且不属于 mynetworks 的人都无法通过此服务器发送邮件,

这是我的 smptd 发件人限制:

smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject

我无法在 Postfix 官方文档中找到此信息

(允许我的网络&&允许sasl认证)

实现此目的的正确语法是什么

答案1

根据使用 SMTP 访问限制列表进行选择在 Postfix SMTP 中继和访问控制文档中:

Postfix 允许您为 SMTP 对话的每个阶段指定访问限制列表。各个限制的描述如下postconf(5)手册页。

确实可以尽早限制 IP 地址smtpd_client_restrictions然后稍后再要求 SASL 身份验证smtpd_sender_restrictions。请注意,第一个匹配的reject*或被permit*使用,因此如果您需要拒绝未知发件人域和非 FQDN 发件人,您必须将它们放在 之前permit_sasl_authenticated

限制按照指定的顺序应用;第一个匹配的限制获胜。

符合您期望的行为的示例配置:

smtpd_client_restrictions =
    permit_mynetworks,
    reject

smtpd_sender_restrictions =
    reject_non_fqdn_sender,
    reject_unknown_sender_domain, 
    permit_sasl_authenticated,
    reject

此外,你甚至可以根据用户的登录情况限制他们可以使用哪些地址smtpd_sender_login_maps

smtpd_sender_login_maps = hash:/etc/postfix/sender_login_maps

smtpd_client_restrictions =
    permit_mynetworks,
    reject

smtpd_sender_restrictions =
    reject_sender_login_mismatch,
    permit_sasl_authenticated,
    reject

在这里,上例中的reject_non_fqdn_sender&reject_unknown_sender_domain是毫无意义的,因为你的 中不会有这样的域/etc/postfix/sender_login_maps,例如,

# Personal addresses
[email protected]  joe
[email protected]    jane

# Shared addresses
[email protected]        joe
[email protected]        jane

postmap /etc/postfix/sender_login_maps与往常一样,请记住在使用hash:ie时运行Berkeley DB 数据库 查找表类型

答案2

我不相信仅通过 Postfix 配置就能实现这一点。

但是,如果将传出的流量与传入的流量分开,则可以使用防火墙规则对客户端 IP 地址应用额外的限制。

添加第二个 Postfix 服务器或配置现有实例以仅允许在端口 465 上发送

相关内容