Messaging Server 支援使用普遍且免費提供的協力廠商病毒掃描器 ClamAV,以偵測是否有訊息感染病毒與特洛伊木馬病毒。ClamAV 用以偵測新建立的病毒之病毒簽章可使用 ClamAV 套裝軟體隨附的 freshclam 公用程式自動更新。
在 ClamAV 網站上可找到更多關於 ClamAV 的資訊。
Messaging Server 中的 ClamAV 整合利用提供做為 ClamAV 套裝軟體一部分的 clamd 常駐程式。clamd 是在通訊端上偵聽處理郵件的請求之多重執行緒程序。處理程序之後,會傳回回應並關閉連線。不會使用用戶端部分 clamdscan (來自 ClamAV 安裝)。此功能會由名為 libclamav.so 之 Messaging Server 一部分的共用程式庫完成。
libclamav.so 的載入方式與 Brightmail SDK 的載入方式相同。
ClamAV 可以在其自身的獨立系統上執行,在與 Messaging Server 在單一系統部署中相同的系統上執行,或在與 MTA 在兩層式部署中相同的系統上執行。如果在 MTA 與郵件儲存之間使用本機郵件傳送協定 (LMTP),則必須從 MTA 呼叫篩選,而不可從郵件儲存呼叫篩選。在 MTA 與郵件儲存之間使用 SMTP 時,可從這兩者其中之一呼叫 SMTP。
如果需要使用執行 ClamAV 的伺服器陣列,請在之前使用負載平衡器。僅使用一個位址來為 ClamAV 伺服器配置 MTA。
其他注意事項。
ClamAV 為免費軟體。請至 http://clamav.net 以取得軟體與文件。
可以為使用者、網域或通道啟用與 MTA 整合的 ClamAV。
ClamAV 套裝軟體提供定期更新病毒簽章的公用程式。此公用程式稱為 freshclam。請參閱 ClamAV 套裝軟體文件以取得更多資訊。
Messaging Server 2006Q4 與更新的版本預設會隨附 libclamav.so 程式庫。
執行以下步驟以部署 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 指定對感染病毒的電子郵件執行篩選動作。
指定要篩選的郵件。
若要篩選進入本機郵件儲存的所有郵件,請將 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 |
重新編譯配置並重新啟動伺服器。
僅 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 格式的多行所組成。唯一的必要選項為 HOST。必須設定為執行 clamd 所在系統的名稱。即使 clamd 伺服器在本地主機上執行,也必須設定此選項。
下列顯示可用於此選項檔案的更多其他選項。
表 14–7 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 結果的轉換成為判定結果資訊。可使用四種不同的模式: 0 - 如果發現郵件包含病毒,則傳回 VERDICT 選項所指定的判定結果字串;否則傳回預設的判定結果。如果 VERDICT 選項為空的或未指定,則傳回空的判定結果。 1 - 如果發現郵件包含病毒,則傳回 ClamAV 結果做為判定結果;否則傳回預設的判定結果。 2 - 無條件地傳回 ClamAV 結果字串;未傳回預設判定結果或空判定結果,並且從未使用 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 |
指定用於模式 0 和 3 的判定結果字串。 |
"" |