![使用逻辑 AND 来修复 smtpd_sender_restrictions](https://linux22.com/image/787811/%E4%BD%BF%E7%94%A8%E9%80%BB%E8%BE%91%20AND%20%E6%9D%A5%E4%BF%AE%E5%A4%8D%20smtpd_sender_restrictions.png)
我正在使用 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 上发送