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

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

由于一些错误配置,我在 /var/mail/root 和 /var/mail/www-data 中有很多电子邮件

我怎样才能“循环”这些文件并在下次发送每封邮件?

答案1

邮件,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

答案2

mutt -f /var/mail/www-data

然后在 mutt 内...

T.*
;b

T 将其置于标记模式,.* 标记所有邮件。分号将下一个命令应用于所有标记的邮件,最后 b 将邮件“反弹”到它将提示的地址。

根据记忆,我认为

D.*

或者

T.*
;d

然后将清空邮箱。

答案3

/var/spool/mail/xxx unix 邮箱文件是简单的文本文件,其中按顺序保存邮件消息。每封邮件消息都以“发件人”行(不属于邮件的一部分)开头,其中包含发件人和接收日期,然后是邮件标题,然后是邮件正文。

基本上,您可以循环文件检测此类发件人行并提取每条消息,然后使用 cpan 中的 python smtp 模块或 perl Net::SMTP 模块等工具发送它们。

如果目标是另一个本地邮箱,您只需将邮件(包括发件人行)附加到其中即可。如果您不介意获取真正针对根邮箱的邮件,甚至可以将整个根邮箱附加到另一个邮箱。

我应该有一些可以做到这一点的脚本,如果你需要的话我会发布一些例子。

问题可能在于获取消息的真正目标,因为如果它们以根邮箱结束,那么它们可能从一开始就以根邮箱为目标?

相关内容