我想用 Postfix 实现以下目标:
- 将所有电子邮件列入黑名单
- 允许任何客户端发送到域列表
- 允许某些客户端发送到任何域
这是我所拥有的:(postfix 在 10.0.8.0 上,并且一些发件人是 10.0.8.0 和 10.0.9.0)
mynetworks_style = subnet
smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/access-bl.query, check_client_access hash:/etc/postfix/trusted_clients, check_recipie
nt_access hash:/etc/postfix/local_domains, reject_unauth_destination, permit
因此,现在黑名单可以正常工作。文件/etc/postfix/trusted_clients
包含谁可以发送到任何地方 (3),文件/etc/postfix/local_domains
包含你可以发送到哪里 (2)。这两个都很好,它们可以正常返回。
我的问题是让这三个一起工作。不确定这是否是顺序问题。目前从 10.0.9.17 发送测试,我得到了Relay access denied
。如果我添加:
mynetworks = 10.0.8.0/24 10.0.9.0/24
那么任何人都可以发送到任何地方,因此#2 不起作用。
Ubuntu 14.04 上的 Postfix 版本是 2.10。
有任何想法吗?
输出postconf | grep restrictions
:
smtpd_client_restrictions =
smtpd_data_restrictions =
smtpd_end_of_data_restrictions =
smtpd_etrn_restrictions =
smtpd_helo_restrictions =
smtpd_recipient_restrictions = check_recipient_access sqlite:/etc/postfix/access-bl.query, check_client_access hash:/etc/postfix/trusted_clients, check_recipient_access hash:/etc/postfix/local_domains, reject_unauth_destination, permit_mynetworks
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
smtpd_sender_restrictions =
答案1
在 postfix 2.10 中,smtpd_relay_restrictions
引入了新参数。此限制将评估前 smtpd_recipient_restrictions
。
摘录自官方文档
smtpd_relay_restrictions(默认值:permit_mynetworks、permit_sasl_authenticated、defer_unauth_destination)Postfix SMTP 服务器在 RCPT TO 命令上下文中(在 smtpd_recipient_restrictions 之前)应用的邮件中继控制访问限制。有关评估上下文和时间的讨论,请参阅 SMTPD_ACCESS_README 中的“SMTP 访问限制列表的延迟评估”部分。
因此,任何外部的客户mynetworks
都会Relay Access Denied
因为这条规则而得到defer_unauth_destination
。
解决方案之一是将限制 (2) 和 (3) 移入smtpd_relay_restrictions
。
smtpd_recipient_restrictions =
check_recipient_access sqlite:/etc/postfix/access-bl.query
smtpd_relay_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
check_client_access hash:/etc/postfix/trusted_clients,
check_recipient_access hash:/etc/postfix/local_domains,
reject_unauth_destination
笔记:
- 您可以放置拒绝未授权目的地在 或 中
smtpd_relay_restrictions
。smtpd_recipient_restrictions
无需在两个地方重复。 smtpd_relay_restrictions
是放置中继规则的地方,而smtpd_recipient_restrictions
是垃圾邮件黑名单的占位符(例如拒绝非 fqdn_sender)。