【FortiGate】Eメールフィルタ機能の概要と設定例

ファイアウォール(UTM)

作業環境

  • FortiGate 60E
    • version 7.0.5

Eメールフィルタ概要

Eメールフィルタ機能では、スパムの検出やフィルタリングを実行できます。一部のEメールフィルタ機能については FortiGuard Antispam サブスクリプションが必要になります。

フィルタオプションの 3 つの分類

FortiGate のフィルタオプションは、その判定ソースから以下の 3 つに分類されます。

  1. ローカルベースのフィルタ
    • ブロック/許可リスト、禁止されたワード、FortiGuard Antispam を使用した DNS チェックなど、ローカル条件に基づきフィルタされる
  2. FortiGuard ベースのフィルタ
    • FortiGuard Antispam から返されたスコアまたは判定に基づいてフィルタされる
  3. サードパーティベースのフィルタ
    • サードパーティのソース(オープンリレーブラックリストなど)の情報に基づいてフィルタされる

インスペクションモード(機能セット)による機能差分

以下表の通り、MAPI についてはプロキシでのみ対応しています。

SMTPPOP3IMAPMAPI
プロキシ
フロー×
●: 対応、×: 非対応

ローカルベースのフィルタ

ローカルベースのフィルタには以下の 6 種類があります。

  1. HELO DNSルックアップ
  2. リターンEメールDNSチェック
  3. ブロック/許可リスト
  4. 禁止ワード
  5. 信頼できる IP アドレス
  6. MIME ヘッダ

「禁止ワード」、「信頼できる IP アドレス」、 「MIME ヘッダ」については CLI でのみ設定可能です。

HELO DNSルックアップ

  1. SMTP クライアントが SMTP サーバとの SMTP セッションを開く度に、クライアントはクライアントドメイン名を使用して HELO コマンドを送信します
  2. FortiGate は、HELO でクライアントによって指定されたドメイン名を取得し、DNS ルックアップを実行してドメインが存在するかどうかを判断します
  3. このルックアップが失敗した場合、FortiGate は SMTP セッション中に配信されたすべての Eメールがスパムであると判断します
  • HELO DNS ルックアップは、SMTP トラフィックでのみ使用できます

リターンEメールDNSチェック

  • FortiGate は、メールヘッダの Return フィールド返信先で DNS ルックアップを実行します。このレコードが存在しない場合、Eメールはスパムとして扱われます
    • FortiGate は返信先メールアドレスと返信先ドメインからドメインを取得し、DNS サーバをチェックしてドメインの A または MX レコードがあるかどうかを確認します
    • ドメインが存在しない場合、FortiGate は Eメールをスパムとして扱います

ブロック/許可リスト

ブロック/許可リストは、送信者の Eメールアドレスのパターンまたは IP サブネットに対して、Eメールの送受信を禁止または許可することができます。Eメールアドレスは正規表現またはワイルドカードで指定できます。

指定可能なアクション
  • 拒否としてマーク
    • Eメールはドロップされる
    • IP サブネットに対してのみ選択可能なオプション
  • スパムとしてマーク
    • Eメールはスパムとしてマークするインジケータでタグ付けされる
  • クリアとしてマーク
    • Eメールは許可される

ブロック/許可リストの中のエントリは上から順番に評価されます。条件を満たすエントリが見つかった時点で、そのエントリに基づいてアクションが確定され、残りのエントリは無視されます

禁止ワード

  • 禁止ワードパターンは、ワイルドカードまたは Perl 正規表現のいずれかで指定可能
  • Eメール内で禁止ワードパターンを検出する度に、スコアの合計にパターンスコアを追加する
  • Eメールで検出された禁止ワードの合計スコアが、Eメールフィルタプロファイルで設定されたしきい値を超えると、FortiGate はその Eメールをスパムとして扱います
  • 各パターンのスコアは、そのパターンが Eメールに繰り返し表示されている場合でも 1 回のみ加算されます
  • 禁止されたワードパターンのデフォルトのスコアは 10 、Eメールフィルタのデフォルトのしきい値は 10
    • デフォルトでは一つの禁止ワードパターンに合致した時点でブロックされることを意味します

信頼できる IP アドレス

  • 信頼できる IP アドレスのリストを作成して Eメールフィルタプロファイルで設定することができます
  • 信頼できる IP アドレスを送信元とする Eメールトラフィックは、DNSBL、RBL、FortiGuard Antispam サービス、またはローカルで定義された IP ブロックリストなどの IP ベースのチェックの対象から除外されます

