在 procmail 中,如何使用两个 MATCH 变量操作主题行?

在 procmail 中,如何使用两个 MATCH 变量操作主题行?

我成功重写了我的主题行,在其前面添加了一个 [LIST]:

:0fhw
* ^TO_[^<>@ ]+@example\.com\>
* ^Subject:\/.+
| /usr/local/bin/formail -I"Subject: [LIST]$MATCH"

这会成功并变成:

Subject: here is the subject line

进入

Subject: [LIST] here is the subject line

Bute我还想将用户部分插入[email protected]主题行,如下所示:

Subject: [LIST] [email protected] here is the subject line

$MATCH...当我只得到一个变量时,我不明白如何做到这一点!

如何将两个不同的变量插入到formail重写主题行的单行中?

答案1

从概念上讲,答案很简单:复制$MATCH到另一个变量。实现仍然会有点蹩脚,因为实际上MATCH每个食谱只能得到一个。解决方法是使用嵌套配方。

:0
* ^Subject:\/.+
{
    subj=$MATCH
    :0
    * ^TO_\/[^<>@ ]+@example\.com\>
    {
        user=$MATCH
        :0fhw
        * user ?? ()\/.+@example\.com
        | formail -I"Subject: [LIST] $MATCH $subj"
    }
}

\>最里面的方法是从捕获的变量末尾修剪掉匹配项user;如果将其包含在主题:行中是可以接受的,那么这显然可以简化。

可能要小心包含/usr/local/bin在您的中,PATH这样您就不必将完整路径硬编码到formail.对它进行硬编码也使得无法出于调试目的而覆盖它。

相关内容