尝试根据正则表达式匹配直接发送电子邮件。
我知道我可以这样做:
echo | mail -s test1 me-route2
用这个食谱:
* ^To:.*me-route2\@
:0:
/home/me/folder-route2/afile
我想做的是这样的:
* ^To:.*me-(route\d)\@
:0:
/home/me/folder-$MATCH/afile
但我得到:
procmail: Lock failure on "/home/me/folder-/afile.lock"
您的序言行和条件顺序错误。但此外,Procmail 不识别 Perlism
\d
。(参见例如这里的一些正则表达式历史和奥秘。)试试这个:或者,如果您真的想验证匹配的表达式是否紧跟 @ 符号,
从输入
To: [email protected]
中,第一个条件捕获route2@
并且第二个条件匹配通过route2
以删除尾随@
fromMATCH
。我的怀疑是不需要锁定文件,因此应该删除第二个冒号,但这取决于是什么
afile
。如果它是常规的 Berkely mbox 文件,则绝对应该使用锁定。如果它是 Maildir 文件夹,则不应。您可能还想考虑替换
^To:.*me
为^TO_me
-- 它将匹配 onCc:
和其他相关标题以及文字To:
标题,并避免匹配 onreallynotme
。Procmail 不使用像普通正则表达式那样的捕获组,至少对于 MATCH。从手册页:
所以以下应该有效(未经测试):
MATCH
然后将包含在 之后与正则表达式匹配的任何内容\/
,因此“route\d”。[email protected]
可悲的是,这可能会在地址为MATCH
“route2”的情况下做一些意想不到的事情。但这对你来说可能是可以接受的。