MIME ヘッダ

MIME ヘッダフィールドの値に基づいてフィルタリングができます。

FortiGuard ベースのフィルタ

FortiGuard ベースのフィルタには以下の 5 種類があります。

  1. IPアドレスチェック
  2. URLチェック
  3. Eメール内のフィッシングURLを検知
  4. Eメールチェックサムのチェック
  5. スパム報告

IPアドレスチェック

  • FortiGateは、FortiGuard Antispam サービスにクエリを実行して、Eメール送信元の IP アドレスがブロックリストに含まれているかどうかを判断します
  • 送信元 IP アドレスがブロックリストに含まれている場合スパムとして扱います

URLチェック

  • FortiGateは、Eメール本文に表示されるすべての URL を確認のために FortiGuard サービスに送信します
  • FortiGuard URL ブロックリストに URL が存在する場合スパムとして扱います

Eメール内のフィッシングURLを検知

  • FortiGateは、Eメール本文に表示されるすべての URL ハイパーリンクを FortiGuard サービスに送信して確認します
  • FortiGuard URL フィッシングリストに URL が存在する場合、FortiGate はメール本文からハイパーリンクを削除します
    • URL はそのまま残りますが、クリック可能なハイパーリンクではなくなります

Eメールチェックサムのチェック

  • FortiGateは、各 Eメールのチェックサムを FortiGuard サービスに送信してチェックします
  • FortiGuard チェックサムブロックリストにチェックサムが存在する場合スパムとして扱います

スパム報告

  • スパムとして誤ってマークされた非スパムメッセージを FortiGuard Antispam サービスに通知するために使用する
  • FortiGate はスパムとしてマークされたすべての Eメールの最後にリンクを追加する
  • Eメールが誤ってスパムとマークされた場合は、追加されたリンクをクリックすることで FortiGuard Antispam サービスに通知できる

サードパーティベースのフィルタ

  • ローカルベースおよび FortiGuard ベースのフィルタに加えて、DNS ベースのブラックホールリスト(DNSBL)またはオープンリレー動作変更システム(ORBS)のようなサードパーティのソースを使用するよう設定することができます
  • これらのサードパーティソースは、スパムに関連していると判定された IP アドレスのリストです

フィルタリングの適用順序

Eメールフィルタには複数の機能がありますが、それらの機能は順番に適用されます。ある機能での検査で条件の一致が無い、またはスパムではないと判断された場合、次の機能での検査に移行していきます。

SMTP, SMTPS に対する適用順序

Eメールフィルタプロファイルでローカルオーバーライド(set local-override)を有効にしているかどうか(デフォルトでは無効)によって順序が変わります。

詳しくは公式マニュアルを確認してください。

IMAP, IMAPS, POP3, POP3S に対する適用順序

  1. MIME ヘッダのチェック、メールアドレスのブロック/許可リストのチェック
  2. メールの件名の禁止ワードチェック
  3. IP のブロック/許可リストのチェック
  4. メール本文の禁止ワードチェック
  5. リターンEメールDNSチェック、FortiGuard メールチェックサムチェック、FortiGuard URL チェック、DNSBL および ORDBL チェック

プロトコル別のアクション設定

Eメールフィルタプロファイルには、SMTP、POP3、IMAP、および MAPI のプロトコル別に config 階層があり、スパムと判断されたメールに対するアクションを<転送/タグ/破棄>から設定できます。

例えば「タグ」アクションの場合、スパムメールには設定した文字列で件名またはヘッダにタグ付けされます。

  • 転送
    • スパムメールは何も処理されることなく通過します
  • タグ
    • スパムメールは通過しますが、件名または MIME ヘッダにタグ付けされます
  • 破棄
    • スパムメールはブロックされます

Eメールフィルタの設定

GUI の場合

Eメールフィルタプロファイル編集画面

◆ローカルスパムフィルタリングのブロック/許可リストのエントリ作成画面

CLI の場合

Eメールフィルタプロファイルは CLI では config emailfilter profile に該当します。

