procmail 中的正则表达式

procmail 中的正则表达式

我对在带有 catchall 的域上随机生成虚假地址的反向散射存在问题。

fake-alias 使用了一个方案,使用带有正则表达式的 egrep

^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*

我的邮件目录列出了所有不需要的反向散射,幸运的是,没有使用此方案的地址实际上被使用。

但是,procmail 确信它不匹配。

:0hD:
* ^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*
!spam

procmail: No match on "^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9]{2,5}@example.org.*"

我无法让 procmail 像 egrep(和其他使用正则表达式的工具)那样解释正则表达式。

我究竟做错了什么?

我发现默认情况下 procmail 会忽略大小写,这就是我在配方中添加“D”的原因。但我在 procmail-recipes 中找不到使用 [AZ] 的任何示例。我是不是在尝试一些不可能的事情?

答案1

Procmail 的正则表达式方言不支持{m,n}重复运算符。您只需用普通手写方式拼写出模式(如果模式太大,可以使用变量)。

:0D
* ^To:.*.[A-Z].[a-z].*[A-Z].[a-z].*[0-9][0-9]([0-9]([0-9][0-9]?)?)?@example\.org
!spam

顺便说一句,您不应该在转发配方上使用锁定,尾随通配符是无用的,并且标志h是默认的;所以我把这些东西拿出来了。

相关内容