我正在使用以下(经典)procmail 配方来捕获邮件列表电子邮件并按列表名称将它们归档到文件夹中:
:0
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
{
LISTID=$MATCH
:0
* LISTID ?? ^\/[^@\.]*
Lists/$MATCH/
}
问题是:如果列表名称从全小写变为 Firstlettercap,我最终会得到两个文件夹,一个用于“listname”,另一个用于“Listname”。
我想在最终交付规则中使用 $MATCH 变量之前将其小写,但我无法找到对 lc() 函数的引用或可用于执行此操作的正则表达式/替换。
下面的一条评论建议了这一点:
:0
* ^((List-Id|X-(Mailing-)?List):(.*[<]\/[^>]*))
{
LISTID=`echo "$MATCH" | tr A-Z a-z`
:0
* LISTID ?? ^\/[^@\.]*
.Lists.$MATCH/
}
这似乎也不符合我的要求。不过,现在看,很明显,音译只发生在第一次出现 $MATCH 时,我的猜测是它根本没有改变它以便在文件夹分配行中使用。
更新#1:如果我尝试在文件夹分配行中使用 LISTID,我会得到类似“Bricolage.project.29601.lighthouseapp”的东西,而不仅仅是“Bricolage”,或者——我所追求的——只是“bricolage”。