我正在尝试设置 postfix 以允许在有限的条件下进行中继:
- 目标域是预定义列表之一
-或者- - 客户端登录成功
以下是相关的配置部分:
smtpd_sasl_auth_enable=yes
relay_domains=example.com
smtpd_recipient_restrictions=permit_auth_destination,reject_unauth_destination
smtpd_client_restrictions=permit_sasl_authenticated,reject
问题在于它要求同时满足两个限制,而不是非此即彼。也就是说,只有当客户端经过身份验证并且收件人域为 @example.com 时,它才允许中继。
相反,我需要它在满足其中任何一个要求时允许中继。如何才能做到这一点,而无需在两个具有不同规则的单独端口上运行 SMTP?
注意:
上下文是共享 Web 服务器上的仅供出站使用(绑定到 127.0.0.1)的 MTA,所有站点所有者都可以将邮件转发到“拥有的”域之一(但不是服务器本地),并且允许有限的一组“受信任的”站点所有者无限制地转发邮件,只要他们具有有效的 SMTP 登录。
答案1
当然,我在提出问题 6 分钟后就明白了。
您可以放入permit_sasl_authenticated
您的smtpd_recipient_restrictions
设置并将其smtpd_client_restrictions
全部删除。
smtpd_sasl_auth_enable=yes
relay_domains=example.com
smtpd_recipient_restrictions=permit_auth_destination,
permit_sasl_authenticated,reject_unauth_destination
事实上,这个选项没有记录在http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions已被证明是本案中造成不少挫折的一个根源。