如何配置 postfix 以仅发送到白名单地址?

如何配置 postfix 以仅发送到白名单地址?

我想将 postfix 配置为仅向白名单中的地址发送邮件。我尝试过像这样smtpd_recipient_restrictions使用:main.cf

smtpd_recipient_restrictions =
    reject_unauth_destination
    check_recipient_access hash:/path/to/whitelist

白名单文件的格式为

[email protected]    OK
[email protected]    OK

然后使用postmap命令转换成哈希。

但中继仍将邮件发送到非白名单地址。我遗漏了什么?

编辑:我通过命令发送这封邮件sendmail,这显然绕过了 smptd 限制。有办法解决这个问题吗?

编辑2/故事其余部分:我花了相当多的时间尝试让 sendmail 通过 SMTP 发送,结果发现我使用的命令不是 sendmail,而是 postfix 的 sendmail 兼容接口,它可以模仿功能,但据我所知不能被告知使用 SMTP。

但 84104 的解决方案却非常完美。

答案1

你告诉 postfix 拒绝某些类型的邮件并接受其他邮件。有些邮件可能未被过滤器捕获,在这种情况下它们被允许。我认为您想告诉它仅接受(检查)列表并拒绝所有其他邮件。

smtpd_recipient_restrictions =
    check_recipient_access hash:/path/to/whitelist
    reject

回应编辑:
sendmail(1)使用postdrop(1)smtpd(8) 来实现您正在寻找的东西的一种方法是操纵transport(5)的行为。

main.cf
    transport_maps = hash:/etc/postfix/transport

transport
    [email protected] :
    [email protected] :
    [email protected] :
    * error: Recipient not whitelisted.

注意:如果您没有在传输图中包含发件人的地址,则将无法接收退回消息。

相关内容