GNU/Linux >> Linux の 問題 >  >> Panels >> Webmin

Procmailメールフィルター

このページでは、 Procmailの使用方法について説明します プログラムとWebminを使用して、システムに着信する電子メールをフィルタリングして配信します。

Procmailの紹介

Procmailは、通常はユーザーのメールボックスに送信される電子メールをフィルタリングおよびリダイレクトするための強力なプログラムです。これは、システムレベルの両方で使用して、システム上のすべてのユーザーのメッセージをユーザーごとに、またはその両方でフィルタリングできます。通常のSendmailエイリアスとは異なり、Procmailは、ヘッダーとコンテンツに応じて異なる方法でメッセージを配信するために使用できます。これにより、スパムなどの不要な電子メールをブロックするための優れたツールになります。

システムにインストールすると、Procmailは、SendmailMailServerおよびその他のMTAがユーザーのメールファイルにメッセージを追加するために実行する通常のmail.local電子メール配信コマンドを効果的に置き換えます。 Sendmailで最も一般的に使用されますが、QMailMailServerやPostfixMailServerなどの他のMTAもProcmailを配信に使用するように構成できます。プログラムに関する限り、電子メールが適切に渡される限り、実際に使用されているメールサーバーは関係ありません。

Procmailのプライマリ設定ファイルは/etc/ procmailrcで、通常はシステム管理者が管理します。個々のユーザーは、ホームディレクトリに同じ形式の独自の.procmailrcファイルを作成することもできます。システム全体のファイルは常に最初に読み取られて処理されるため、コンテンツに基づいてメッセージをリダイレクトするために含まれるルールは、個々のユーザーが上書きすることはできません。

Procmail構成ファイルはアクションに分割され、各アクションには一連の条件と配信モードがあります。条件はアクションが一致するメッセージを決定し、配信モードは一致するメッセージに何が起こるかを制御します。 Procmailは、一致するアクションが見つかるまでアクションを順番に処理し、指定されたとおりにメッセージを配信してから、処理を停止します。

構成ファイルには、後のアクションや他の変数で使用される可能性のある変数の割り当てを含めることもできます。また、一部の条件が一致した場合にのみ実行されるアクションのリストである特別な条件付きセクションを含めることもできます。ある意味で、これらはプログラミング言語のif-thenステートメントのようなものです。

Procmailは、すべてのUnixライクなオペレーティングシステムでほとんど同じように動作します。唯一の違いは、デフォルトの配信場所です。すべてのLinuxディストリビューションはユーザーメールファイルディレクトリとして/ var / spool / mailを使用しますが、Solarisなどの他のUnixバリアントは/ var/mailを使用します。ただし、この違いは、プログラムの構成ファイル形式やProcmailMailFilterモジュールのユーザーインターフェイスには影響しません。

Procmailは、さまざまなユーザーからの電子メールをさまざまなメールボックスに並べ替えたり、2つの異なるメールファイルに書き込んだり、特定のアドレスから電子メールをドロップしたりするなどのタスクを実行するように個々のユーザーによって構成されている場合に最も役立ちます。ただし、Procmail Webminモジュールとこの章では、システム全体の構成のみを扱います。個々のユーザーがWebインターフェイスを介してプログラムを構成できるツールが必要な場合は、Userminが使用するプログラムです。 / etc / procmailrcの代わりに.procmailrcファイルを管理する同一のインターフェースを備えたモジュールと、さらに単純なインターフェースを備えた別のモジュールがあります。

グローバルProcmail構成を使用して、メールをメールサーバーで通常使用されるものとは異なるディレクトリまたは異なる形式で配信することができます。たとえば、ユーザーのメールを/ var / spool / mail内のファイルに追加する代わりに、ホームディレクトリのファイルmboxに書き込むことができます。さらに良いことに、Procmailは、通常はMaildirと呼ばれ、ユーザーのホームディレクトリにあるQmailスタイルのメールディレクトリに書き込むように設定できます。

システム上でローカルに配信される電子メールのみを処理するため、MozillaやEvolutionなどのクライアントプログラムを使用してISPまたは会社のサーバーから電子メールをダウンロードする場合、Procmailをメールフィルタリングに使用することはできません。独自のメールサーバーを実行していないが、Procmailの機能を利用したい場合は、メッセージをダウンロードしてシステムのMTAに渡すようにFetchmailMailRetrievalを設定する必要があります。

