exim4 – 禁用关于“RCPT后来自远程邮件服务器的SMTP错误”的自动回复

我有一个在其他服务器,domain2(与sendmail)前的domain1的exim4设置。 第二台服务器没有直接访问互联网,所以domain1是domain2的MX。 domain2被设置为hubbed_host上的exim4中的hubbed_host

当垃圾邮件发送者为no_such_user @ domain2发送消息时,其sendmail会拒绝:

 550 5.1.1 <no_such_user@domain2>... User unknown 

然后,在域1的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 

垃圾邮件发送者使用虚假的“来自”字段,这样生成的邮件被长时间冻结。

我怎样才能禁用exim4的一些或所有autoreplies? 理想情况下,我想要一个filter,如果邮件没有发送错误“用户未知”,而不是从邮件程序生成任何autoreply。

谢谢!

我觉得这个博客文章是你要找的。

问题:当邮件服务器接收到邮件并且稍后决定不能发送邮件时,需要将邮件发送回原始邮件的发件人。 这些退回电子邮件往往是错误的。

对于很多MTA都有解决scheme,所以这里是我的exim解决scheme:

解决scheme:此解决scheme使用过滤来丢弃反弹的电子邮件。 所以你的exim应该有一个中央filter。 这样的filter可以configuration在exim.confconfiguration文件[…]

您的问题是您没有在RCPT时间validation收件人地址。 这很容易解决。

为收件人使用标注validation。 与您交谈的“远程”服务器在您的控制之下,所以这不是滥用。

在分配给acl_smtp_rcpt的ACL中,您有一个“verify = recipient”的规则。 不知道你的规则,我不能确切地说要做什么。 如果这行代码位于“accept”块中,那么在它之前,您可以添加另一个接受块,几乎相同,添加“domains = domain2”限制,并且执行“verify = recipient / callout”(添加这8个字符最后)。 如果这是在“要求”块,而不是“接受”,那么在该块之后,你可以添加一个拒绝块,如:

  deny domains = domain2 !verify = recipient/callout 

有更多的选项来控制超时,延迟动作等。请参阅Exim规范的§40.42“附加参数”(应该是系统某处的“spec.txt”)。