Postfix 多项检查

Postfix 多项检查

我想用 Postfix 实现以下目标:

  1. 将所有电子邮件列入黑名单
  2. 允许任何客户端发送到域列表
  3. 允许某些客户端发送到任何域

这是我所拥有的:(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

笔记:

  1. 您可以放置拒绝未授权目的地在 或 中smtpd_relay_restrictionssmtpd_recipient_restrictions无需在两个地方重复。
  2. smtpd_relay_restrictions是放置中继规则的地方,而smtpd_recipient_restrictions是垃圾邮件黑名单的占位符(例如拒绝非 fqdn_sender)。

相关内容