FW01 (Clone of default) # show full-configuration
config emailfilter profile
    edit "Clone of default"
        set comment "Malware and phishing URL filtering."
        set feature-set flow
        set replacemsg-group ''
        set spam-log enable
        set spam-filtering enable
        set external disable
        set options spambal spamfsip spamfssubmit spamfschksum spamfsurl spamhelodns spamraddrdns spamfsphish
        config imap
            set log-all disable
            set action tag
            set tag-type subject spaminfo
            set tag-msg "Spam"
        end
        config pop3
            set log-all disable
            set action tag
            set tag-type subject spaminfo
            set tag-msg "Spam"
        end
        config smtp
            set log-all disable
            set action discard
            set tag-type subject spaminfo
            set tag-msg "Spam"
            set hdrip disable
            set local-override disable
        end
        config msn-hotmail
            set log-all disable
        end
        config gmail
            set log-all disable
        end
        set spam-bword-threshold 10
        unset spam-bword-table
        set spam-bal-table 1
        unset spam-mheader-table
        unset spam-rbl-table
        unset spam-iptrust-table
        set spam-log-fortiguard-response disable
    next
end

ブロック/許可リストなどは別のコンフィグになっており、Eメールフィルタプロファイルから参照される形になります。コンフィグ項目としては以下の通りです。

FW01 # show emailfilter
block-allow-list    Configure anti-spam block/allow list.
bword               Configure AntiSpam banned word list.
dnsbl               Configure AntiSpam DNSBL/ORBL.
fortishield         Configure FortiGuard - AntiSpam.
iptrust             Configure AntiSpam IP trust.
mheader             Configure AntiSpam MIME header.
options             Configure AntiSpam options.
profile             Configure Email Filter profiles.

Eメールフィルタの設定例と動作確認

検証構成

以下図のような構成で FortiGate では SMTP に関わるポリシーとして以下2つを設定しています。

  1. クライアントから SMTP サーバへの SMTP を許可するポリシー
  2. SMTP サーバからインターネットへの SMTP を許可するポリシー

SMTP サーバの構築方法とクライアントからのメール送信方法についてはこちらの記事に記載しています。

禁止ワードチェック

設定内容

以下内容で禁止ワードチェックを設定してみます。

  • 対象ポリシー: クライアントから SMTP サーバへの SMTP を許可するポリシー
  • 禁止ワードチェック:
    • ワードパターンタイプ: ワイルドカード
    • ワードパターン: *test*
    • スコア: デフォルト (10)
    • しきい値: デフォルト (10)

設定手順は以下の通りです。

  1. 禁止ワードリストの作成
  2. Eメールフィルタプロファイルでの設定
    • 禁止ワードチェックの有効化
    • 禁止ワードチェックのしきい値の設定
    • 禁止ワードリストの設定
    • SMTP に対するアクションの設定
  3. ポリシーへの Eメールフィルタプロファイルの適用

まず config emailfilter bword で禁止ワードリストを作成します。設定内容は以下の通りです。set name は禁止ワードリストの表示名のため、任意の名前で OK です。

FW01 # show emailfilter bword
config emailfilter bword
    edit 1
        set name "banned"
        config entries
            edit 1
                set pattern "*test*"
            next
        end
    next
end

FW01 # show full-configuration emailfilter bword
config emailfilter bword
    edit 1
        set name "banned"
        set comment ''
        config entries
            edit 1
                set status enable
                set pattern "*test*"
                set pattern-type wildcard
                set action spam
                set where all
                set language western
                set score 10
            next
        end
    next
end

外側の edit が一つの禁止ワードリスト、内側の config entries 内の edit が一つの禁止ワードを意味します。

禁止ワードリストを作成できたら、それを Eメールフィルタプロファイルに適用します。

config emailfilter profile
    edit "testProfile"
        set options bannedword
        set spam-bword-threshold 10
        set spam-bword-table 1
    next
end
  • set options bannedword
    • 禁止ワードチェックを行う場合は、値に bannedword を含めます
  • set spam-bword-threshold 10
    • 禁止ワードチェック時のしきい値です
    • デフォルト (10) のままにする場合は明示的に設定する必要はありません
  • set spam-bword-table 1
    • プロファイルに適用する禁止ワードリストを指定します
    • config emailfilter bword の edit 名(外側のもの)を値として指定します

最後に、必要に応じて SMTP でスパムを検知した際のアクションを設定します。ここでは例として discard (破棄) を設定します。

config emailfilter profile
    edit "testProfile"
        config smtp
            set action discard
        end
    next
end

作成した Eメールフィルタプロファイルをポリシーに適用します。

