我有一堆由于错误而被 spamassasin 丢弃的消息。(mbox 格式,即所有信封头都以“来自 xxx...”开头)
我怎样才能让 exim 传送它们(到本地假脱机文件)?
谢谢
(Debian Linux 上的 exim 4.69)
答案1
是 SpamAssassin 的配置有错误,还是消息本身有缺陷?
您可以将文件拆分成单独的邮件,然后通过管道将它们重新提交以进行正常传送sendmail -t
(在将 Exim 设置为主要 MTA 的系统上,Exim 的别名)。但是,如果邮件存在问题,那么这种方法就无济于事了。此外,如果邮件最初是发送到邮件列表或类似的东西,那么这种方法会将它们重新发送到网络,这是不可取的。
另一个选择是使用 Python 的mailbox
模块读取 mbox 文件,然后手动将消息放入适当的线轴中;它支持大多数常见格式。如果有足够的细节,我可以在这里编辑一些不错的示例代码。
(Python 也可以将消息分离出来以便提交,不过我确信通过搜索可以找到几十个相当强大的脚本来完成这类任务。)
答案2
我最终这样做了:
for f in *; do if exim4 -bm -t -i -oep <$f; then mv $f ../sent/; else mv $f ../errors/; fi; sleep 2; done
到目前为止,它似乎运行良好……大约有一个月或更多的消息需要处理 :)。(-bm 表示本地传送,-t 表示从消息头中获取收件人,-i 表示不要停止在“。”,-oep 表示将错误打印到 stderr 并退出并显示错误代码)