![强制使用白名单验证 smtp 电子邮件](https://linux22.com/image/668679/%E5%BC%BA%E5%88%B6%E4%BD%BF%E7%94%A8%E7%99%BD%E5%90%8D%E5%8D%95%E9%AA%8C%E8%AF%81%20smtp%20%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6.png)
我需要一个 exim 设置,它只允许经过身份验证的 smtp 电子邮件,除非电子邮件来自root@servername
。这就是我今天所拥有的:
acl_not_smtp (custom_begin_outgoing_notsmtp_checkall)
deny
authenticated = *
condition = ${if !eq {root@$primary_hostname}{${address:$h_from:}}}
message = REJECTED
accept
此解决方案会阻止所有未经身份验证的电子邮件。有人有更好的解决方案吗?
答案1
我猜你需要调用另一个 acl:acl_smtp_rcpt。找出这个 acl 在你的服务器上映射的名称。在 Debian 中是 acl_check_rcpt。
要测试发送者,必须已经给出发送者,当远程端发送“RCPT TO:”命令时,这一点是正确的。无需尝试,我会在 acl_check_rcpt 中执行如下操作:
accept authenticated = *
accept senders = root@servername
deny message = Rejected
您不应该依赖容易被伪造的发件人地址。您可以使用以下方式测试发送主机
accept senders = root@servername
hosts = 127.0.0.1 : localhost
此外,要确保消息的来源是您的服务器。
大多数本地消息不会被 smtp 接收。您的配置中的 acl 是:acl_not_smtp。但再次搜索它映射到什么名称。