config firewall policy
    edit 5
        set name "int2_to_dmz_smtp"
        set emailfilter-profile "testProfile"
    next
end

これで設定は完了です。

ちなみに、Eメールフィルタプロファイルに対して以下の設定をして禁止ワードチェックを有効化している間は、GUI の Eメールフィルタプロファイル編集画面で禁止ワードの設定ができるようになります。

config emailfilter profile
    edit "testProfile"
        set options bannedword
    next
end

GUI の「禁止ワード」として表示される名前は、config emailfilter bwordedit 内で設定した set name の値に対応します。

動作確認

SMTP クライアントから以下の内容のメールを送信してみます。

  • 件名: “testmail”
  • 本文: “mail test test test test”

禁止ワードパターンの「*test*」に合致し、スコア 10 が加算され、しきい値の 10 に達するため、このメールはスパムと判定されて破棄されます。

GUI の転送トラフィックログでは UTM で拒否されたことを確認できます。

アンチスパムログでは禁止ワードチェックによって拒否されたことを確認できます。

ブロック/許可リスト

Eメールフィルタプロファイルでローカルオーバーライド(set local-override)が無効の場合(デフォルトで無効)禁止ワードチェックより前にブロック/許可リストでの判定が行われます。

そこで、上の禁止ワードチェックの設定を維持した状態で、ブロック/許可リストで SMTP クライアントからのメールを許可する設定をして、メールが許可されるかを確認してみます。

設定内容

ブロック/許可リストについては GUI で設定が可能です。

対象の Eメールフィルタプロファイル編集画面で、ブロック/許可リストを有効化し、エントリの新規作成を行います。

ここでは、IP/ネットマスクで SMTP クライアントセグメントを指定して、アクションとしてクリアとしてマークを選択します。

◆CLI で設定する場合

CLI で設定する場合は、禁止ワードチェックと同じように、まずブロック/許可リストを作成して、それを Eメールフィルタプロファイルに適用するという流れになります。

ブロック/許可リストに該当するコンフィグは config emailfilter block-allow-list です。

FW01 # show full-configuration emailfilter block-allow-list
config emailfilter block-allow-list
    edit 2
        set name "testProfile"
        set comment ''
        config entries
            edit 1
                set status enable
                set type ip
                set action clear
                set addr-type ipv4
                set ip4-subnet 10.1.20.0 255.255.255.0
            next
        end
    next
end

ブロック/許可リストを Eメールフィルタプロファイルに適用します。

config emailfilter profile
    edit "testProfile"
        set options bannedword spambal
        set spam-bal-table 2
    next
end

ブロック/許可リストを設定する場合には、上記のように set optionsspambal を含める必要があります。ここでは禁止ワードチェックも行うため bannedword も含めています。set spam-bal-table では適用するブロック/許可リストを config emailfilter block-allow-list での edit 名で指定します。

動作確認

禁止ワードチェックの動作確認時と同様に SMTP クライアントから以下の内容のメールを送信してみます。

  • 件名: “testmail”
  • 本文: “mail test test test test”

禁止ワードチェックよりもブロック/許可リストが先に評価されるため、結果として、メールは通過できます。

GUI の転送トラフィックログではブロックされずに許可されたことを確認できます。

アンチスパムログではブロック/許可リストによって許可されたことを確認できます。この場合、ログ上でのアクション表記は exempted になります。

「タグ」アクションでメール件名にタグ付けする

スパムと判定されたメールに対して、件名にタグ付けする(頭に文字列を付加する)動作の確認をしてみます。

Eメールフィルタプロファイル、及び適用先ポリシーの機能セット(インスペクションモード)が「フロー」の場合は、タグ付けアクションが正常に動作せずにメールが破棄されることを確認しています。タグ付けアクションを使用する場合は機能セット(インスペクションモード)を「プロキシ」にすることを推奨します。

設定内容

以下の通り、スパムアクションを「タグ」、タグの挿入箇所を「サブジェクト」、タグ形式を「Spam」と設定します。

この設定によってスパムメールの件名に「Spam」が付加される想定です。

◆CLI で設定する場合

CLI で設定する場合は、Eメールフィルタプロファイル内のプロトコルごとの config 階層で各項目を設定します。SMTP に関して設定する場合は以下の通りです。

