procmail レシピにはオルタネータ「or」演算子がありますか?

procmail レシピにはオルタネータ「or」演算子がありますか?

次の procmail レシピがあるとします。

:0:
* ^Subject:.*viagra.*
* ^From:.*viagra.*
/dev/null

Procmail は、viagra から送信され、件名に viagra が含まれるメールのみを削除します。どちらかの一致が当てはまる場合にフィルターを適用することは可能ですか?

解決策では正規表現(regex1|regex2)操作を使用しないことが望ましいですが、それが唯一の解決策である場合は、その旨を明記してください。

答え1

ほぼ完成です。正規表現をしっかりと理解することは、procmail レシピを成功させる上で大いに役立ちます。procmail は非常に柔軟ですが、その柔軟性は主に正規表現に依存しています。

:0: 
* ^(From|Cc|To|Subject).*viagara.* 
/dev/null

あるいは、パイプと改行エスケープを使用して、次の行にルールを続行することもできます (読みやすくするため)。あなたの例では、一致する必要がある新しい条件を作成していました。

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null

答え2

2 つのレシピを使用します。それぞれが /dev/null に送られ、1 つは Subject に一致し、もう 1 つは From に一致します。最初に一致したものが優先されます。これは基本的に OR 演算子と同じです。reg1|reg2 アプローチでも機能しますが、2 つのレシピとして読み取る方が明確だと思います。

関連情報