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


94

我有一个备用邮件服务器,以防主服务器出现故障。在这种情况下,邮件将发送到备用服务器上,并留在备用服务器上,直到主服务器返回为止。

如果我等了一段时间,一旦主服务器返回,交付将自动完成,但是时间可能会很长。那么如何强制所有邮件重新发送?

例如:postqueue -p:给我邮件列表

然后,我尝试了postqueue -f(来自手册页:刷新队列:尝试传递所有排队的邮件。)。它肯定刷新了队列,但邮件未送达...


似乎-f刷新并且-q是队列(发送队列)
erm3nda 2015年

1
没有postqueue -q。它sendmail -q支持sendmail语法,因此postfix可以完全替代sendmail,但这是一个同义词。jsut是不同的字母,因为后缀选择的字母与sendmail选择的字母不同。
Johannes H.

再次抱歉,请在同一天发表评论:)所以都错了。
erm3nda 2015年

Answers:


112

根据postqueue(1),您可以简单地运行postqueue -f以刷新您的邮件队列。如果刷新队列后未发送邮件,而是将其重新排队,则可能要检查邮件日志中是否有错误。

窥视postsuper(1)可能也会有所帮助。消息可能处于保留状态,需要先发布。


36

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


15

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


这与运行postqueue -f不一样吗?
达里波·菲卢斯(Dalbor Filus)

2
@NoICE。从文档-q尝试传递所有排队的邮件。这是通过执行postqueue(1)命令实现的。
比特兔(2014年

我没有检查,但是-f似乎是冲洗的,而-q是队列。一个尝试发送然后另一个仅清除队列。我猜最好尝试交付。
erm3nda 2015年

1
@ erm3nda您至少应首先检查手册页。在postqueue手册页中:“ -f刷新队列:尝试传递所有排队的邮件。此选项通过与Postfix qmgr(8)守护程序联系来实现传统的“ sendmail -q”命令。=>它们是同义词,并且完全相同。“
Johannes H.

@JohannesH。道...对不起,你说得对,我应该读它。谢谢你的纠正。
erm3nda 2015年

4

postqueue -s domain.tld应该会导致备用中继计算机刷新您站点的所有电子邮件。后缀的默认设置为中的所有域启用按站点刷新relay_domainspostqueue -f也会这样做,但也会向外部站点发送邮件,即它超出了您的需要。

您如何确定邮件尚未送达?它们仍在备份主机上还是已发送到主主机上然后丢失了?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.