はじめに
この記事では、Eメールセキュリティアプライアンス(ESA)のメッセージフィルタに関するベストプラクティスと実装について説明します。 メッセージフィルタを使用すると、特定の条件を満たすメッセージをESAで受信して処理するときの処理方法を説明する特別なルールを作成できます。
前提条件
- ESAフィルタ操作の基本的な知識
- ESAのコマンドラインインターフェイス(CLI)に精通していること
メッセージフィルタを使用する利点
コンテンツフィルタと比較してメッセージフィルタを使用する主な利点は次の2つです。
- これらは、ワークキュー処理パイプラインの先頭に向かってメッセージに適用されます。このため、主要なスキャンエンジン(スパム対策、ウイルス対策、AMPなど)が使用される前にメッセージをフィルタリングすることで、大量のリソースを節約できる可能性があります。
- これらは着信トラフィックと発信トラフィックの両方に対してアクションを実行しますが、コンテンツフィルタの場合は、着信用に1つと発信用に1つを作成する必要があります。
また、コンテンツフィルタを使用して設定できない条件もいくつかあります。コンテンツフィルタは、メッセージフィルタでのみ設定できます。
例:ESAのSendergroupに基づいて条件を定義する必要がある場合、そのオプションはメッセージフィルタでのみ使用できます。
注:未完了のメッセージフィルタアクションは累積されます。メッセージが、各フィルタで異なるアクションが指定されている複数のフィルタと一致する場合、すべてのアクションが累積され、適用されます。ただし、メッセージが同じアクションを指定する複数のフィルタに一致する場合、前のアクションが上書きされ、最後のフィルタ処理が適用されます。
メッセージフィルタの操作
AsyncOSがメッセージフィルタを処理する際、AsyncOSがスキャンするコンテンツ、処理の順序、および実行されるアクションは、次のいくつかの要因に基づきます。
- メッセージフィルタは、設定された順序で処理されます(上から下へ、姓から順)。
- メッセージフィルタは、フィルタに到達したときにメッセージの内容に対して処理されます。
- 正規表現に一致する場合は、フィルタ操作を実行する前に一致が必要な回数を集計する「スコア」を設定します。これにより、さまざまな用語に対する回答を「比較検討」できます。
- メッセージフィルタのリンク条件の主な代替手段は:(AND / OR / IF / ELSE)です。
メッセージフィルタの作成

最初に、CLIからコマンドfiltersを発行して、メッセージフィルタのコンフィギュレーションモードに入ります。その後のオプションは次のとおりです。
- NEW:このオプションでは、新しいフィルタの作成を開始します。このオプションの選択の後に、フィルタ名と構文が続きます。
- DELETE:このオプションは、必要に応じて既存のフィルタを削除します。このコマンドを発行した後、削除するシーケンス番号のフィルタ名を入力できます
- IMPORT:アプライアンスディレクトリに保存されているフィルタの関連ファイルをインポートできます。
- EXPORT:このオプションでは、フィルタの関連ファイルをエクスポートして、別の宛先にインポートできます
- MOVE:このオプションでは、プリファレンスに従ってフィルタの順序を変更できます
- SET:このオプションでは、フィルタのステータスをアクティブから非アクティブに変更したり、その逆を変更したりできます
- LIST:このオプションは、ESAに存在する作成済みのフィルタをすべて表示します
- DETAIL:このオプションを使用すると、定義された条件やアクションなど、作成されたフィルタのコンポーネントを確認できます。
- LOGCONFIG:このオプションは、アーカイブとして定義されたアクションを持つメッセージフィルタ用に作成されたログファイル名(「フォルダ名」)を表示します
- ROLLOVERNOW:このオプションを使用すると、メッセージフィルタで定義されたアーカイブアクションによって作成されたフォルダに存在するすべてのログにカーソルを合わせることができます
フィルタは、クラスタ、グループ、マシンモードなど、ESAのすべてのモードで作成できます。
ESAが電子メールにフィルタを適用する設定プリファレンスの基準は、次のとおりです。
1番目の設定:マシンモード
2nd Preference:グループモード
3番目の設定:クラスタモード
メッセージフィルタを作成するには、条件とアクションを定義する構文の組み合わせが必要です(これはSQLの場合です)。
例:
if (recv-listener == 'InboundMail' or recv-int == 'notmain')
{
skip-filters();
}
else
{
quarantine(“Policy”);
}
.
上記のフィルタは、受信リスナーが「InboundMail」または受信インターフェイスが「notmain」の場合、残りのメッセージフィルタをスキップすることを示しています。
条件が一致しない場合は、ポリシーに対して隔離します。これはelseの後に定義されます。
役に立つヒント
メッセージフィルタで使用される構文が分かりにくいことがありますが、コンテンツフィルタも簡単な参照点です。
メッセージフィルタに必要な条件とアクションを含むコンテンツフィルタを作成できます。フィルタを送信すると、次のページのフィルタセクションの上部に、次の3つのタブが表示されます。

タブRulesをクリックすると、フィルタが使用する構文が表示され、同じものを使用してメッセージフィルタを作成できます。これが、要件に従ってフィルタ条件の構文を絞り込む最も簡単な方法です。

メッセージフィルタで使用される正規表現
- Carat (^):キャレット記号(^)を含むルールは、文字列の先頭にのみ一致します。
例:^I'm will match I'm an engineer
- ドル記号($):ドル記号($)を含む規則は、文字列の末尾にのみ一致します
例:.com$はgoogle.comだけでなくyahoo.comにも一致します。
- ピリオド文字(.):ピリオド文字(.)を含むルールは、任意の文字(新しい行を除く)と一致します。
例:正規表現^...admin$は、文字列macadminおよび文字列sunadminと一致しますが、win32adminとは一致しません。
- アスタリスク(*)ディレクティブ:アスタリスク(*)を含むルールは、「前のディレクティブと0回以上の一致」に一致します。 特に、ピリオドとアスタリスク(.*)のシーケンスは、任意の文字シーケンスと一致します(新しい行は含まれません)。
例:正規表現^P.*Piper$は、これらすべての文字列に一致します。PPiper、Peter Piper、P.Piper
- バックスラッシュ特殊文字(\):バックスラッシュ文字は特殊文字をエスケープします。したがって、シーケンス\.はリテラルのピリオドにのみ一致し、シーケンス\$はリテラルのドル記号にのみ一致し、シーケンス\^はリテラルキャレット記号にのみ一致します。
例:正規表現^ik\\.ac\\.uk$は、文字列ik.ac.ukにのみ一致します。
- 大文字と小文字を区別しない((?i):正規表現の残りの部分を示すトークン(?i)は、大文字と小文字を区別しないモードで処理する必要があります。
例:正規表現(?i)ciscoは、Cisco、CISCO、およびciscoに一致します
- Or (|): 「or」演算子。AとBが正規表現の場合、式「A|B」は「A」または「B」のいずれかに一致するすべての文字列に一致します。
例:式"foo|bar"は、fooまたはbarのいずれかに一致しますが、foobarには一致しません。
関連情報
Cisco E メール セキュリティ アプライアンス:エンドユーザ ガイド