Procmailメールフィルターモジュール

システム全体の構成ファイルを管理するためのWebminモジュールは、Procmail Mail Filterと呼ばれ、サーバーカテゴリにあります。アイコンをクリックすると、下のスクリーンショットに示すようなメインページに移動します。既存のすべてのアクションが一覧表示され、その下にさまざまなタイプの新しいアクションを追加するためのリンクがあります。


Procmailモジュールのメインページ

他のモジュールとは異なり、Procmailがシステムにインストールされていない場合、このモジュールは文句を言いません。 Linuxディストリビューションまたはオペレーティングシステムに付属しているパッケージを確認してインストールするには、ソフトウェアパッケージモジュールを使用する必要があります。パッケージが存在しない場合は、www.procmail.orgからソースをダウンロードし、コンパイルしてインストールする必要があります。

ただし、Procmailをインストールするだけでは、実際にシステムで使用するには不十分です。デフォルトでは、Sendmail、Qmail、Postfixなどのメールサーバーは、Procmailではなく独自の標準メール配信プログラムを使用します。個々のユーザーは、すべての受信メールをProcmailプログラムに渡す/ usr / bin/procmail行を含む.forwardまたは.qmailファイルを作成することでこれを変更できます。ただし、個々のユーザーが設定する必要がないように、Procmailを使用するようにMTAをグローバルに再構成することをお勧めします。以下の「Sendmailの設定」セクションでは、Sendmailの設定方法について説明しています。他のメールサーバーは別の方法で設定する必要があります。

Sendmailの設定

プライマリSendmail構成ファイルが作成されたM4ファイルがある限り、Procmailを使用するようにSendmailを設定するのは簡単です。残念ながら、sendmail.cfを直接編集してメールサーバーを設定するのはそれほど簡単ではないため、この章では説明しません。ただし、最新のLinuxディストリビューションにはすべて、sendmailパッケージまたはsendmail-cfなどの別のパッケージに必要なM4ファイルが含まれています。

Procmailを使用するようにSendmailMTAを構成するには、次の手順に従います。

  1. Webminの[サーバー]カテゴリにあるSendmail構成モジュールに移動します。
  2. メインページの*SendmailM4Configuration*アイコンをクリックします。既存のM4ディレクティブのリストが表示されるはずです。表示されない場合、Sendmailの再構成に必要なM4ファイルがシステムにインストールされていない可能性があります。
  3. FEATURE(local_procmail)行がすでに存在するかどうかを確認します。有効になっている場合、Procmailを使用した配信はすでに有効になっているため、これらの残りの手順を実行する必要はありません。
  4. タイプの新しいエントリを追加の横にあるメニューから ボタン選択機能 、ボタンを押して機能作成フォームを表示します。
  5. 機能から メニュー選択local_procmailパラメータはそのままにします フィールドが空です。
  6. 作成を押します ボタンをクリックして、M4ファイルに新機能を追加します。ブラウザは既存のディレクティブのリストに戻り、その下部に新しいFEATURE(local_procmail)行が表示されます。
  7. 新しい行の横にある上矢印を必要な回数クリックして、MAILER(ローカル)行の上に移動します。これが必要なのは、ファイルが順番に処理され、新しいディレクティブがMAILER行の動作を変更するためです。
  8. 新しいFEATURE行が配置されたら、ページの下部にある[*SendmailConfigurationの再構築*]ボタンをクリックします。プライマリSendmail構成ファイルに加えられる変更を示す確認ページが表示されます。sendmail.cfを直接変更していない限り、それらは新しいProcmailサポートにのみ関連します。
  9. はい、今すぐ交換をクリックします 新しい構成を保存してアクティブ化します。今後、Sendmailからローカルユーザーに配信されるすべてのメールはProcmailによって処理されます。すべてが機能したかどうかを確認するには、いくつかのテストメッセージを送信して、正常に配信されることを確認してください。

SendmailモジュールのM4機能の動作と構成ファイルの場所の詳細については、Sendmail構成の*「M4を使用したSendmail機能の追加」セクションを参照してください。

アクションの作成と編集

