【问题标题】:mime extracted emails back to mbox formatmime 将电子邮件提取回 mbox 格式
【发布时间】:2018-02-11 00:13:43
【问题描述】:

我有一个特殊的 mbox 文件,其中 mbox 中的每条消息都有一个或多个附加消息。这些是通过作为附件转发而创建的。我有一个 perl 脚本,它使用 MIME::ToolsMIME::Parser 来解析那个 mbox 文件。它可以将这些文件通过管道传输到另一个程序(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”分隔符。

【问题讨论】:

  • 快速搜索显示wiki2.dovecot.org/MailboxFormat/mbox - 它提到通过 Content-Length 标头分隔消息(请参阅“Escapting From”)。你调查过吗?
  • 是的,这是原始 Q 中提到的 mbxcl2 的一部分。正在寻找一个已经可用的工具将它们重新组合在一起。

标签: perl mime mime-message mbox


【解决方案1】:

原来我写的是\n\nFrom me...\n" 为了确保每个From...前面都有所需的空白行...我认为最初的空白行是Dovecot不满意的地方。

我重写了它,因为原始解析脚本破坏了邮件附件,我在下面添加了 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 文件。由于原始邮件具有内容长度标头,因此至少 Dovecot 和 Outlook 对生成的格式感到满意。所以我觉得我现在很好。

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 2018-10-27
    • 2012-05-18
    • 2020-11-23
    • 2022-01-02
    • 2011-02-13
    • 2020-04-20
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多