1

我是 procmail 的新手,很难理解语法。

我想要做的是检查主题行以查看它是否以 3 个大写字符后跟一个冒号开头,如果是,则从末尾删除冒号并执行和操作,即:

主题:ABC:主题的其他部分

:0
* $ ^Subject:/^[A-Z]{3}:$/
| /usr/bin/zarafa-dagent -C -P 'Support\\$1' vmail

首先,我不确定我的正则表达式是否正确,其次,尽管进行了很多谷歌搜索,但我无法弄清楚如何将搜索保存到变量中以在其他地方使用,我尝试 $1 作为第一个返回的变量,但那不是似乎工作。

任何帮助将非常感激。

4

2 回答 2

2

您可以对 的值进行后处理$MATCH以修剪冒号。

:0 D
* ^Subject:[^   ]*\/[A-Z][A-Z][A-Z]:
{
    :0
    * MATCH ?? ^^\/[A-Z][A-Z][A-Z]
    | /usr/bin/zarafa-dagent -C -P "Support\\$MATCH" vmail
}

第一个条件将三个大写字符和冒号捕获到MATCH. 第二个将该值与三个大写字符匹配,并将该部分捕获到新值中MATCH

像往常一样,后面括号内的空格Subject:由空格和制表符组成。

于 2014-04-10T07:59:43.193 回答
-1

好的,解决了这个问题,procmail 有它自己的正则表达式版本:

:0 D
* ^Subject:.*\/([A-Z]+[A-Z]+[A-Z]):
| /usr/bin/zarafa-dagent -C -P "Support\\$MATCH" vmail
EXITCODE=$?

它不支持迭代器括号 [AZ]{3},因此您必须重复表达式。

此外,它不区分大小写,因此您需要添加“D”标志。

问题是我似乎无法从最后删除冒号 : 。

于 2014-04-08T13:50:14.720 回答