19.4.2.5. レシピの例
Procmail は極めて柔軟性の高いプログラムですが、この柔軟性が原因で、新規ユーザーが Procmail のレシピを一から作成するのが難しい場合があります。
Procmail レシピの条件を構築するスキルを向上させる最適な方法は、正規表現をしっかり理解し、他の人が構築した多くの例を参照することから始まります。正規表現に関する詳細な説明は、本セクションでは扱いません。Procmail のレシピの構造と役立つ Procmail のサンプルレシピは、インターネット上の様々なところに掲載されています。正規表現の適切な使用と調整方法は、これらのレシピ例を参照してください。また、基本的な正規表現ルールの概要は、man ページの
grep(1)
を参照してください。
以下にあげる簡単な例は、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
に送信して永久に削除してしまう前に、ルールが目的どおりに機能していることを確認してください。レシピが間違えて目的以外のメッセージを対象にすると、それらのメッセージは消えてしまい、ルールのトラブルシューティングが困難になります。
より優れた解決策は、レシピのアクションを特別なメールボックスにポイントさせることです。これは、誤検出を探すために時間から時刻にチェックできます。メッセージが間違って適合されることがなく満足できる状態になったら、そのメールボックスは削除して、メッセージを
/dev/null
に送信するよう指示します。
以下のレシピでは、特定のメーリングリストから送信された電子メールを取得して、特定のフォルダに配置します。
:0: * ^(From|Cc|To).*tux-lug tuxlug
tux-lug@domain.com
メーリングリストから送信されたメッセージはすべて、MUA 用に自動的に tuxlug
メールボックスに置かれます。From
、Cc
、または To
行にメーリングリストのメールアドレスがある場合は、この例の条件がメッセージに適合する点に注意してください。
さらに詳しい強力なレシピについては、「その他のリソース」 の Procmail に関する多くのオンライン資料を参照してください。