mime 将电子邮件提取回 mbox 格式

mime extracted emails back to mbox format

我有一个特殊的 mbox 文件,mbox 中的每封邮件都有一个或多个附加邮件。这些是通过作为附件转发创建的。我有一个使用 MIME::Tools and MIME::Parser 来解析该 mbox 文件的 perl 脚本。它可以将这些文件通过管道传输到另一个程序(spamassassin),或者将它们保存为单独的文本文件,这就是我正在做的。我相信这些单独的文件是 RFC822 格式(不是肯定的)。每个文本文件都不以 "From: ..." 开头,所以我不能简单地将它们重新组合在一起。

我需要一种方法将这些提取的文件重新组合成 mbox (mbxcl2) 格式。有没有我可以用来重新组合这些提取的文件的工具或脚本?

我尝试让我的脚本在解析时将它们输出到一个文件中,带有 From me\@myserver.com Fri Sep 1 15:18:53 2017\n。这足以在服务器上查看 mailx,但 Dovecot 抱怨:dovecot: imap(me): Error: Syncing INBOX failed: Mailbox isn't a valid mbox file

所以我显然需要做的不仅仅是添加 "From " 分隔符。

最初我写的是 \n\nFrom me...\n" 以确保在每个 From... 11=]

我重写了它,以便原始解析脚本将邮件附件分解出来,我在下面添加了 2 行(在编写单独邮件的行之前和之后)。所以现在它不是以空行开始的。

print OUT "From me\@myserver.com  Fri Sep  1 15:18:53 2017\n";
$ent->bodyhandle->print(\*OUT);
print OUT "\n\n";

OUT 是生成的 mbx 文件。由于原始邮件具有 content-length header,至少 Dovecot 和 Outlook 对最终格式感到满意。所以我觉得我现在很好了。