0

我正在安装 Red Hat。我遇到的是:

  1. perl 脚本使用模块查看邮箱以查找消息 #0 或已发送的邮件,但它还没有。

  2. 如果我使用 C 标志复制邮件,我仍然会得到相同的响应,即它没有将邮件传递到邮箱。

所以我需要知道的是一个 procmail 配方,它将它传递到邮箱然后触发脚本来处理传递的电子邮件。

谢谢罗伯

4

2 回答 2

4

正如我在上面的评论中指出的那样,这似乎是一种不好的方法。但是,你应该能够使用类似的东西:

: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 文件的问题。

于 2013-08-26T17:01:28.343 回答
-1

所以我能够想出简单但可能不是最好的答案。由于我可以控制电子邮件的发送时间,因此我决定解除对进程的锁定,并且它运行良好。

因此,如果没有第二个冒号和“c”选项,它现在运行脚本并可以看到邮箱中的电子邮件。

哇...多么痛苦...两天浪费在一个简单的解决方案上。

于 2013-08-26T18:06:44.197 回答