我有一个备用邮件服务器,以防主服务器出现故障。
如果发生故障,邮件会到达备用服务器上,并留在备用服务器上,直到主服务器返回为止。

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

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

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

评论

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

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

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

#1 楼

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

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

#2 楼

postqueue -f应该可以工作。如果没有,那是有充分理由的。检查日志。 pfqueue也是检查邮件后台处理的非常有用的命令。

#3 楼

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

评论


这与运行postqueue -f不一样吗?

– Dalibor Filus
2014年5月30日12:22

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

– the-wabbit
2014年5月30日18:26

我没有进行检查,但是-f是刷新的,而-q是队列。一个尝试发送然后另一个仅清除队列。我猜最好尝试交付。

– m3nda
2015年4月9日下午5:31

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

– Johannes H.
15年4月24日在18:11

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

– m3nda
15年4月24日在20:44

#4 楼

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

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

#5 楼

我通常使用此命令
postsuper -r ALL && postqueue -f

参数:
-r ALL重新排队所有消息
-f是刷新队列:尝试传递所有排队的邮件。