题 Postfix - 如何在队列中重试邮件传递?


如果主要服务器出现故障,我有一个备用邮件服务器。 在那种失败的情况下,邮件会在备份服务器上出现并保持在那里直到主要服务器返回。

如果我等待一段时间,一旦主服务器恢复,交付将自动完成,但可能很长。那么如何强制发送所有邮件的重试?

举个例子 : postqueue -p:给我一个邮件列表

然后我尝试了postqueue -f(来自手册页:刷新队列:尝试传递所有排队的邮件。)。它确实冲了上去,但邮件没有发送......


77
2018-06-13 08:42




似乎-f是flush,-q是队列(发送队列) - erm3nda
没有 postqueue -q。有 sendmail -q 支持sendmail语法,所以postfix可以完全取代sendmail,但这是一个同义词。不同的字母是jsut,因为postfix选择的不同于sendmail。 - Johannes H.
对不起,在同一天发表评论:)所以两者都错了。 - erm3nda


答案:


根据 postqueue(1) 你可以简单地跑 postqueue -f 刷新邮件队列。如果在刷新队列之后未传递邮件但是正在重新排队,则可能需要检查邮件日志中的错误。

看一看 postsuper(1) 也许会有所帮助。也许这些消息处于暂停状态,需要先发布。


98
2018-06-13 09:18





postqueue -f 应该管用。如果没有,那就有充分的理由。检查日志。也 pfqueue 是一个非常有用的检查邮件假脱机的命令。


34
2018-06-13 09:44





sendmail -q 立即重试队列中所有邮件的传递。


12
2018-06-13 10:41



这与运行postqueue -f不一样吗? - Dalibor Filus
它是@NoICE。从 文档: -q尝试传递所有排队的邮件。这是通过执行postqueue(1)命令来实现的。 - the-wabbit
我没有检查,但似乎-f是flush,-q是队列。一个尝试发送然后另一个只是清理队列。我猜想尝试交付会更好。 - erm3nda
@ erm3nda你至少要先查看手册页。来自 postqueue 手册页:“ - f刷新队列:尝试传递所有排队的邮件。此选项通过联系Postfix qmgr(8)守护程序来实现传统的”sendmail -q“命令。” =>它们是同义词并且完全相同。 “ - Johannes H.
@JohannesH。 Doh ...对不起,你是对的我应该读它。谢谢你的纠正。 - erm3nda


postqueue -s domain.tld 应该使备份中继机器刷新您站点的所有电子邮件。 postfix的默认设置允许对所有域进行每站点刷新 relay_domainspostqueue -f 也会这样做,但也会推出外部网站的邮件,即它比你需要的更多。

你是如何确定邮件尚未发送的?他们还在备份主机上还是被送到主机然后迷路了?


4
2018-06-14 15:47