可以手动从邮件队列中删除消息。
B693A1601A9 154654 Thu Mar 1 16:20:22 [email protected]
(connect to gmail.cm[74.125.224.168]:25: Connection timed out)
[email protected]
将被 删除postsuper -d B693A1601A9
。
是否可以手动从邮件队列中退回消息?
答案1
然而,您可能的意思是强制退回收件人,这是真正的问题,而不是消息。
之前问过2011 年其他地方。在设置下面的 Wietse 配置后,您可以postmap
、、postfix reload
和刷新队列,强制该收件人/消息配对撞入新的传输规则。
Bob Proulx:我一直在试图推断是否有可能强制在邮件队列中等待临时错误(域名解析失败)的消息立即退回,而不是等待超时。
Wietse 说:
强制退回邮件是错误的。邮件可以有多个收件人。强制退回收件人更为正确。
要将目的地或收件人标记为无法送达:
/etc/postfix/main.cf: transport_maps = hash:/etc/postfix/transport
/etc/postfix/transport: typodomain.example error:5.1.2 Bad destination system address
将队列文件中的某个收件人标记为无法送达需要大量当前尚不存在的代码:1)一种方法,让 postsuper 将收件人列表中间的某个收件人标记为“已过期”;2)一种方法,从延期日志文件中提取记录,说明为什么该收件人尚未送达以用于未送达通知;3)一种方法,将延期日志文件记录标记为“已删除”,以便不再报告该问题。
维特泽
答案2
更新其他登录此处的人。现在(自 Postfix 3.5 起)可以使用以下命令强制队列中的邮件过期:postsuper -e B693A1601A9
我们采用以下步骤:
if [[ $QUEUE_ID == *"!" ]] ; then
# remove mail from hold queue
postsuper -H "$QUEUE_ID"
QUEUE_ID="${QUEUE_ID%\!}"
fi
if [[ $QUEUE_ID == *"#" ]] ; then
# mail is already expired
QUEUE_ID="${QUEUE_ID%#}"
else
postsuper -e "$QUEUE_ID"
fi
# do not wait for next queue check but send the bounce immediately
postqueue -i "$QUEUE_ID"
答案3
不可以。这是不可能的,因为只需要进行最低限度的手动队列管理。有配置参数可以自动执行此操作:http://www.postfix.org/QSHAPE_README.html#deferred_queue和http://www.postfix.org/postconf.5.html#bounce_queue_lifetime(但请记住减少 bounce_queue_lifetime 的致命缺点)
最好的办法是通知发送者有关延迟的情况,然后等到它自行反弹:http://www.postfix.org/postconf.5.html#delay_warning_time