Procmail 过滤发件人和正文

Procmail 过滤发件人和正文

我有一封由脚本生成的电子邮件,每小时发送一次。除非在特定情况下,否则我不需要查看它,因此我只想将其过滤到自己的邮箱中。该消息来自 cron,我希望小心不要过滤掉其他 cron 消息,而只根据来源和内容过滤掉这一条。

我尝试匹配的正文行(消息的第一行以此行开头)是:

/etc/cron.hourly/scriptrun:

这是我想到的不起作用的方法。我不确定我哪里做错了。

:0 HB
* ^From:.*[email protected]
* ^Subject: {Cron
* \/etc\/cron.hourly\/scriptrun
.Save/

任何想法都将不胜感激。

答案1

不清楚您希望单个左括号匹配什么;就目前的情况而言,这是一个语法错误。我假设您只是希望它按字面意思匹配。

:0
* ^From:.*root@ns1\.domain\.net
* ^Subject: \{Cron
* B ?? ^^/etc/cron\.hourly/scriptrun
.Save/

你会注意到反斜杠与正则表达式元字符逐字匹配(但斜杠不是元字符,所以我们不反斜杠;实际上,\/在 Procmail 中有特殊含义,并且没有匹配文字斜杠!),以及B ??仅匹配正文中的一个条件。双锚^^是 Procmail 构造,它匹配第一行第一个字符之前(以及最后一行最后一个字符之后)。

我还要注意,您在电子邮件客户端中看到的内容可能与 Procmail 处理的原始消息有很大不同;例如,在多部分 MIME 消息中,第一个正文部分的第一行前面会有 MIME 前导和 MIME 边界。对于简单的 Cron 消息,这不太可能成为问题,但我还是提到这一点以防万一。

相关内容