Exim - defer(-53):任何主机均未达到重试时间

Exim - defer(-53):任何主机均未达到重试时间

我是一名 Exim 新手 - 并且继承了一个运行行为不端的 Exim 的系统。

我的实例已停止发送电子邮件。它正在接受队列中的消息,并且-q1h每小时针对队列中的每条消息运行一次报告...

defer (-53): retry time not reached for any host

它配置为使用高可用性智能主机 - 因此这不是远程 MTA 的问题。实际上,exim -v从命令行运行发送电子邮件会立即将其传递给智能中继。即不存在路由、身份验证和可用性问题。Exim 只是没有尝试转发这些电子邮件。

我看到很多人说解决这个问题的方法是重置重试数据库,方法是删除锁文件或锁文件和重试数据库。这两种方法对我的 mailq 都没有影响。

注意这是不是失败后重试-exim从未尝试传递该消息。

重试配置如下(默认):

begin retry
* * F,2h,15m; G16h,1h,1.5; F,4d,6h

我想这-q1h就是它没有立即尝试转发消息的原因。但是它为什么不从队列中获取消息呢?

由于这是交给智能中继,我不需要备份一小时的消息。如果我从选项中删除 -q1h,exim 会继续定期扫描队列还是会忽略它?

答案1

-q1h意味着守护进程每小时将处理一次队列。让它处理队列是明智的,因为即使您通过智能主机发送,即使出于某种原因,智能主机也可能处于离线/无法访问状态,并且会导致消息被放入队列中。不运行队列意味着这些消息永远不会被发送。

事实上,exim 报告“任何主机的重试时间都未达到”意味着智能主机显然在某个时刻无法访问。为了防止浪费资源反复尝试访问离线主机,规定了重试时间,而该时间显然尚未达到。我敢肯定,如果您进一步搜索日志,您将看到智能主机无法访问的位置。

您可以通过运行来强制尝试传递消息exim -M messageID(您可以看到带有消息IDexim -bpmailqexim是否已链接到该名称)。

答案2

我忘记了规则 1:

当 Redhat / Centos 系统给你带来麻烦时,%^&* 很可能SELinux / 目标策略

相关内容