我想将 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.
注意:如果您没有在传输图中包含发件人的地址,则将无法接收退回消息。