我在域 1 上设置了 exim4,位于另一台服务器域 2(带有 sendmail)前面。第二台服务器无法直接访问互联网,因此域 1 是域 2 的 MX。域 2 的设置与hubbed_host
域 1 上的 exim4 相同。
当垃圾邮件发送者向 no_such_user@domain2 发送消息时,其 sendmail 会拒绝:
550 5.1.1 <no_such_user@domain2>... User unknown
然后,domain1 上的 exim4 会进行如下自动回复:
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
no_such_user@domain2
SMTP error from remote mail server after RCPT TO:<no_such_user@domain2>:
host 10.0.0.1 [10.0.0.1]: 550 5.1.1 <no_such_user@domain2>... User
unknown
垃圾邮件发送者使用虚假的“发件人”字段,而此类生成的邮件会被 Exim 长期冻结。
我如何禁用 exim4 的部分或全部自动回复?理想情况下,我想要一个过滤器,如果消息未通过错误“用户未知”发送,则不会从 mailer-daemon 生成任何自动回复。
谢谢!
答案1
我认为这篇博文就是你要找的。
问题:当邮件服务器接受邮件后,又决定无法投递该邮件时,需要向原始邮件的发件人发送退回邮件。这些退回邮件通常是误发的。
对于许多 MTA 来说,都有解决方案,因此这里是我的解决方案
exim
:解决方案:此解决方案使用过滤来丢弃退回的电子邮件。因此,您的 exim 应该有一个中央过滤器。此类过滤器可以在
exim.conf
配置文件中配置 […]
答案2
您的问题是您没有在 RCPT 时验证收件人地址。这个问题很容易解决。
对接收者使用呼出验证。您与之对话的“远程”服务器在您的控制之下,因此这不构成滥用。
在分配给 acl_smtp_rcpt 的 ACL 中,您有一个执行“verify = 收件人”的规则。由于不知道您的规则,我无法确切说明该怎么做。如果此行位于“accept”块中,那么就在它之前,您可以添加另一个几乎相同的 accept 块,并添加“domains = domain2”限制,并执行“verify = 收件人/callout”(在末尾添加这 8 个字符)。如果这是在“require”块中,而不是“accept”,那么您可以在该块之后添加一个拒绝块,例如:
deny domains = domain2
!verify = recipient/callout
还有更多选项可以控制超时、延期操作等。请参阅 Exim 规范的 §40.42“调出的附加参数”(应该是系统上的某个位置的“spec.txt”)。