如果发生故障,邮件会到达备用服务器上,并留在备用服务器上,直到主服务器返回为止。
如果我等了一段时间,一旦主服务器恢复运行,交付将自动完成,但是时间可能会很长。那么如何强制重试所有邮件?
例如:
postqueue -p:给我邮件列表
然后我尝试了postqueue- f(来自手册页:刷新队列:尝试传递所有排队的邮件。)。它肯定刷新了队列,但邮件未送达...
#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是刷新队列:尝试传递所有排队的邮件。
评论
似乎-f是刷新并且-q是队列(发送队列)没有后队列-q。有sendmail -q支持sendmail语法,因此postfix可以完全替代sendmail,但这是一个同义词。不同的字母是jsut,因为后缀选择的字母与sendmail选择的字母不同。
再次抱歉,请在同一天发表评论:)所以都错了。