Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

15.4. メール配信エージェント (MDA)

Red Hat Enterprise Linux には、プライマリ MDA として Procmail が含まれています。両方のアプリケーションは 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 ファイル内で参照されます。

15.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 などです。

すべての環境変数に関する包括的な説明やデフォルト値は、man ページ procmailrc を参照してください。