我遇到过一种情况,我们忘记在 main.cf 中配置 smtpd_milters,但很多电子邮件已经进入并存储在 /var/spool/postfix/deferred 队列中。现在我已经修复了 postfix 配置中的 smtpd_milters,我希望那些已经存储在延迟队列中的电子邮件能够由 milter 处理。有没有什么办法可以实现?我尝试将这些文件移动到接收、活动等,但没有帮助。任何帮助都非常感谢!
答案1
必须通过 smtpd 重新提交邮件。
为此,首先获取要重新处理的邮件的队列 ID。
mailq
将原始消息保留
postsuper -h [QUEUEID]
提取电子邮件消息
postcat -qbh [QUEUEID] > /tmp/email.eml
重新提交邮件
cat /tmp/email.eml | sendmail -t
检查您的队列和日志输出以确保邮件正确发送,之后您可以删除原始消息。
postsuper -d [QUEUEID]
答案2
由于您正在运行postfix
,您可以尝试以下命令:
postqueue -f
这将导致 postfix 刷新队列并尝试传递所有排队的消息。或者,您可以使用:
postqueue -i <queue_id>
安排立即发送由 标识的消息<queue_id>
。这样,您可以在实际刷新整个队列之前尝试您的邮件过滤设置。您可以postqueue
在postqueue 文档页面。