Answers:
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
ls /var/mail
; do formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done”的操作应循环每个文件并本地传递。
/ var / spool / mail / xxx UNIX邮箱文件是简单的文本文件,其中邮件按顺序保留。每封邮件均以“发件人”行(不是邮件的一部分)开头,并带有发件人和接收日期,然后您将收到邮件标题,然后是邮件正文。
基本上,您可以循环检测文件中的From行,提取每条消息,然后使用python smtp模块或cpan的perl Net :: SMTP模块将其发送。
如果目标是另一个本地邮箱,则可以将邮件(包括“发件人”行)附加到该邮箱。如果您甚至不在乎真正针对root的邮件,甚至可以将整个根邮箱附加到另一个邮箱。
我应该有一些执行此操作的脚本,如果需要的话,将发布示例。
问题可能是获得消息的真正目标,因为如果它们以根邮箱结尾,则很可能从一开始就以根为目标?