ウイルスを検出する

以下の 3つのウイルス (virus) 用のフィルタを使用して、ウイルスを含んだメッセージに対する PureMessage の処理方法を変更します。

以下のフィルタのいずれかを使用する場合、オプションの「PureMessage-Policy-Virus」パッケージが必要です。

例 1:ウイルスの亜種を含むすべての外部メッセージを隔離する

「virus 1」フィルタを使用して、ウイルスの亜種を含むすべての外部メッセージを隔離します。「virus 1」フィルタはポリシースクリプト 2: 「Scan External Mail for Viruses」(外部メールに含まれるウイルスを検索) にあるデフォルトのポリシーフィルタを変更したものです。デフォルトのフィルタとは異なり、「virus 1」フィルタはウイルスの亜種を含むすべてのメッセージを隔離します。未感染のメッセージに対しては何の処理も行いません。pmx-policy の man ページの pmx_virus コマンドをご覧ください。

# attr NAME=virus 1
    # Quarantines all infected messages.
    if pmx_virus {
    pmx_quarantine "Virus";
    }

説明:

  • pmx_virus テストでメッセージ内にウイルスが検出された場合、次の処理が行われます。
    • pmx_quarantine のアクションによって、「Virus」(ウイルス) という理由で PureMessage 隔離ディレクトリに送信されます。

フィルタの設置場所

「virus 1」 フィルタはポリシースクリプト 2: 「Scan External Mail for Viruses」(外部メールに含まれるウイルスを検索) と置き換えられます。このデフォルトのポリシーフィルタを「virus 1」フィルタで置き換えることによって、以下のことが可能になります。

  • 外部ホストからのメッセージがウイルスの亜種を含む場合、「virus 1」フィルタが実行されます。
  • ウイルスの亜種を含むすべての外部メッセージが隔離されます。
  • このフィルタに続く PureMessage ポリシーのフィルタは、常に実行されます。(「virus 1」フィルタには stop コマンドが含まれていません。stop コマンドが含まれている場合には他の PureMessage フィルタが実行される前にポリシースクリプトが停止されます。)

例 2:ウイルスの亜種を含むすべての内部メッセージを隔離する

「virus 2」フィルタを使用して、ウイルスの亜種を含むすべての外部メッセージを隔離します。「virus 2」フィルタはポリシースクリプト 1: 「Scan and Deliver Internal Messages」(内部メールに含まれるウイルスを検索して配信) にあるデフォルトのポリシーフィルタを変更したものです。デフォルトフィルタとは異なり、「virus 2」フィルタは内部ホスト経由で送信されてきたすべてのメッセージからウイルスの亜種を除去しようとします。デフォルトのポリシーではウイルスを含むすべての内部メッセージが拒否されます。

# attr NAME=virus 2
#
if pmx_virus {
    pmx_file "Virus";
    pmx_virus_clean "cantclean.tmpl";
    pmx_replace_header "Subject" "[PMX:VIRUS] %%SUBJECT%%";
    stop;
}

説明:

このフィルタではウイルスを含むメッセージからウイルスを除去しようとします。ウイルスの除去に成功すると、メッセージは元の受信者に届きます。ウイルスを除去できない場合は、感染した部分がエラーテンプレート cantclean.tmpl に置き換わります。「Subject」(件名) には、[PMX:VIRUS] のマーキングが付けられ、受信者に PureMessage でウイルスが発見されたことを通知します。

フィルタの設置場所

「virus 2」 フィルタはポリシースクリプト 1: 「Scan and Deliver Internal Messages」(内部メールに含まれるウイルスを検索して配信) と置き換えられます。このデフォルトのポリシーフィルタを「virus 2」フィルタで置き換えることによって、以下のことが可能になります。

  • 内部ホストからのメッセージがウイルスの亜種を含む場合、「virus 2」フィルタが実行されます。
  • 内部ホスト経由のすべてのメッセージに含まれるウイルスの亜種が除去されます。
  • このフィルタに続く PureMessage ポリシーのフィルタは、常に実行されません。(「virus 2」フィルタには stop コマンドが含まれてます。stop コマンドが含まれている場合には他の conref フィルタが実行される前にポリシースクリプトが停止されます。)

例 3:特定のウイルスを含む外部メッセージを破棄する

「virus 3」フィルタを使用して外部ホストを経由して送信されるメールを確認し、「Klez」または「Sobig」の亜種を含むメッセージを破棄します。「virus 3」フィルタはポリシースクリプト 2: 「Scan External Mail for Viruses」(外部メールに含まれるウイルスを検索) にあるデフォルトのポリシーフィルタを変更したものです。デフォルトのフィルタとは異なり、カスタムの「virus 3」フィルタは、pmx_virus_id command コマンドを使用して特定のウイルスを検索します。

# attr NAME=virus 3
# Discards messages infected with Klez or Sobig variants.
# Attempts to clean messages infected with other variants.
if pmx_virus {
    if pmx_virus_id :matches ["*Klez*", "*Sobig*"] {
        discard;
        stop;
    }
    pmx_file "Virus";
    pmx_virus_clean "cantclean.tmpl";
    pmx_replace_header "Subject" "[PMX:VIRUS] %%SUBJECT%%";
}

説明:

  • pmx_virus コマンドは、メッセージにウイルスが含まれていないかどうかをテストします。テストで「true」が返され、メッセージにウイルスが含まれている場合
    • pmx_virus_id テストでは、メッセージに「Klez」または「Sobig」の亜種が含まれているかどうかを確認します。いずれかのウイルスが検出された場合には以下の処理が行われます。
      • メッセージが破棄されます。
      • stop コマンドによってメッセージ処理が終了します。
    • pmx_file コマンドは、「Virus」(ウイルス) という理由で隔離ディレクトリにメッセージをコピーします。
    • pmx_virus_clean のアクションによって、メッセージからのウイルス除去が実行されます。除去が失敗した場合、メッセージは隔離され、失敗時に関する指定のテンプレートファイルの cantclean.tmpl に基づいたメッセージが受信者に送信されます。
    • pmx_replace_header コマンドによって、「Subject」(件名) ヘッダに [PMX:VIRUS] の接頭辞が追加されます。元の「Subject」(件名) はヘッダの最後に %%SUBJECT%% テンプレート変数と共に追加されます。

フィルタの設置場所

「virus 3」 フィルタはポリシースクリプト 2: 「Scan External Mail for Viruses」(外部メールに含まれるウイルスを検索) と置き換えられます。このデフォルトのポリシーフィルタを「virus 3」フィルタで置き換えることによって、以下のことが可能になります。

  • 外部ホストからのメッセージが特定のウイルスの亜種を含む場合、「virus 3」フィルタが実行されます。
  • ウイルスの亜種を含むすべての外部メッセージが破棄されます。
  • このフィルタに続く PureMessage ポリシーのフィルタは、常に実行されます。(「virus 3」フィルタには stop コマンドが含まれていません。stop コマンドが含まれている場合には他の PureMessage フィルタが実行される前にポリシースクリプトが停止されます。)