Debian环境下如何用mutt或mail重发Exim4备份的文件邮件?
用Exim4重发Maildir备份邮件的正确姿势
嘿,刚好我在Debian上用Exim4的时候也碰到过这个需求,给你几个能完美解决的方法:
直接用Exim原生命令(最推荐)
既然你本身就是用Exim4做MTA,那用它自带的命令来重发是最靠谱的,完全能识别完整的邮件头和MIME正文:exim -t < /path/to/your/email/file这里的
-t参数会让Exim自动从邮件头里提取To、Cc、Bcc这些收件人信息,完美还原原始邮件的投递逻辑,不会出现正文丢失或者头信息被当成正文的问题。如果需要强制把邮件发给某个特定收件人(覆盖原始邮件头里的地址),可以用:
exim -i target@example.com < /path/to/your/email/file-i参数是告诉Exim忽略收件人列表里的错误地址,确保邮件能正常发出。用sendmail命令(和Exim等效)
在Debian系统里,sendmail通常是Exim4的软链接,所以用这个命令效果和上面的一样:sendmail -t < /path/to/your/email/file原理完全相同,只是命令名称不同而已。
为啥之前的工具不好用?
mutt -H:这个命令其实是用来加载邮件草稿的,它对邮件文件的格式要求比较严格,如果你的备份邮件里某些头信息的格式和mutt的草稿格式不匹配,就会出现正文为空的情况。mail命令:它本质是一个轻量的邮件客户端,不是专门的MTA工具,它会把输入的内容全部当成正文,不会解析邮件头,所以才会把原始头信息当成正文发出去。
最后提醒一下:确保你的备份邮件文件符合标准的RFC邮件格式——邮件头和正文之间有一个单独的空行,Exim会自动处理剩下的部分。
内容的提问来源于stack exchange,提问作者artfulrobot
相关产品推荐
相关产品推荐

