Exim 提供了使用 exim -bh 通过 CLI 测试 ACL 的选项。但是,此方法会打开 SMTP 连接,并且您只能测试 SMTP ACL。我希望调试和测试 acl_not_smtp ACL - 有没有类似的方法可以做到这一点?
或者,如果有人知道为什么这在 acl_not_smtp 中不起作用:
deny
message = Outgoing email is blocked for this domain. Please contact support for assistance.
senders = /etc/exim_blacklist_users
那将非常有帮助。这在 acl_smtp_rcpt 中确实有效。
答案1
Exim 没有本地测试模式,而 -bh 模式模拟了 smtp 连接。因此您必须使用真实消息进行测试。
我将创建一个包含完整标题和正文的示例邮件“sample.eml”。将其发送到您控制的地址、测试邮箱或其他地址。从您希望它拒绝的地址发送。使用简单的命令行将消息传递给 Exim:
# No real output
exim -bm -t < "sample.eml"
# Get verbose output, but still not much
exim -v -bm -t < "sample.eml"
# Here's where we figure things out: debug
exim -d+all -bm -t < "sample.eml"
最后一个将产生一个很多输出,所以也许将其重定向到文本文件并查看该文件。查看它在处理此消息时如何处理非 smtp acl。您会在那里找到答案。或者使用该 ACL 的调试输出更新问题,我们将完善我们的答案。
另一个选项是配置发送这些消息的应用程序,使用 SMTP 发送到 127.0.0.1 端口 25,而不是将消息传递到 /usr/sbin/sendmail(这是 exim 的 sendmail 兼容性包装器)。然后它将使用 smtp rcpt acl。