我怎样才能再次发送/ var / mail / root?

通过一些configuration错误,我在/ var / mail / root和/ var / mail / www-data中有很多邮件

我如何“循环”这些文件,并再次发送每个邮件?

提前致谢!

formail是procmail的一部分(并且可能已经在您的系统中可用)可以接收邮箱,将其拆分为邮件,然后在每个邮箱上运行一个命令。 从手册页:

-s The input will be split up into separate mail messages, and piped into a program one by one (a new program is started for every part). -s has to be the last option specified, the first argument following it is expected to be the name of a program, any other arguments will be passed along to it. If you omit the program, then formail will simply concatenate the split mails on stdout again. See FILENO. 

所以你可以这样做,我想你想要的:

  formail -s /usr/sbin/sendmail -oi -t < /var/mail/root 
 mutt -f /var/mail/www-data 

然后在mutt …

 T.* ;b 

T将其放入标记模式,并标记所有消息。 分号将下一个命令应用到所有标记的消息,最后b将消息“跳动”到将要提示的地址。

从记忆中,我想也是

 D.* 

要么

 T.* ;d 

然后将清空邮箱。

/ var / spool / mail / xxx unix邮箱文件是邮件按顺序保存的简单文本文件。 每封邮件都以发件人和收件date的“发件人”行开始(不是邮件的一部分),然后邮件标题,邮件正文。

基本上,你可以循环文件检测这样的行,并提取每个消息,然后使用工具,如python smtp模块或perl NET :: SMTP模块从cpan发送。

如果目标是另一个本地邮箱,则可以将邮件(包括“发件人”行)附加到该邮箱。 你甚至可以追加整个根邮箱到另一个邮箱,如果你不在乎也得到真正的目标是根的消息。

我应该有一些脚本来做到这一点,如果你愿意,可以发布例子。

问题可能是为了得到消息的真正目标,因为如果他们在根邮箱中结束,他们可能是从根开始的根?