config emailfilter profile
    edit "testProfile"
        config smtp
            set action tag    '←スパムアクション'
            set tag-type subject spaminfo    '←タグの挿入箇所'
            set tag-msg "Spam"     '←タグ形式'
        end
    next
end

動作確認

SMTP クライアントから以下の内容のメールを送信してみます。

  • 件名: “testmail”
  • 本文: “mail test test test test”

結果、受信側では以下のようなメールを受信します。

件名に「Spam」が付加されていることが確認できます。

GUI のアンチスパムログでは、以下のようにアクションが tagged と表示されます。

FortiGuard スパムフィルタリングの URL チェックの動作確認

FortiGuard スパムフィルタリングの URL チェックは、Eメール本文に表示されるすべての URL を確認のために FortiGuard サービスに送信し、FortiGuard URL ブロックリストに URL が存在する場合スパムとして扱います。この機能を確認します。

設定内容

以下のように Eメールフィルタプロファイルの [FortiGuardスパムフィルタリング > URLチェック] を有効化します。

なお、スパムアクションは「タグ」としています。

◆CLI で設定する場合

CLI で設定する場合は、以下のように Eメールフィルタプロファイル内の set options の設定値に spamfsurl を含めます。

config emailfilter profile
    edit "testProfile"
        set options spamfsurl
    next
end

動作確認

SMTP クライアントからメールを送信しますが、このときメール本文に FortiGuard URL ブロックリストに含まれる URL を記載しておきます。

そのような URL はリストとしては公開されていませんが、FortiGuard の Anti-Spam Service ページで、ブロックリストに含まれるかどうかを調べることはできます。

メール送信した結果、GUI のアンチスパムログでは以下のようなログを確認できます。

スパムアクションを「タグ」としていたため、アクションは tagged になっています。

ログ詳細のメッセージ欄では以下のように「email is reported as spam by ASE」と表示されます。

Eメールフィルタに関する注意点

  • SMTPS, IMAPS, POP3S を使用したメール送受信について検査するためには SSL インスペクションを併せて使用する必要があります
  • ブロック/許可リストでのアクションとして「スパムとしてマーク」を選択した場合、最終的なアクションはプロトコルごとのスパム検知時のアクション設定に依存します
    • プロトコルごとのスパム検知時のアクションが「破棄」であればメールは破棄され、一方「転送」であればメールは通過します

ポリシー及び Eメールフィルタプロファイルのインスペクションモード(機能セット)が「フロー」の場合に以下の事象が発生することを確認しています。

  • プロトコルごとのスパム検知時のアクションとして「タグ」を選択した場合、メールは通過できるはずだが、実際の動作としてはメールが破棄される
  • Eメールフィルタ関連の設定を変更してから FortiGate の動作に反映されるまでに、数分のタイムラグがある場合がある。または FortiGate を再起動するまで反映されない

上の事象から、アクションとして「タグ」を使用する場合はインスペクションモード(機能セット)を「プロキシ」にすることを推奨します。

ただし、プロキシベースであっても、設定変更後に動作に反映されない事象が発生する場合があることを確認しています。

Eメールフィルタにも対応したコンフィグ解析ツール

当ブログではオリジナルの FortiGate コンフィグ解析ツールを公開しています。

Eメールフィルタ関連のコンフィグについても解析が可能です。

以下記事から是非ご確認ください。

◆config emailfilter profile の解析結果例

◆config emailfilter bword の解析結果例

◆config emailfilter block-allow-list の解析結果例

参考資料

Email filter | Administration Guide
emailfilter | CLI Reference
Technical Tip: How to run antispam debugging when '# diagnose debug application emailfilter is not available
DescriptionThisarticledescribesaboutthecommand'#diagnosedebugapplicationemailfilter'andhowtorunantispamdebugging.SolutionHowtorunantispamdebuggingBeforeFortiOS6...
Debug spamfilter
Hi,fortigatemarkssomee-mailsfromthesamesourceasaspam.Tryedtodebug:#diagdebugenable#diagdebugappspamfilter3ButindebugoutputIdontfindthatanyofe-mailwouldgetVerdic...
Fortiguard
Technical Tip: Using filters to clear sessions on a FortiGate unit
DescriptionThisarticleexplainshowtousefilterstoclearsessionsonaFortiGateunit,basedontheCLIcommand: diagnosesyssession ScopeFortiGateunits,runningaFortiOSfirmwar...
Using our spam blacklists (2005-07-11)

タイトルとURLをコピーしました