我正在安装 Red Hat。我遇到的是:
perl 脚本使用模块查看邮箱以查找消息 #0 或已发送的邮件,但它还没有。
如果我使用 C 标志复制邮件,我仍然会得到相同的响应,即它没有将邮件传递到邮箱。
所以我需要知道的是一个 procmail 配方,它将它传递到邮箱然后触发脚本来处理传递的电子邮件。
谢谢罗伯
正如我在上面的评论中指出的那样,这似乎是一种不好的方法。但是,你应该能够使用类似的东西:
:0c:
* Whatever condition
/path/to/mbox
:0ahi
| /path/to/perl/script
或等效地
:0
* whatever condition
{
:0c:
/path/to/mbox
:0ahi
| /path/to/perl/script
}
第一个配方将导致消息传递到 mbox 文件,但由于c
使用了标志,处理将在该配方之后继续。以下配方上的
a
标志指定仅在使用并成功完成前面的配方时才使用它。
该h
配方上的标志指定只应将标头发送到 perl 脚本。这可能不会影响它,因为您说它是从 mbox 文件而不是从管道中获取消息的;但它确实减少了需要通过管道发送的数据量。
该i
标志指定如果 procmail 不能将所有内容发送到脚本,它不应该抱怨。由于脚本可能没有从其标准输入读取,因此管道缓冲区可能会填满,从而导致 procmail 收到写入错误;尽管仅发送消息的标头时这种情况不太可能发生。
如果您确实需要使用 Mail::Box 系列模块来处理消息,而不是可以从标准输入解析消息的模块,我建议您至少使用 Maildir 邮箱而不是 mbox。mbox 格式没有真正的规范,对于它的工作方式有很多不同的解释。差异往往是微妙的,因此在您收到一条消息,该消息恰好触发不同实现之间的不兼容(例如以 开头的行)之前,事情似乎工作正常From
。这甚至没有涉及锁定 mbox 文件的问题。
所以我能够想出简单但可能不是最好的答案。由于我可以控制电子邮件的发送时间,因此我决定解除对进程的锁定,并且它运行良好。
因此,如果没有第二个冒号和“c”选项,它现在运行脚本并可以看到邮箱中的电子邮件。
哇...多么痛苦...两天浪费在一个简单的解决方案上。