Sun Java System Messaging Server 6.3 管理指南

14.6 使用 ClamAV

Messaging Server 支援使用普遍且免費提供的協力廠商病毒掃描器 ClamAV,以偵測是否有訊息感染病毒與特洛伊木馬病毒。ClamAV 用以偵測新建立的病毒之病毒簽章可使用 ClamAV 套裝軟體隨附的 freshclam 公用程式自動更新。

在 ClamAV 網站上可找到更多關於 ClamAV 的資訊。

14.6.1 ClamAV/Messaging Server 作業原理

Messaging Server 中的 ClamAV 整合利用提供做為 ClamAV 套裝軟體一部分的 clamd 常駐程式。clamd 是在通訊端上偵聽處理郵件的請求之多重執行緒程序。處理程序之後,會傳回回應並關閉連線。不會使用用戶端部分 clamdscan (來自 ClamAV 安裝)。此功能會由名為 libclamav.so 之 Messaging Server 一部分的共用程式庫完成。

libclamav.so 的載入方式與 Brightmail SDK 的載入方式相同。

14.6.2 ClamAV 需求與用法注意事項

ClamAV 可以在其自身的獨立系統上執行,在與 Messaging Server 在單一系統部署中相同的系統上執行,或在與 MTA 在兩層式部署中相同的系統上執行。如果在 MTA 與郵件儲存之間使用本機郵件傳送協定 (LMTP),則必須從 MTA 呼叫篩選,而不可從郵件儲存呼叫篩選。在 MTA 與郵件儲存之間使用 SMTP 時,可從這兩者其中之一呼叫 SMTP。

如果需要使用執行 ClamAV 的伺服器陣列,請在之前使用負載平衡器。僅使用一個位址來為 ClamAV 伺服器配置 MTA。

其他注意事項。

14.6.3 部署 ClamAV

執行以下步驟以部署 ClamAV:

Procedure使用 ClamAV 捨棄感染病毒或特洛伊木馬病毒的電子郵件

下列範例捨棄發現包含 ClamAV 偵測到的病毒或特洛伊木馬病毒之所有郵件。不使用判定結果字串。

  1. 建立 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 程式庫中的除錯處理。

    hostport 指定執行 clamd 的系統名稱和 clamd 偵聽內送請求時所在的連接埠。

    mode=1 指定 ClamAV 外掛程式傳回 ClamAV 結果字串,做為偵測到電子郵件感染病毒時的判定結果。

  2. 修改 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 指定對感染病毒的電子郵件執行篩選動作。

  3. 指定要篩選的郵件。

    若要篩選進入本機郵件儲存的所有郵件,請將 destinationspamfilterXoptin 病毒關鍵字增加至 ims-ms 通道,以變更 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
  4. 重新編譯配置並重新啟動伺服器。

    僅 MTA 需要重新啟動。無需執行 stop-msg。


     # imsimta cnbuild
    # imsimta restart
  5. 啟動 clamd 常駐程式。

14.6.4 測試 ClamAV

若要測試 ClamAV,請先在 clamav.opt 檔案中設定 debug=1。(您不需要開啟 imta.cnf 中通道專屬的 master_debugslave_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

14.6.5 ClamAV 選項

ClamAV 選項檔案是一般的郵件傳送樣式選項之檔案,由 option=value 格式的多行所組成。唯一的必要選項為 HOST。必須設定為執行 clamd 所在系統的名稱。即使 clamd 伺服器在本地主機上執行,也必須設定此選項。

下列顯示可用於此選項檔案的更多其他選項。

表 14–7 ClamAV 選項

選項 

說明 

預設值 

DEBUG 

啟用或停用 ClamAV 介面模組的除錯輸出。(從 clamd 本身的除錯輸出會由 clamd 指令行上的選項所控制。)值愈大,會產生愈多除錯輸出。0 不會產生輸出。1 會提供基本除錯。2 會從 clamd 增加 TCP 通訊記錄。

FIELD 

指定 ClamAV 結果字串字首。ClamAV 結果字串一般會類似下列其中之一: 


Virus-Test: False 
Virus-Test: True ; Worm.Mydoom.I

FIELD 選項提供了變更結果的 Virus-Test 部分的方法。請注意,如果指定空的 FIELD 值,也會移除「:」。

「Virus-Test」 

MESSAGE_BUFFER_SIZE 

由於 clamdscan/clamd 介面的本質,ClamAV 外掛程式必須在記憶體中緩衝郵件,再傳送至 ClamAV。此選項會控制緩衝區記憶體大小。預設為 1,048,576 個字元。超過長度的郵件會遭截斷而無法完整傳送至 ClamAV。為了確保每封郵件皆完整掃描,此值應反映 MTA 將接受的郵件大小上限。降低此值或許可以加速病毒掃描時間,但偵測病毒時會有所遺漏。

1048576 

MODE

控制 ClamAV 結果的轉換成為判定結果資訊。可使用四種不同的模式: 

0 - 如果發現郵件包含病毒,則傳回 VERDICT 選項所指定的判定結果字串;否則傳回預設的判定結果。如果 VERDICT 選項為空的或未指定,則傳回空的判定結果。

1 - 如果發現郵件包含病毒,則傳回 ClamAV 結果做為判定結果;否則傳回預設的判定結果。 

2 - 無條件地傳回 ClamAV 結果字串;未傳回預設判定結果或空判定結果,並且從未使用 VERDICT 選項。

3 - 如果發現郵件包含病毒,則傳回 ClamAV 結果做為判定結果;否則傳回 VERDICT 選項所指定判定結果字串。

PORT

指定 clamd 執行所在的連接埠。

3310 

SOCKS_HOST

指定中間 SOCKS 伺服器的名稱。如果已指定此選項,則可透過指定的 SOCKS 伺服器間接地建立 clamd 連線。

3310 

SOCKS_PORT

指定中間 SOCKS 伺服器執行所在的連接埠。 

1080 

SOCKS_PASSWORD

指定透過 SOCKS 伺服器建立連線時所使用的密碼。是否需要使用者名稱密碼視 SOCKS 伺服器的配置而定。 

"" 

SOCKS_USERNAME

指定透過 SOCKS 伺服器建立連線時所使用的使用者名稱。 

"" 

VERDICT

指定用於模式 0 和 3 的判定結果字串。 

""