27.5.2.5. レシピの例
Procmail は極めて柔軟性の高いプログラムですが、この柔軟性が原因で、新規ユーザーが Procmail のレシピを一から作成するのが難しい場合があります。
Procmail レシピの条件を構築するスキルを向上させる最適な方法は、正規表現をしっかり理解し、他の人が構築した多くの例を参照することから始まります。正規表現に関する詳細な説明は、本セクションでは扱いません。Procmail レシピの構造と役立つ Procmail のサンプルレシピは、インターネット上のさまざまな場所(例: http://www.iki.fi/era/procmail/links.html)にあります。正規表現の適切な使用と調整方法は、これらのレシピ例を参照してください。また、基本的な正規表現ルールの概要は
grep
の man ページにあります。
以下にあげる簡単な例は、Procmail のレシピの基本構造を記載しており、構造をさらに複雑にするための基盤を示しています。
以下の例に示すように、基本的なレシピには条件さえも含まれていません。
:0: new-mail.spool
最初の行は、ローカルロックファイルを作成することを指定しますが、名前を指定しないため、Procmail は宛先ファイル名を使用して、LOCKEXT 環境変数に指定された値を追加します。条件が指定されていないため、すべてのメッセージがこのレシピと一致し、MAILDIR 環境変数で指定されたディレクトリー内にある
new-mail.spool
という単一の spool ファイルに配置されます。その後、MUA はこのファイルでメッセージを表示できます。
このような基本レシピは、
rc
ファイルの末尾に置かれ、メッセージをデフォルトの場所に送ります。
以下の例では、特定の電子メールアドレスからのメッセージを照合して、削除します。
:0 * ^From: spammer@domain.com /dev/null
この例では、
spammer@domain.com
から送信されたメッセージはすべて /dev/null
デバイスに送信され、削除されます。
注意
永続的な削除のために
/dev/null
にメッセージを送信する前に、ルールが意図したとおりに機能していることを確認してください。レシピが間違えて目的以外のメッセージを対象にすると、それらのメッセージは消えてしまい、ルールのトラブルシューティングが困難になります。
より良い解決策は、レシピのアクションを特別なメールボックスにポイントすることです。これは、誤検出を探すために時折確認できます。メッセージを誤って一致していないと満足したら、メールボックスを削除し、メッセージを
/dev/null
に送信するようアクションに指示します。
以下のレシピでは、特定のメーリングリストから送信された電子メールを取得して、特定のフォルダーに配置します。
:0: * ^(From|CC|To).*tux-lug tuxlug
tux-lug@domain.com
メーリングリストから送信されたメッセージはすべて、MUA の tuxlug
メールボックスに自動的に配置されます。From
、CC
、または To
行にメーリングリストのメールアドレスがある場合に、この例の条件がメッセージと一致することに注意してください。
さらに詳しい強力なレシピについては、「関連情報」 の Procmail に関する多くのオンライン資料を参照してください。