19.4. メール配信エージェント (MDA)
Red Hat Enterprise Linuxnbsp;Hat Enterprise Linuxnbsp;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/procmailrc
ディレクトリー内の / etc/procmailrc
ファイルと rc
ファイルで、デフォルトのシステム全体の Procmail 環境変数とレシピを探します。その後 Procmail は、ユーザーのホームディレクトリー内で .procmailrc
ファイルを検索します。多くのユーザーは、Procmail 用に追加の rc
ファイルも作成します。これは、ホームディレクトリーの .procmailrc
ファイル内で参照されます。
19.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 が詳細な情報をログ記録するようにします。このオプションはデバッグに役立ちます。
その他の重要な環境変数は、シェルからプルされます。たとえば、ログイン名、ログイン名、ホームディレクトリーの場所である HOME、デフォルトのシェルである SHELL などです。
すべての環境変数に関する包括的な説明やデフォルト値は、man ページの
procmailrc
を参照してください。