我有一个非常简单的 Exim 配置,它只是将所有邮件转发到一组目标地址。当立即传送到某个地址失败时,该消息将被添加到队列中(然后由重试规则处理)。我想更改它,以便如果立即交付失败,消息是:blackhole:d。(如果生成反弹也没关系,因为我只是将反弹重定向到 :blackhole:)。
这需要发生在临时故障(即 4xx)和永久性故障(即 5xx)中。
我理解这意味着如果无法立即发送邮件,则邮件将永久且无法挽回地丢失。在这种特殊情况下,这不是问题。
读到这里,听起来很可疑,就像“我怎样才能改进我的垃圾邮件 Exim 服务器”。这真的不是这个目的,如果你能找到我可以证明的方法,我很乐意这样做!
Exim 具有用于设置重试时间的广泛配置。在您的 exim.conf 中,底部附近会有一个重试部分。重试配置是三个字段,电子邮件地址、导致失败的错误代码和时序模式列表。这些被定义为一组三个数字:字母行为代码、应用此规则的时间长度和重试间隔。例如:
可以读作“2 小时,每 15 分钟尝试一次固定内部”,
您可以尝试设置空重试:
exim 可能会对此感到不安。相反,您可以使用一分钟的单次重试:
这不完全是你要求的,但它非常接近。
还有一些选项可以针对特定的电子邮件地址和不同的返回码进行更改。
将重试设置为荒谬的长,cron 脚本以从
exim -bpu
队列中提取大于长度 x 的消息 id,然后删除exim -Mrm <msgid>
您也可以将 exim 作为非排队守护程序运行
mua_wrapper = true
。查看第 48 节“将 Exim 用作非排队客户端”,它可能会满足您的需求。system_filter
你能在你的 exim.conf 中设置选项吗?Ater,在您的配置系统过滤器文件中,创建如下规则:第一次投递后,exim 会再次将消息放入队列,但当再次尝试处理时,它将被丢弃。