27.5.2. Procmail レシピ
多くの場合、新規ユーザーが Procmail の使用法を学習するにあたって最も難しいと感じるのは、レシピの構築です。一部のエクステントでは、レシピは 正規表現 を使用してメッセージ照合を行うため、一致する文字列の条件を指定するために使用される特定の形式になります。ただ、正規表現の構築はそれほど難しくなく、読んで理解することも簡単です。その上、Procmail のレシピを書く方法は、正規表現にかかわらず一貫性があるため、例を使って学習すると簡単です。Procmail のレシピの例は、「レシピの例」 を参照してください。
Procmail レシピは以下の形式を使用します:
:0<flags>: <lockfile-name> * <special-condition-character> <condition-1> * <special-condition-character> <condition-2> * <special-condition-character> <condition-N> <special-action-character> <action-to-perform>
Procmail レシピの最初の 2 文字は、コロンとゼロです。ゼロの後に様々なフラグを追加して、Procmail がレシピを処理する方法を制御します。< flags> セクションの後ろにコロンを 付けると、このメッセージに対してロックファイルが作成されることを指定します。ロックファイルが作成されると、< lockfile-name> を置き換えて名前を指定できます 。
レシピには、メッセージと適合させる様々な条件を追加できます。条件がない場合は、すべてのメッセージがレシピと適合することになります。正規表現は、メッセージ照合を容易にするために、一部の条件で使用されます。複数の条件を使用する場合は、アクションが実行されるためにはすべてが適合しなければなりません。条件は、レシピの 1 行目に設定されたフラグに基づいてチェックされます。* 文字の後に置かれたオプションの特殊文字は、さらに条件を制御できます。
< ;action-to-perform > は、メッセージが条件の 1 つと一致する場合に実行するアクションを指定します。1 つのレシピに指定できるアクションは 1 つのみとなります。多くの場合、メールボックスの名前がここで使用され、適合するメッセージをファイルに誘導し、電子メールを効果的に並べ替えます。特別なアクションの文字は、アクションが指定される前に使用することもできます。詳細は、「特別な条件とアクション」 を参照してください。
27.5.2.1. 配信と非配信レシピ
レシピが特定のメッセージと一致する場合に使用されるアクションで、配信レシピと 非 配信 レシピと見なされるかどうかが判断されます。配信レシピには、ファイルへのメッセージの書き込み、別のプログラムへのメッセージ送信、別の電子メールアドレスへのメッセージ転送などのアクションが含まれています。非配信レシピは、ネストされたブロック などの他のアクションをカバーします。ネストされたブロックは、中括弧 { } に含まれるアクションのセットで、レシピの条件に一致するメッセージで実行されます。ネストされたブロックは、互いにネストさせることができるため、メッセージに対するアクションを特定して実行するにあたっての制御力が強化されます。
メッセージが配信レシピと適合すると、Procmail は指定されたアクションを実行し、その他のレシピとメッセージとの比較を停止します。非配信レシピと適合するメッセージの場合は、他のレシピに対する照合は継続されます。