Messaging Server では、ウイルスやトロイの木馬に感染したメッセージを検出するために、広く普及していて無料で使用可能な他社のウイルススキャナである ClamAV の使用をサポートしています。新しく作成されたウイルスを検出するために ClamAV で使用されるウイルスシグニチャーは、ClamAV ソフトウェアパッケージに付属する freshclam ユーティリティーを使用することで、自動的に更新することができます。
ClamAV の詳細は、ClamAV の Web サイトを参照してください。
Messaging Server に統合された ClamAV は、clamd デーモンを利用します。このデーモンは、ClamAV パッケージに含まれています。clamd は、メッセージを処理する要求をソケットで待機するマルチスレッドプロセスです。メッセージを処理したら、応答を送り返し、接続を閉じます。ClamAV インストールによるクライアント部分、clamdscan は、使用されません。この機能は、Messaging Server の一部である共有ライブラリ libclamav.so によって行われます。
libclamav.so は、Brightmail SDK の読み込みと同じように読み込まれます。
ClamAV は、それ自体が置かれている個々のシステム上、単一のシステム配備の Messaging Server と同じシステム上、または 2 層配備の MTA と同じシステム上で実行できます。MTA とメッセージストア間で Local Mail Transfer Protocol (LMTP) が使われている場合、フィルタ処理は MTA から呼び出す必要があります。メッセージストアから呼び出すことはできません。SMTP が MTA とメッセージストア間で使用される場合は、どちらからも呼び出すことができます。
ClamAV が稼働しているサーバーのファームを使用する場合は、その前でロードバランサを使用してください。MTA は、ClamAV サーバー用に 1 つのアドレスのみを持つよう設定されます。
その他の考慮事項は次のとおりです。
ClamAV は無料です。ソフトウェアやマニュアルを入手するには、http://clamav.net を参照してください。
MTA と統合された ClamAV は、ユーザー、ドメイン、またはチャネルに対して有効にできます。
ClamAV パッケージでは、定期的にウイルスシグニチャーを更新するためのユーティリティーが提供されています。このユーティリティーは、freshclam と呼ばれます。詳細については、ClamAV パッケージ のマニュアルを参照してください。
libclamav.so ライブラリは、デフォルトで Messaging Server 2006Q4 以上に付属しています。
次に示す手順を実行して、ClamAV を配備します。
ClamAV をインストールして構成します。インストールおよび設定情報については、ClamAV ソフトウェアマニュアルを参照してください。「14.6.5 ClamAV オプション」も参照してください。
ClamAV のクライアントライブラリをロードおよび構成します。このためには、クライアントライブラリ libclamav.so と設定ファイルを MTA に対して指定する必要があります (ファイルは作成する必要がある)。「14.2.1 スパムのフィルタ処理ソフトウェアのクライアントライブラリをロードおよび構成する」を参照してください。
スパム用にフィルタ処理するメッセージを指定します。ユーザー、ドメイン、またはチャネルごとにメッセージをフィルタ処理できます。「14.2.2 フィルタ処理を行うメッセージを指定する」を参照してください。
ウイルスメッセージに対して実行するアクションを指定します。「14.2.3 スパムメッセージに対して実行するアクションを指定する」を参照してください。
必要に応じてほかのフィルタ設定パラメータを設定します。「14.6.5 ClamAV オプション」を参照してください。
次の例では、ClamAV によって検出されたウイルスやトロイの木馬が含まれることが判明したすべてのメッセージを破棄します。判定文字列は使用されません。
ClamAV 構成ファイルを作成します。
このファイルの名前と場所は、手順 2 で指定します。推奨される名前は clamav.opt です。このファイルには、次に示す行が含まれます。
# more /opt/SUNWmsgsr/config/clamav.opt ! ClamAV Settings debug=1 host=127.0.0.1 port=3310 mode=1 |
debug=1 は、ClamAV ライブラリでデバッグをオンにします。
host および port は、clamd が実行されているシステムの名前と、clamd が着信要求を待機するポートです。
mode=1 は、ウイルスに感染した電子メールが検出されると、ClamAV プラグインによって ClamAV 結果文字列が判定として返されることを指定します。
option.dat ファイルを変更します。
option.dat ファイルに、次に示す行を追加します。
! ClamAV settings spamfilter2_config_file=/opt/SUNWmsgsr/config/clamav.opt spamfilter2_library=/opt/SUNWmsgsr/lib/libclamav.so spamfilter2_string_action=data:,require ["jettison"]; jettison; |
spamfilter2_config_file は、ClamAV 構成ファイルを指定します。
spamfilter2_library は、ClamAV 共有ライブラリを指定します。
spamfilter2_string_action は、ウイルスに感染したメッセージに対して実行する Sieve アクションを指定します。
フィルタ処理するメッセージを指定します。
ローカルメッセージストアに届くすべてのメッセージをフィルタ処理するには、ims-ms チャネルの destinationspamfilterXoptin virus を追加して imta.cnf ファイルを変更します。
! ! ims-ms ims-ms defragment subdirs 20 notices 1 7 14 21 28 backoff "pt5m" "pt10m" "pt30m" "pt1h" "pt2h" "pt4h" maxjobs 4 pool IMS_POOL fileinto $U+$S@$D destinationspamfilter2optin virus ims-ms-daemon |
設定をコンパイルしなおし、サーバーを再起動します。
MTA を再起動するだけでかまいません。stop-msg を実行する必要はありません。
# imsimta cnbuild # imsimta restart |
clamd デーモンを起動します。
ClamAV をテストするには、clamav.opt ファイルで debug=1 を設定しておきます。imta.cnf. でチャネル固有の master_debug または slave_debug を有効にしておく必要はありません。次に、EICAR ウイルス文字列 (http://www.eicar.org/anti_virus_test_file.htm) が含まれる添付ファイルをテストユーザーに送信します。この文字列は、実際にはウイルスが添付されていないのに、ウイルスに感染している電子メールであるとウイルススキャナが認識するトリガーとなるように設計されています。
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* |
テストログを確認します。msg-svr-base/data/log/tcp_local_slave.log* ファイルには次のような行があるはずです。
10:39:00.85: ClamAV callout debugging enabled; config /opt/SUNWmsgsr/config/clamav.opt 10:39:00.85: IP address 127.0.0.1 specified 10:39:00.85: Port 3310 selected 10:39:00.85: Mode 1 selected 10:39:00.85: Field "Virus-Test: " selected 10:39:00.85: Verdict "" selected 10:39:00.85: Initializing ClamAV message context ... 10:39:00.85: Creating socket to connect to clamd server 10:39:00.85: Binding clamd socket 10:39:00.85: Connecting to clamd server 10:39:00.85: Sending ClamAV STREAM request 10:39:00.85: Retrieving ClamAV STREAM response 10:39:00.85: STREAM response: PORT 2003 10:39:00.85: Creating socket to connect to clamd server data port 10:39:00.85: Binding clamd data socket 10:39:00.85: Connecting to clamd server data port 10:39:00.85: Sending ClamAV the message 10:39:00.85: Closing ClamAV data connection 10:39:00.85: Reading ClamAV result 10:39:00.87: Result line: stream: Eicar-Test-Signature FOUND 10:39:00.87: Scan result: Message is infected 10:39:00.87: Verdict line: Virus-Test: True ; Eicar-Test-Signature 10:39:00.87: Closing connection to ClamAV 10:39:00.87: Mode 1 verdict of Virus-Test: True ; Eicar-Test-Signature 10:39:00.87: Mode 1 verdict of Virus-Test: True ; Eicar-Test-Signature ... 10:39:00.87: Freeing ClamAV message context |
ログファイルにこのような行が含まれていない場合、または clamd が実行されていない場合は、SMTP サーバーに最後のピリオド (.) が送信されたあと、SMTP ダイアログに次のようなエラーメッセージが返されます。
452 4.4.5 Error writing message temporaries - Error connecting to ClamAV server |
ClamAV オプションファイルは、option=value という形式の行で構成されている、典型的なメッセージングサーバー形式のオプションファイルです。必須のオプションの 1 つが HOST です。clamd が稼働しているシステムの名前を設定する必要があります。clamd がローカルホストで動作していても、このオプションを設定する必要があります。
このオプションファイルで利用可能なその他のオプションの詳細を次に示します。
表 14–8 ClamAV オプション
オプション |
説明 |
デフォルト |
|
---|---|---|---|
DEBUG |
ClamAV インタフェースモジュールからのデバッグ出力を有効または無効にします。clamd 自体からのデバッグ出力は、 clamd コマンド行のオプションによって制御されます。値を大きくすると、生成されるデバッグ出力が増加します。0 は出力を生成しません。1 は基本的なデバッグを行います。2 は、clamd からの TCP トラフィックをログに記録します。 |
0 |
|
FIELD |
ClamAV 結果文字列のプレフィックスを指定します。ClamAV 結果文字列は、一般に次のいずれかのようになります。
FIELD オプションは、結果の Virus-Test 部分の変更方法を提供します。": " も、空の FIELD 値が指定された場合は削除されます。 |
“Virus-Test” |
|
MESSAGE_BUFFER_SIZE |
clamdscan/clamd インタフェースの性質上、ClamAV プラグインは ClamAV にメッセージを送信する前に、メッセージをメモリーにバッファーする必要があります。メモリーバッファーのサイズは、このオプションで制御します。デフォルトは 1,048,576 文字です。これよりも長いメッセージは切り詰められるため、メッセージは完全な形で ClamAV に送信されません。各メッセージの全体がスキャンされるようにするため、この値は、MTA で受け入れられる最大メッセージサイズを考慮するようにしてください。この値を小さくすると、ウイルススキャンにかかる時間を短くすることができる場合もありますが、ウイルスを見逃してしまう可能性もあります。 |
1048576 |
|
MODE |
ClamAV の結果から判定情報への変換を制御します。4 種類のモードを利用できます。 0 - メッセージにウイルスが含まれていることが検出された場合は、VERDICT オプションで指定された判定文字列を返します。そうでない場合は、デフォルトの判定を返します。VERDICT オプションが空か未指定の場合は、NULL の判定が返されます。 1 - メッセージにウイルスが含まれていることが判明した場合は、ClamAV の結果を判定として返します。そうでない場合は、デフォルトの判定を返します。 2 - ClamAV 結果文字列を無条件に返します。デフォルト判定または NULL 判定が返されることはなく、VERDICT オプションが使用されることはありません。 3 - メッセージにウイルスが含まれていると判明した場合は ClamAV の結果文字列を返します。ウイルスが含まれていない場合は VERDICT オプションで指定された判定文字列を返します。 |
0 |
|
PORT |
clamd が稼働しているポートを指定します。 |
3310 |
|
SOCKS_HOST |
中間にある SOCKS サーバーの名前を指定します。このオプションが指定されている場合、指定された SOCKS サーバーを介して clamd 接続が確立され、直接には接続されません。 |
3310 |
|
SOCKS_PORT |
中間にある SOCKS サーバーが動作しているポートを指定します。 |
1080 |
|
SOCKS_PASSWORD |
SOCKS サーバーを介した接続を確立するために使用するパスワードを指定します。ユーザー名およびパスワードが必要かどうかは、SOCKS サーバーの設定によって異なります。 |
"" |
|
SOCKS_USERNAME |
SOCKS サーバーを介した接続を確立するために使用するユーザー名を指定します。 |
"" |
|
VERDICT |
MODE 0 および 3 で使用される判定文字列を指定します。 |
"" |