我有一个脚本生成的电子邮件,每小时进来。 除了在某些条件下,我不需要看到它,所以我只是想过滤到自己的邮箱。 该消息来自cron,我想小心不要过滤掉其他cron消息,只有这个基于源和内容。
正文行(消息的第一行以它开头)我试图匹配的是:
/etc/cron.hourly/scriptrun:
这是我想出来的是不工作。 我不知道我错了哪里。
:0 HB * ^From:.*[email protected] * ^Subject: {Cron * \/etc\/cron.hourly\/scriptrun .Save/
任何想法将不胜感激。
目前还不清楚你想要单个左大括号匹配什么。 这是现在的方式,这是一个语法错误。 我会假设你只是希望它匹配字面意思。
:0 * ^From:.*root@ns1\.domain\.net * ^Subject: \{Cron * B ?? ^^/etc/cron\.hourly/scriptrun .Save/
你会注意到反斜杠直接匹配正则expression式元字符(但斜杠不是元字符,所以我们不反斜杠;实际上, \/在Procmail中有一个特殊的含义,并且不匹配字面斜杠!), B ?? 仅仅匹配身体的一个条件。 双锚点^^是一个Procmail结构,它在第一行的第一个字符之前匹配(也在最后一行的最后一个字符之后)。
我还会注意到,您在电子邮件客户端中看到的内容可能与Procmail处理的原始信息完全不同。 例如,在多部分MIME消息中,第一个正文部分的第一行将在前面是MIME前导码和MIME边界。 对于一个简单的Cron消息来说,这不太可能是一个问题,但是我只是为了以防万一。