CentOS 5.x | SendMail
嗨,大家好,
有没有一种简单的方法可以从 /var/spool/mail/ 中检索单个消息?我有一个关于一个非常简单的脚本的想法,并且想检查每条消息是否有某些内容。
场景如下:
1) 新邮件到达收件箱。2) 脚本检查特定字符串。3) 如果找到字符串,脚本将检索各种标题信息和电子邮件信息以解决该问题。
我意识到使用邮件过滤器可能是可行的方法,但我希望找到一种方法来使用 shell 脚本来实现这一点,因为我想练习一下。问题是我似乎找不到一种方法来解析或以其他方式隔离单个消息。当我检查 /var/spool/mail/ 时,我看到一个包含多条消息的大文件,并且消息之间没有唯一的分隔符。
答案1
如果你忽略简单的 shell 脚本,几乎每种编程语言都有一个库来解析框格式化的邮箱。
- http://docs.python.org/library/mailbox.html
- http://search.cpan.org/~dcoppit/Mail-Mbox-MessageParser-1.5002/lib/Mail/Mbox/MessageParser/Perl.pm
- http://www.phpclasses.org/browse/file/3127.html
当然,如果你四处寻找,你还可以找到很多 POP3 和 IMAP 客户端库。
答案2
传统的方法是,在收到邮件时使用 MDA(如 procmail)执行此类操作。如果您已经有邮箱,procmail 附带formail
(1),它允许您对邮箱中的每封邮件运行程序,并具有过滤和重写邮件头的功能。