作業環境
- FortiGate 60E
- version 7.0.5
Eメールフィルタ概要
Eメールフィルタ機能では、スパムの検出やフィルタリングを実行できます。一部のEメールフィルタ機能については FortiGuard Antispam サブスクリプションが必要になります。
フィルタオプションの 3 つの分類
FortiGate のフィルタオプションは、その判定ソースから以下の 3 つに分類されます。
- ローカルベースのフィルタ
- ブロック/許可リスト、禁止されたワード、FortiGuard Antispam を使用した DNS チェックなど、ローカル条件に基づきフィルタされる
- FortiGuard ベースのフィルタ
- FortiGuard Antispam から返されたスコアまたは判定に基づいてフィルタされる
- サードパーティベースのフィルタ
- サードパーティのソース(オープンリレーブラックリストなど)の情報に基づいてフィルタされる
インスペクションモード(機能セット)による機能差分
以下表の通り、MAPI についてはプロキシでのみ対応しています。
\ | SMTP | POP3 | IMAP | MAPI |
プロキシ | ● | ● | ● | ● |
フロー | ● | ● | ● | × |
ローカルベースのフィルタ
ローカルベースのフィルタには以下の 6 種類があります。
- HELO DNSルックアップ
- リターンEメールDNSチェック
- ブロック/許可リスト
- 禁止ワード
- 信頼できる IP アドレス
- MIME ヘッダ
HELO DNSルックアップ
- SMTP クライアントが SMTP サーバとの SMTP セッションを開く度に、クライアントはクライアントドメイン名を使用して HELO コマンドを送信します
- FortiGate は、HELO でクライアントによって指定されたドメイン名を取得し、DNS ルックアップを実行してドメインが存在するかどうかを判断します
- このルックアップが失敗した場合、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 種類があります。
- IPアドレスチェック
- URLチェック
- Eメール内のフィッシングURLを検知
- Eメールチェックサムのチェック
- スパム報告
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 に対する適用順序
- MIME ヘッダのチェック、メールアドレスのブロック/許可リストのチェック
- メールの件名の禁止ワードチェック
- IP のブロック/許可リストのチェック
- メール本文の禁止ワードチェック
- リターン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つを設定しています。
- クライアントから SMTP サーバへの SMTP を許可するポリシー
- SMTP サーバからインターネットへの SMTP を許可するポリシー

※SMTP サーバの構築方法とクライアントからのメール送信方法についてはこちらの記事に記載しています。
禁止ワードチェック
設定内容
以下内容で禁止ワードチェックを設定してみます。
- 対象ポリシー: クライアントから SMTP サーバへの SMTP を許可するポリシー
- 禁止ワードチェック:
- ワードパターンタイプ: ワイルドカード
- ワードパターン:
*test*
- スコア: デフォルト (10)
- しきい値: デフォルト (10)
設定手順は以下の通りです。
- 禁止ワードリストの作成
- Eメールフィルタプロファイルでの設定
- 禁止ワードチェックの有効化
- 禁止ワードチェックのしきい値の設定
- 禁止ワードリストの設定
- SMTP に対するアクションの設定
- ポリシーへの 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 bword
の edit
内で設定した 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 options
に spambal
を含める必要があります。ここでは禁止ワードチェックも行うため bannedword
も含めています。set spam-bal-table
では適用するブロック/許可リストを config emailfilter block-allow-list
での edit
名で指定します。
動作確認
禁止ワードチェックの動作確認時と同様に SMTP クライアントから以下の内容のメールを送信してみます。
- 件名: “testmail”
- 本文: “mail test test test test”
禁止ワードチェックよりもブロック/許可リストが先に評価されるため、結果として、メールは通過できます。
GUI の転送トラフィックログではブロックされずに許可されたことを確認できます。

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


「タグ」アクションでメール件名にタグ付けする
スパムと判定されたメールに対して、件名にタグ付けする(頭に文字列を付加する)動作の確認をしてみます。
設定内容
以下の通り、スパムアクションを「タグ」、タグの挿入箇所を「サブジェクト」、タグ形式を「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メールフィルタにも対応したコンフィグ解析ツール
当ブログではオリジナルの FortiGate コンフィグ解析ツールを公開しています。
Eメールフィルタ関連のコンフィグについても解析が可能です。
以下記事から是非ご確認ください。
◆config emailfilter profile の解析結果例

◆config emailfilter bword の解析結果例

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

参考資料