この章の概要で説明されているように、Procmail構成ファイルは一連のアクションで構成されています。電子メールが到着すると、1つが一致し、その配信モードが実行されるまで、それぞれが順番にチェックされます。一致するアクションがない場合(または存在しない場合)、電子メールはデフォルトの宛先に配信されます。これは通常、/ var / spool/mailの下にあるユーザーのメールファイルです。

新しいアクションを作成するには、次の手順に従います。

  1. 新しいフィルターアクションを追加をクリックします モジュールのメインページにある既存のアクションのリストの下にあるリンク。下の画像に示すフォームは、目的地と条件を入力するために表示されます。
  2. 配信モードから、このアクションに一致するメッセージの宛先のタイプを選択します メニュー。使用可能なオプションは次のとおりです。*ファイルに追加*メールは、 / var / spool / mail / fredなどの隣接するテキストフィールドに入力されたファイルに標準のメールボックス形式で追加されます 。メッセージを破棄するには、ファイルとして/ dev/nullを入力します。 * maildirに書き込みます*一致する電子メールは、パスがテキストフィールドに入力されているQmailスタイルのメールディレクトリに追加されます。このディレクトリがまだ存在しない場合、Procmailはユーザーのためにディレクトリ(および必要なサブディレクトリ)を作成します。 *MHフォルダに書き込む*指定したMHスタイルのメールディレクトリにメールが追加されます。このメール形式もメッセージごとに1つのファイルを使用しますが、それらをすべて1つのディレクトリに配置し、1、2、3などの数値のファイル名をインクリメントするメッセージファイルを提供します。 *アドレスに転送*メールは、 [email protected]などの隣接するテキストフィールドに入力されたアドレスまたはユーザーに送信されます 。 *プログラムへのフィード*一致する電子メールメッセージは、メニューの横のテキストボックスにパスと引数が入力されたプログラムへの入力としてフィードされます。非絶対メールのファイル名またはディレクトリ(メールボックスなど)の場合 またはMaildir )が入力されると、Procmailは、電子メールの配信先のユーザーのホームディレクトリを基準としていると見なします。
  3. Procmailにヘッダーだけでなく受信メッセージの本文をチェックさせるには、本文に条件を適用するをチェックします。 箱。これは、後で入力する条件のいずれかが電子メール自体のテキストと一致する必要がある場合に必要です。
  4. 通常、Procmailは、条件をチェックするときにヘッダーの大文字と小文字を無視します。これを変更するには、大文字と小文字を区別するマッチングを確認してください 箱。
  5. このアクションが一致しても、Procmailで構成ファイルを続行する場合は、[*条件が一致しても処理を続行する*]チェックボックスをオンにします。これを使用すると、最後を除くすべての配信ルールでこのオプションをオンにすることで、いくつかの異なるファイルまたはフォルダーに電子メールを配信できます。
  6. Procmailは通常、電子メールが送信されるプログラムの終了ステータスを無視します。プログラムが失敗した場合に失敗する(したがってメッセージをバウンスする)には、*アクションプログラムが終了するのを待ち、結果を確認する*オプションをオンにします。
  7. 入力した配信プログラムが読み込まれ、変更を加えたメールが出力される場合は、[*アクションプログラムはフィルター*]チェックボックスをオンにします。 *条件が一致しても処理を続行する*オプションも有効にして、変更されたバージョンのメッセージで処理を続行する必要があります。この機能は、ヘッダーを追加または変更してメッセージをチェックおよびマークするプログラムを作成した場合に役立ちます。このプログラムは、後のアクションでチェックできます。
  8. アクション条件 フォームのセクションは、このアクションによって配信されるメッセージを決定する条件を入力するためのものです。何も指定されていない場合、アクションに到達するメッセージは常に配信されます。複数のメッセージが入力された場合、配信が行われるには、それらがすべて一致している必要があります。このセクションは、実際には2つの空白行で始まるテーブルです。各行のメニューは、条件のタイプと、その隣のボックスのテキストがどのように解釈されるかを決定します。使用可能なオプションは次のとおりです。
    • 正規表現に一致します
      この条件がメッセージヘッダー(および場合によっては本文も)と一致するには、テキストボックスに入力されたPerlスタイルの正規表現と一致する必要があります。この式は、単一のテキストブロックであるかのようにすべてのヘッダーに適用されるため、行の先頭を示すには、ヘッダー名の前に^を付ける必要があります。たとえば、件名に fooという単語が含まれているメッセージをキャッチするには ^ Subject:。*foo。*と入力できます 。
    • 正規表現と一致しません
      この条件タイプは、正規表現と一致しないメッセージと一致することを除いて、前の条件タイプと同じように機能します。
    • コマンドの出力を評価する
      テキストボックスに入力されたシェルコマンドが実行され、その出力がProcmailによって読み取られ、構成ファイルからのアクション行として再度解釈されます。このタイプの条件は、動的に生成された条件を作成できるため非常に強力ですが、日常のメールフィルタリングでは、おそらく使用する必要はありません。
    • コマンドの終了ステータスを確認する
      このタイプの条件は、入力されたシェルコマンドの終了ステータスがゼロの場合に一致し、成功を示します。システムのホスト名、時刻、またはファイルの存在に応じて、さまざまな宛先にメールを配信するために使用できます。
    • メールはよりも小さい
      メッセージの合計サイズが隣接するテキストボックスに入力されたバイト数よりも小さい場合、条件は一致します。
    • メールが大きい
      その名前が示すように、このタイプの条件は前の条件の反対です。
  9. 条件の入力が完了したら、保存を押します ボタン。新しいアクションはメインページのリストに追加され、受信メールで使用され始めます。 3つ以上の条件を追加するには、アクションを再編集して、アクション条件にさらに2つの空の行が表示されるようにする必要があります。 セクション。


