将简单的emaildump转换为maildir或mbox格式

时间:2012-12-19 12:29:23

标签: linux text file-conversion mbox maildir

在OTRS中,我有一个包含电子邮件的数据库。 我在一个名为“article_plain”的表格中有原始电子邮件(eml格式)。

我可以使用如下语句轻松地转储:

SELECT ap.body FROM article_plain ap 
INNER JOIN article a ON (a.id = ap.article_id) 
INNER JOIN ticket t ON (a.ticket_id = t.id) 
INNER JOIN queue q ON (t.queue_id = q.id) 
WHERE q.name LIKE '%something%' 
LIMIT 10;

使用命令行:

mysql -u root otrs -pmypassword --silent --skip-column-names --raw -e 
"select ap.body from article_plain ap inner join article a on (a.id = ap.article_id) inner join ticket t on (a.ticket_id = t.id) inner join queue q on (t.queue_id = q.id) where q.name like '%something%' limit 10;" 
>> ./emlconcat_something

我现在已经导出到带有连接的eml文件的单个文件中。 这看起来像:

  

X-Mimeole:由Microsoft Exchange V6.5制作收到:来自   xxxxxxxx.org.za([10.0.50.12])by xxxxxx.xxxxxx.org.za with   Microsoft SMTPSVC(6.0.3790.4675);星期二,2010年9月28日11:20:22 +0200   MIME-Version:1.0 Content-Type:multipart / related;   类型=“多部分/替代”;   boundary =“----_ = _ NextPart_001_01CB5EEE.613E57EA”收到:来自   xxxxxx.xxxxxxx.co.za([41.208.19.106])xxxxxxxx.org.za   SMTP; 2010年9月28日09:27:03 +0000收到:来自mail.dtss.co.za   (mail.xxxxx.co.za [196.4.89.13])xxxxx.xxxxxxx.co.za;星期二,28岁   2010年9月11:27:00 +0200收到:来自xxxxx-xxxxx.xxxxxx.org.za   ([172.16.252.23])mail.dtss.co.za与Microsoft   SMTPSVC(6.0.3790.4675); 2010年9月28日星期二11:30:44 +0200内容 - 班级:   urn:content-classes:message主题:RE:某些主题日期:   星期二,2010年9月28日11:24:31 +0200消息ID:   < 7918418270AAB64A84F55F47027EC3135FC0F0@xxx.xxx.xxxx.org.za>   X-MS-Has-Attach:是X-MS-Tnef-Correlator:Thread-Topic:Global   无论线程索引:ActeL4wmcWmZ5plSTzSDPA18WuxM7AAvyzQA   参考文献:   < 01BD0A17B3803A48A04E613E35E0513D4E6C54@xxxxxxxxxx.local>   来自:“xxxx xxxxxxxx(豪登北,哈特菲尔德)”    致:“Nellie”,   “xxxxxxx xxxxxx”CC:“xxxxx xxxxx”   ,“xxxxx xxxxxx”   ,“xxxxx xxxxx”   ,“xxxx xxxxx(Centurion)”   ,“xxxx xxxxxx(豪登北,哈特菲尔德)”   

     

这是MIME格式的多部分邮件。

     

------_ = _ NextPart_001_01CB5EEE.613E57EA内容类型:multipart / alternative;     边界= “----_ = _ NextPart_002_01CB5EEE.613E57EA”

     

------_ = _ NextPart_002_01CB5EEE.613E57EA Content-Type:text / plain; charset =“Windows-1252”Content-Transfer-Encoding:quoted-printable

     

亲爱的人

所有其他电子邮件只是连接到第一个(根据最初的select声明)。

问题:
如何将其转换为mbox或maildir格式?
即我应该在linux服务器上使用什么脚本呢?

2 个答案:

答案 0 :(得分:0)

一种解决方案是使用csplit

示例:

csplit -z -k mail_export_file "/Mimeole/" {*}

理想情况下,“Mimeole”部分应该被扩展,但我在正则表达式上很糟糕,因此我将其作为练习留给读者。

答案 1 :(得分:0)

formail附带的procmail实用程序具有一些启发式功能,可将文件拆分为单独的电子邮件。默认值假定为Berkeley mbox输入,但是存在用于识别ad-hoc和/或损坏格式的变体。

由于您自己控制转储的生成,我建议您在每个转储的消息instad之前简单地放置一个简单的唯一分隔符。