PROCMAIL ::如何在邮件发送到MBox后执行perl脚本

时间:2013-08-26 15:43:11

标签: perl email procmail

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

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

  2. 如果我使用C标志对邮件进行复制,我仍会得到相同的响应,但不会将其传送到邮箱。

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

    由于 罗布

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:-1)

所以我能够想出简单但却可能不是最好的答案。由于我可以控制电子邮件何时进入,因此我决定删除该进程的锁定并且工作正常。

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

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