在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服务器上使用什么脚本呢?
答案 0 :(得分:0)
一种解决方案是使用csplit
示例:
csplit -z -k mail_export_file "/Mimeole/" {*}
理想情况下,“Mimeole”部分应该被扩展,但我在正则表达式上很糟糕,因此我将其作为练习留给读者。
答案 1 :(得分:0)
formail
附带的procmail
实用程序具有一些启发式功能,可将文件拆分为单独的电子邮件。默认值假定为Berkeley mbox输入,但是存在用于识别ad-hoc和/或损坏格式的变体。
由于您自己控制转储的生成,我建议您在每个转储的消息instad之前简单地放置一个简单的唯一分隔符。