![Exim - 如何使用万能路由器仅允许白名单收件人?](https://linux22.com/image/575384/Exim%20-%20%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E4%B8%87%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8%E4%BB%85%E5%85%81%E8%AE%B8%E7%99%BD%E5%90%8D%E5%8D%95%E6%94%B6%E4%BB%B6%E4%BA%BA%EF%BC%9F.png)
我正在使用带有 catchall 路由器的 exim4 将邮件转发到 java 进程。java 进程用户是有效收件人。我试图通过在 exim 中将用户列入白名单来减少路由到 java 进程的垃圾邮件数量。
我已经在我的配置文件中尝试过这个:
acl_check_rcpt:
deny message = invalid recipient
domains = thedomain.com
recipients = !/etc/exim4/recipients_whitelist
以及大约十亿个其他事情。我已经验证过,如果我将条件重写为 justdeny
或消息被拒绝,但我无法使白名单方法起作用。我也尝试过反转逻辑来接受白名单用户,但这也不起作用。deny recipients = [email protected]
这是我的路由器:
outer_catchall:
driver = accept
transport = dev_null_transport
答案1
这对我有用:
acl_check_rcpt:
discard
!recipients = /etc/exim4/recipients_whitelist
/etc/exim4/recipients_whitelist 中每行列出允许接收者的邮件地址。此文件为白名单。
请注意收件人前的感叹号。
答案2
如果某些收件人被列入白名单,而其他收件人被拒绝 - 那就无法解决所有问题。使用如下所示的路由器,让标准 ACL 收件人验证完成工作。
outer_java:
driver = accept
domains = thedomain.com
local_parts = /etc/exim4/java_local_parts
transport = java_pipe