16.4. メール配信エージェント(Mail Delivery Agents)(MDA)

Red Hat Enterprise Linux には Procmail と mail の 2 つの主要な MDA が含まれています。どちらのアプリケーションも LDA とみなされ、電子メールを MTA のスプールファイルからユーザーのメールボックスに移動します。ただし、Procmail の方が堅牢なフィルタリングシステムを提供します。
本項では、Procmail についてのみ詳しく説明します。mail コマンドの詳細は、man ページ (man mail) を参照してください。
電子メールがローカルホストのメールスプールファイルに配置されると、Procmail が配信とフィルタリングを行います。Procmail は強力な上、システムリソースの使用が低いため、幅広く利用されています。Procmail は電子メールクライアントアプリケーションによって読み取る電子メールを配信するという重要な役割を果たすことができます。
Procmail は、様々な方法で呼び出されることができます。MTA が電子メールをメールスプールファイルの中に配置すると常にProcmail が起動します。次に、Procmail は電子メールを MUA のためにフィルタリング、ファイル保存して、終了します。別の方法としては、メッセージを受信すると常に Procmail を実行するように MUA を設定し、メッセージが正しいメールボックスに移動するようにできます。デフォルトでは、/etc/procmailrc または ~/.procmailrc ファイル (別名 rc ファイル) がユーザーのホームディレクトリに存在していると、MTA が新規メッセージを受信するといつでも Procmail を呼び出すようになっています。
デフォルトでは、/etc/ ディレクトリにはシステム全体の rc ファイルは存在せず、ユーザーのホームディレクトリに .procmailrc ファイルは存在しません。このため、Procmail を使用するには、各ユーザーが特定の環境変数とルールを用いて .procmailrc ファイルを構築する必要があります。
Procmail が電子メールメッセージに対応するかどうかは、そのメッセージが rc ファイルの特定の条件または レシピ と適合するかどうかによって決まります。あるメッセージが任意のレシピと適合する場合は、電子メールは特定のファイルに配置、削除、それ以外は処理されます。
Procmail が起動すると、電子メールメッセージを読み込み、ヘッダー情報から本文を切り離します。次に、Procmail は /etc/procmailrcs ディレクトリ内の /etc/procmailrc ファイルと rc ファイルで、デフォルトのシステム全体の Pcocmail 環境用変数とレシピを探します。その後 Procmail は、ユーザーのホームディレクトリ内で .procmailrc ファイルを探します。多くのユーザーは、Procmail 用に追加の rc ファイルも作成します。これは、ホームディレクトリの .procmailrc ファイル内で参照されます。

16.4.1. Procmail の設定

Procmail の設定ファイルには、重要な環境変数が含まれています。これらの変数は、並べ替えするメッセージ、及びどのレシピとも適合しないメッセージの処理を指定します。
これらの環境変数は通常 ~/.procmailrc ファイルの冒頭に、以下のような形式で表示されます。
<env-variable>="<value>"
この例では、<env-variable> が変数の名前で、<value> が変数を定義します。
大半の Procmail ユーザーが使用しない環境変数が多々あります。重要な環境変数の多くは、既にデフォルト値で定義されています。大抵の場合は、以下のような変数が使用されます。
  • DEFAULT — どのレシピにも適合しないメッセージが配置された場合のデフォルトのメールボックスを設定します。
    デフォルトの DEFAULT 値は、$ORGMAIL と同じです。
  • INCLUDERC — 照合するメッセージに対する多くのレシピを格納する追加の rc ファイルを指定します。これにより、Procmail レシピの一覧は、スパムのブロック、電子メール一覧の管理など異なる役割を果たす個別のファイルに分割されます。その結果、そうしたファイルは、ユーザーの ~/.procmailrc ファイル内のコメント文字を使用して、オン/オフにすることができます。
    例えば、ユーザーの .procmailrc ファイル内の行は以下のようになります:
    MAILDIR=$HOME/Msgs INCLUDERC=$MAILDIR/lists.rc INCLUDERC=$MAILDIR/spam.rc
    電子メールの一覧の Procmail フィルターをオフにしつつスパム制御を維持したい場合は、最初の INCLUDERC の行をハッシュ記号 (#) でコメントアウトします。
  • LOCKSLEEP — Procmail が特定のロックファイルの使用を試みる時間間隔を秒単位で設定します。デフォルトは 8 秒です。
  • LOCKTIMEOUT — ロックファイルが最後に修正された後、Procmail がそれは古くて削除可能であると見なすまでに経過する必要のある時間を秒単位で設定します。デフォルトは 1024 秒です。
  • LOGFILE — Procmail の情報やエラーメッセージが書き込まれるファイルです。
  • MAILDIR — Procmail 用の現在作業中のディレクトリを設定します。設定されると、他の Procmail のパスはすべてこのディレクトリに対する相対パスになります。
  • ORGMAIL — 元のメールボックス、またはデフォルトやレシピで必要な場所にメッセージを配置できなかった場合にメッセージを配置する別の場所を指定します。
    デフォルトでは、/var/spool/mail/$LOGNAME の値が使用されます。
  • SUSPEND — スワップ領域など必要なリソースが利用できない場合に、Procmail が一時停止する時間を秒単位で設定します。
  • SWITCHRC — 追加の Procmail レシピが格納されている外部ファイルをユーザーが指定できるようにします。これは、INCLUDERC オプションとよく似ていますが、レシピのチェックが参照先の設定ファイル上で実際に停止され、SWITCHRC の指定するファイル上のレシピのみが使用される点が異なります。
  • VERBOSE — Procmail が詳細な情報をログ記録するようにします。このオプションはデバッグに役立ちます。
その他の重要な環境変数は、シェルから引き出されます。例えば、ログイン名の LOGNAME、ホームディレクトリの場所である HOME、デフォルトのシェルである SHELL などです。
すべての環境変数についての包括的な説明やデフォルト値については、procmailrc の man ページを参照してください。