最終回では、Dr.Web for Linux/FreeBSD/Solaris(x86)のプラグインにフォーカスを当て、設定方法について紹介します。
はじめに
Dr.Web for Linux/FreeBSD/Solaris(x86)(以降、単にDr.Web)を使った、迷惑メール対策を紹介しています。前回 はDr.Web for Linuxのメールデーモンに付属する3つのフィルタリング・プラグインを紹介し、その組み合わせ方を解説しました。今回は、各プラグインごとの設定をとおしてメールサーバの運用に活用できる事例をケーススタディで紹介します。
連載ではLinuxディストリビューション・CentOSを例に、MTAとしてPostixがインストールされたメールサーバに、Dr.Web for Linuxを組み込み解説しています。今回も引き続き同様の環境で作業を行うことをにします。
LinuxでPostfixとともにDr.Webメールデーモンを使用している場合、プラグインの設定は「/etc/drweb/」ディレクトリにある各ファイルを利用します。設定ファイル修正後、内容を反映させるためにメールデーモンの設定再読込を忘れないように実行します。
# /etc/init.d/drweb-monitor reload
ヘッダフィルタ・プラグインの活用
ヘッダフィルタ・プラグインはメールヘッダや添付ファイルの情報をもとにフィルタリングを実施します。たとえばメールヘッダの「Subject」に特定の語彙を含むメールや、「 From」に指定されたドメイン名が使われているメールを受信拒否することができます。また添付ファイルについても危険性の高いファイルを受信拒否するよう、拡張子をフィルタリングの条件に加えることができます。
ヘッダフィルタ・プラグインの設定は「plugin_headersfilter.conf」ファイルの[HeadersFilter]セクションで行います。
【ケース1】SubjectやFromでメールを拒否する
メールヘッダを条件に受信拒否するには「RejectCondition」を使って「RejectCondition = ヘッダ名 = 条件」のように記述します。たとえばexample.jpドメインから送信されるメールを受信拒否するには、メールヘッダ・Fromにexample.jpが含まれているものを拒否するよう、次のような1行を「plugin_headersfilter.conf」ファイルの[HeadersFilter]セクションに追記します。
RejectCondition = From = "@example.jp"
ヘッダ名はRFC2822で定義されているTo/Cc/Subject/Date...といったものが使用できます。条件は正規表現で記述できます。たとえばSubjectが「spam」で始まるメールを受信拒否するには次のような1行を追記します。
RejectCondition = Subject = "^spam"
(※「^」は正規表現で行頭を表します)
条件を「AND」や「OR」で結合させることも可能です。
Fromに「@example.jp」を含むもの、かつSubjectが「spam」ではじまるもの
RejectCondition = From = "@example.jp" AND Subject = "^spam"
Fromに「@example.jp」を含むもの、またはSubjectが「spam」ではじまるもの
RejectCondition = From = "@example.jp" OR Subject = "^spam"
【ケース2】Subjectでメールを拒否する際に、日本語を条件に加える
Subjectに含まれる文字列を受信拒否条件にする際、「 未承諾広告...」のような日本語を含む文字列を条件に指定する場合、RejectConditionの右辺に日本語を記載しても正しく評価されません。メールのSubjectに日本語を使用するには、ISO-2022-JP(7bit JIS)に文字コードを変換した後、BASE64でエンコードします。そのためRejectConditionの条件文にもISO-2022-JP/BASE64に変換した文字列を指定する必要があります。次のようにnkfコマンドでエンコードすることができます。
nkfコマンドで文字列をISO-2022-JPに変換します
$ echo 広告 | nkf -M -j
=?ISO-2022-JP?B?GyRCOS05cBsoQ
「=?ISO-2022-JP?B?」以降を条件文にコピーします
RejectCondition = Subject = "GyRCOS05cBsoQ"
(※ISO-2022-JP/BASE64でエンコードされていないものには一致しません)
【ケース3】添付ファイルの拡張子でメールを拒否する
ウィルスメールの多くが添付ファイルを媒介に感染します。危険性のある添付ファイルには「.EXE」「 .COM」「 .BAT」「 .CMD」「 .PIF」「 .SCR」といった拡張子が使われます。感染の有無に関わらず、添付ファイルにこれらの拡張子が使われているものを受信拒否することで、危険性を低減することができます。次のような行を「plugin_headersfilter.conf」ファイルの[HeadersFilter]セクションに追記します。
RejectPartCondition = FileName = ".exe$"
RejectPartCondition = FileName = ".com$"
RejectPartCondition = FileName = ".scr$"
...
(※「$」は正規表現で行末を表します。)
( ※scrはWindowsのスクリーンセーバのファイルです。)
添付ファイルの拡張子で受信を拒否する際には、そうしたファイルをメールで受け取ることができないことを利用者に周知しておく必要があります。またテキストファイル(.txt)や画像ファイル(.jpgなど)を装ったウィルスファイルも皆無とは言えないため、必ずウィルスチェック・プラグインを併用するようにしましょう。
アンチウィルス・プラグインの活用
コンピュータウィルス/ワーム/スパイウェア/アドウェアといったマルウェアがメールに含まれていないか検査するには、Dr.Webデーモンと連携したアンチウィルス・プラグインを利用します。設定は「plugin_drweb.conf」ファイルの[Antivirus]セクションで行います。
【ケース4】ウィルス感染メールの受信を拒否する
ウィルスに感染したメールを受信した際、Dr.Webのデフォルトではウィルス駆除が行われますが、否応なくメッセージの受け取りを拒否することもできます。「 plugin_drweb.conf」ファイルの[Antivirus]セクションに次の1行を追加します。
Infected = reject
(第2回 で紹介したサンプル検体でテストする場合は、Infectedのかわりに「Incurable 」で設定します。)
reject以外にも、次のような基本処理を行うことができます。指定は1つのみです。基本処理を複数指定することはできません。
cure 感染オブジェクトを修復します
remove 感染オブジェクトを削除します
discard メッセージを通知無しに削除します
pass メッセージの受信を許可します
reject メッセージの受信を拒否します
tempfail 一時エラーを発生させます
基本処理は1つですが、追加処理が3タイプ用意されています。たとえばウィルス感染メールが送られてきたことを、受信者/送信者/管理者に通知するには「notify」を追加処理に指定します。
Infected = reject, notify
(第2回 で紹介したサンプル検体でテストする場合は、Infectedのかわりに「Incurable 」で設定します。)
追加処理には次の3種類が用意されています。1つだけ指定することも、すべて指定することもできます。
quarantine メッセージを隔離ディレクトリ(/var/drweb/infected/drweb)に移動します。
redirect[(○○)] メッセージを○○宛に転送します。( 指定の例: redirect(foo@example.jp))
notify 通知メッセージを送付します。
アンチスパム・プラグインの活用
スパムメールを検知し処理するにはアンチスパム・プラグインを利用します。Dr.Webはアンチウィルスと並び強力なスパム判定ロジックを採用しています。たとえば新手の迷惑メールに対してもヒューリスティック解析で、過去のフィルタリングデータから迷惑メールと判断することができます。高い分析力にも関わらず設定は自動化されており、特段手を加える必要はありません。さらにデフォルトで無効にされている機能を有効にすることで、多彩なマンアンチスパム機能を活用することができます。アンチスパム・プラグインの設定は「plugin_vaderetro.conf」ファイルの[VadeRetro]セクションで行います。
【ケース5】スパム判定を2段階に分けて処理する
Dr.Webのアンチスパム・プラグインはスパムメールに対する処理を2段階に分けて設定することができます。スパムメールの判定にはヒューリスティック解析の他、スパム送信ドメインのチェックなど様々な検出ロジックが用いられ、判定結果はスコアとして算出されます。設定された閾値をスコアが超えればスパムメールとして処理されますが。さらに閾値を2段階に分けて設定することで、スコアが低いスパムメールと、高いスパムメールに分けて処理を設定することができます。
たとえばスコアが低いものは件名に[SPAM]と差し込み、スコアが高いものは配信を中止しメールを破棄するといったことが可能になります。
スコアが100~299のスパムメールは件名に[SPAM]を挿入し配信する。
スコアが300以上のスパムメールは配信せず破棄する。
上の条件でスパムメールを処理するには、「 plugin_vaderetro.conf」ファイルの[VadeRetro]セクションで次のように設定します。
SubjectPrefix = "[SPAM] "
SpamThreshold = 100
UnconditionalSpamThreshold = 300
Action = pass
UnconditionalAction = discard
「SubjectPrefix」でスパムメールの件名に差し込む文字列を指定し、「 SpamThreshold」でスパムと判定する際の閾値を、「 UnconditionalSpamThreshold」で2段階目の閾値を設定します。「 Action」ではスパム判定の1段階目で行われる処理を指定し、「 UnconditionalAction」では2段階目の処理を指定します。passやdiscardの他に指定できる処理には次のものがあります。「 基本処理」として1つ、オプションで「追加処理」を1つ指定することができます。
【基本処理】
discard メッセージを通知無しに削除します
pass メッセージの受信を許可します
reject メッセージの受信を拒否します
tempfail 一時エラーを発生させます
【追加処理】
quarantine メッセージを隔離ディレクトリ( /var/drweb/infected/vaderetro/)に移動します
redirect[(○○)] メッセージを○○宛に転送します。( 指定の例: redirect(foo@example.jp))
【指定例】
UnconditionalAction = discard,quarantine
なお件名の他スパムメールかどうか、スパム判定で算出されたスコアが次のようなヘッダ情報としてメールに付加されます。各メールクライアントはこの値をもとに、フォルダ振り分け機能で処理することができます。
X-Drweb-SpamState: yes
X-Drweb-SpamScore: 200
この他、Dr.Webのアンチスパム・プラグインは、一般的なスパムフィルタ同様、「 ホワイトリスト」や「ブラックリスト」を設定することもできます。メール送信者のアドレスやドメイン名をブラックリストでもれなくスパムメールと判定したり、ホワイトリストで除外することができます。自動的に行われるDr.Webの強力なスパム判定とともに、手動による判別・フィルタリングも可能です。
おわりに
4回にわたり、Dr.Web for Linuxを使った迷惑メール対策の方法を解説しました。簡単なインストールで迷惑メール・ウィルスメール対策が整う一方、細かな調整も今回紹介したような方法で可能となっています。ここで紹介した活用事例はほんの一例です。Dr.Web for Linuxは他にも多くの設定項目を備え、各サイトの運用ポリシーにあわせたチューニングが可能です。製品に付属するマニュアルにはそうした細かな設定方法が紹介されており、無償で利用できるトライアル版にも同様のマニュアルが付属しています。本連載とともにぜひ参考にしてください。