procmailで2つのMATCH変数を使用してタイトル行を操作する方法は?

procmailで2つの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

[email protected]しかし、次のようにタイトル行にユーザー部分を挿入したいと思います。

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

$MATCH...変数が1つしかありませんが、どうすればいいかわかりません!

formailタイトル行を書き換える1行に2つの異なる変数を挿入するにはどうすればよいですか?

答え1

概念的には答えは簡単です。$MATCH別の変数にコピーすることです。実際にはMATCHレシピごとに1つしか取得できないため、実装はまだ少し不足しています。解決策は入れ子になったレシピを使用することです。

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

\>最も内側のアプローチは、キャ​​プチャされた変数の末尾から一致を切り取ることです。userこれは、タイトルに含めると確実に単純化できます。

へのフルパスをハードコードする必要がないように/usr/local/bin注意して含めることができます。PATHformail

関連情報