Procmailアクション作成フォーム

実行するアクションのエントリをクリックすると、既存のアクションを編集できます。 モジュールのメインページの列。上記と同じ編集フォームが表示されます。ここから変更を加えて、保存を押すことができます それらをアクティブ化するか、削除を押すだけです アクションを完全に削除します。

アクションの順序が重要であるため、このモジュールでは、メインページのそれぞれの横にある上下の矢印を使用してProcmail構成での位置を変更できます。変数の割り当て、条件付きブロック、およびインクルードファイルも同じ方法で移動できます。

上記の手順に従うことで、すべてのメールをQmailスタイルの Maildirに配信するアクションを簡単に作成できます。 ユーザーのホームディレクトリ内のディレクトリ。このメール形式は、/ var / spool / mail内の従来のファイルと比較して信頼性が高いため好ましいものですが、メールクライアントまたはシステム上のPOP3サーバーがその読み取り方法を知らない限り、あまり使用されません。ほとんどのオペレーティングシステムに付属しているPOP3サーバーは、/ var / spool / mailの下で電子メールを正常に処理することを想定しているため、新しいメール形式または場所をサポートするには、交換または再構成する必要があります。ユーザーのメールファイルを直接読み取る他のメールクライアント(Pine、Elm、Userminなど)は、選択した新しい場所を使用するように構成できます。

変数の割り当ての作成と編集

Procmailアクションは、条件と配信先でシェルスタイルの変数を利用できます。たとえば、ファイル / mail / $ LOGNAMEに配信するアクションを作成できます。 、ここで $ LOGNAME 電子メールの配信先のユーザーのユーザー名です。いくつかの変数(.LOGNAMEやDEFAULTなど)はProcmailによって自動的に設定されますが、他の変数は後で使用するために構成ファイルに設定できます。自動変数をオーバーライドして、コマンドの実行に使用するデフォルトの配信先やシェルなど、プログラムの動作を変更することもできます。

新しい変数の割り当てを作成するには、次の手順に従います。

  1. モジュールのメインページで、既存のアクションのリストの下にある[*新しい変数設定を追加する*]リンクをクリックします。変数作成フォームが表示されます。
  2. 変数名 フィールドに、設定する変数の名前( DEFAULT など)を入力します 。すべての自動変数には大文字の名前が付いており、自分で作成したものも同様にする必要があります。スペースや英数字以外の文字は使用できません。
  3. フィールドに、この変数に割り当てる値( Maildir / など)を入力します 。値には、他の変数への参照を含めることができます。
  4. 作成を押します ボタンをクリックして、メインページのリストに変数を追加します。
  5. リスト内の新しい変数の横にある上矢印を使用して、変数を正しい場所(通常はファイルの先頭)に移動します。変数の割り当ては効果があるだけなので、下部に追加したものは効果がない場合があります。

アクションと同様に、変数はリスト内の名前をクリックして編集または削除できます。変数は、その横にある上下の矢印を使用して移動することもできます。これらはファイル内でアクションやその下にある他の割り当てにのみ影響するため、新しい変数をリストの一番上近くに移動することをお勧めします。下部に追加して残したものは効果がありません(デフォルトの配信先を除く)。

Procmailは、いくつかの特別な変数を定義し、変更できるようにします。最も興味深いものの名前と意味を以下の表に示します。

条件付きブロックとインクルードファイル

条件付きブロックは、Procmail構成ファイル内のアクションと変数の割り当てのグループであり、一部の条件が一致した場合にのみ処理されます。これらは、プログラミング言語のように、非常に複雑なアクションのセットを作成するために使用できます。このモジュールを使用すると、条件付きブロックを作成および編集できますが、その内容は、含まれているアクションを解析するのではなく、構成ファイルのテキストとして表示されます。これは、それらを使用するには、Procmailファイル形式に精通している必要があることを意味します。

条件付きブロックを作成するには、次の手順に従います。

  1. 新しい条件付きブロックを追加をクリックします モジュールのメインページのアクションのリストの下。
  2. 実行するProcmailコード テキストボックスに、条件が一致した場合に処理されるアクションまたは変数の割り当ての構成ファイルの行を入力します。ブロック内のアクションが一致するとすぐに、構成ファイル全体の処理が停止します。ただし、一致するものがない場合は、ブロック後の次のアクションで通常どおり処理が続行されます。フォーマットの詳細については、システムドキュメントモジュールのprocmailrcのマニュアルページを参照してください。
  3. アクション条件を入力します アクションの作成と編集で説明されているように、通常のアクションの場合と同じようにセクションを作成します。 この章の前半。
  4. 作成を押します ボタンをクリックして、新しいブロックを作成します。

アクションと同様に、モジュールのメインページのリストで条件付きブロックをクリックすると、条件付きブロックを編集または削除できます。ブロック全体は、その横にある上下の矢印を使用して移動することもできます。

インクルードファイルは、Procmailに/ etc/procmailrcと同じ形式の別の構成ファイルを読み取って処理するように指示する特別なディレクティブです。一部のスパムフィルタリングプログラムは、実際には、プライマリ構成に含めることができる単なるProcmailファイルです。 includeディレクティブを作成するには、次の手順に従います。

  1. 新しいインクルードファイルを追加をクリックします モジュールのメインページのリンク。
  2. インクルードファイル 表示されるフォームのフィールドに、他の構成ファイルへのフルパスを入力します。相対パスを入力することもできます。この場合、Procmailは、メールの配信先であるUnixユーザーのホームディレクトリでそのファイルを検索します。インクルードを処理する場合、Procmailは、ファイル内で一致するアクションが見つかるとすぐに処理を完全に停止します。何も見つからない場合は、プライマリ構成ファイルにインクルードした後に実行されるアクションの処理を続行します。
  3. 作成を押します ボタンをクリックしてプロセスを終了します。

通常、インクルードは、アクションや変数の割り当てと同じようにモジュールのメインページに一覧表示され、編集、削除、または移動できます。ただし、インクルードファイルの内容を表示しますか? Module Configで設定が有効になっている ページモジュールは、編集または削除できるように、インクルードファイル内の実際のアクションを表示します。ファイル内でのみですが、上下に移動することもできます。このオプションを有効にすると、モジュールのメインページが使用できなくなるため、大量のインクルードファイル(スパムフィルタリング用のファイルなど)がある場合はお勧めできません。

コンテンツ

関連項目

  • SpamAssassinを使用したスパムのフィルタリング

Webmin
  1. バックアップエボリューションメール?

  2. メールリレーを設定する

  3. Linux OS サービス「sendmail」

  1. 簡単なPHPメールテスト

  2. Fetchmailメールの取得

  3. postfix を使用してスパム メールを特別なフォルダに送信する

  1. QMailメールサーバー

  2. メールを受信できません(メール有効)

  3. /var/spool/mail/root からのメールの読み取り