Sun Java logo     上一個      目錄      索引      下一個     

Sun logo
Sun Java System Messaging Server 6 2005Q1 管理指南 

第 14 章
整合垃圾郵件與病毒篩選程式至 Messaging Server

本章描述如何使用 Messaging Server 整合與配置垃圾郵件與病毒篩選軟體。本章描述的垃圾郵件/病毒篩選技術比轉換通道提供的技術功能更強大 (請參閱「轉換通道」)。Messaging Server 支援 Symantec Brightmail AntiSpam、SpamAssassin,並支援 Internet Content Adaptation Protocol (ICAP, RFC 3507) 的防垃圾郵件/防毒程式 (尤其是 Symantec AntiVirus Scan Engine)。


注意

在本章中,對防垃圾郵件垃圾郵件篩選功能的參照在適用時也可用於防毒病毒篩選功能。某些產品可同時提供兩項功能 (Brightmail),而其他產品可能僅提供垃圾郵件篩選功能 (SpamAssassin) 或僅提供病毒篩選功能 (Symantec AntiVirus Scan Engine)。另請注意 spam 通常用於配置參數。


本章分為以下小節:


將垃圾郵件篩選程式整合至 Messaging Server ─ 作業原理

Messaging Server 防垃圾郵件解決方案採用與一般方案相近的作業方式:

  1. Messaging Server 將郵件的副本傳送至垃圾郵件篩選軟體。
  2. 垃圾郵件篩選軟體對郵件進行分析,並傳回其是否為垃圾郵件的判定結果。某些程式 (例如 SpamAssassin) 可能還會傳回垃圾郵件分值,該分值是郵件可能為垃圾郵件的比率數。
  3. Messaging Server 讀取判定結果,並對郵件進行篩選 (請參閱指定要在垃圾郵件上執行的動作)。

垃圾郵件篩選程式透過某項協定與 MTA 互動。該協定可能是標準協定 (例如在基於 ICAP 的程式 Symantec AntiVirus Scan Engine 中)、專用協定 (例如在 Brightmail 中) 或只是非標準協定 (例如在 SpamAssassin 中)。每項協定均需要軟體結合,以便與 MTA 互動。Brightmail 和 SpamAssassin 是前兩個可與 Messaging Server 整合的垃圾郵件篩選程式。MTA 現在支援使用 ICAP 的程式。


部署和配置協力廠商垃圾郵件篩選程式

在 Messaging Server 上部署協力廠商篩選軟體需要執行以下五項動作:


注意

舊版 Messaging Server 僅支援 Brightmail 篩選技術,因此關鍵字和選項具有諸如 sourcebrightmailBrightmail_config_file 之類的名稱。這些關鍵字和選項已變更為更通用的名稱,例如 sourcespamfilterspamfilter_config_file。先前的 Brightmail 名稱仍然保留,以確保相容性。


載入與配置垃圾郵件篩選軟體用戶端程式庫

每個垃圾郵件篩選程式均需要為 Messaging Server 提供用戶端程式庫檔案和配置檔案。載入與配置用戶端程式庫包括兩項作業:

指定垃圾郵件篩選軟體程式庫路徑

Messaging Server 最多可為您的郵件呼叫四個不同的篩選系統。例如,您可以同時透過 Symantec AntiVirus Scan Engine 和 SpamAssassin 篩選郵件。每個篩選軟體由數字 1 到 4 來識別。這些數字可顯示為各種垃圾郵件篩選選項、LDAP 屬性和通道關鍵字的一部分。X 可用作篩選器識別碼。例如,sourcespamfilterXoptinspamfilterX_config_file。如果識別碼從關鍵字或選項名稱中省略,則其預設為 1。

以下 option.dat 設定可指定 Messaging Server 同時透過 Symantec AntiVirus Scan Engine 和 SpamAssassin 篩選郵件:

spamfilter1_library=Symantec_Library_File
spamfilter1_config_file=Symantec_Config_File
spamfilter2_library=SpamAssassin_Library_File
spamfilter2_config_file=SpamAssassin_Config_File

如果使用其他選項或關鍵字配置系統,請使用選項或關鍵字末尾處的對應數字。例如 sourcespamfilter2optin 對應 SpamAssassin,而 sourcespamfilter1optin 對應 Symantec AntiVirus Scan Engine。無須連續使用數字。例如,如果要暫時停用 Symantec AntiVirus Scan Engine,您可以只需註釋 spamfilter1_library 配置檔案。

指定要篩選的郵件

如果垃圾郵件篩選軟體已安裝並可使用 Messaging Server 執行,則需要指定要篩選的郵件。Messaging Server 可以配置為依使用者、網域或通道篩選郵件。以下小節描述了這些情形:

指定使用者級別的篩選

它可適用於針對每個使用者指定篩選。例如,如果將垃圾郵件或病毒篩選作為優惠服務提供給 ISP 客戶,則您可以指定哪些使用者可以和不可接收該服務。使用者篩選的一般步驟如下:

  1. 指定啟動垃圾郵件篩選軟體的使用者 LDAP 屬性。
  2. option.dat 中設定 LDAP_OPTINX 選項。範例:

    LDAP_OPTIN1=SymantecAV
    LDAP_OPTIN2=SpamAssassin

  3. 在接收垃圾郵件篩選的使用者項目中設定篩選器屬性。
  4. 篩選器屬性有多個值,並且取決於伺服器。如果使用步驟 1 中的範例,則項目為:

    SymantecAV: virus
    SpamAssassin: spam

    對於可同時篩選病毒和垃圾郵件的程式 (如 Brightmail),其有效值為 spamvirus。用作多值屬性時,每個值均需要單獨的屬性項目。例如,如果將 Brightmail 的篩選器屬性設定為 Brightmail,則其項目為:

    Brightmail: spam
    Brightmail: virus

使用者級別的篩選範例

此範例假設在使用 Brightmail。還假設在 option.dat 檔案中將 LDAP_OPTIN1 設定為 Brightmail。使用者 Otis Fanning 在其使用者項目中將 Brightmail 屬性設定為 spamvirus。其郵件將由 Brightmail 進行垃圾郵件和病毒篩選。程式碼範例 14-1 顯示 Otis Fanning 的 Brightmail 使用者項目。

程式碼範例 14-1  Brightmail 的範例 LDAP 使用者項目

 

dn: uid=fanning,ou=people,o=sesta.com,o=ISP

objectClass: person

objectClass: organizationalPerson

objectClass: inetOrgPerson

objectClass: inetUser

objectClass: ipUser

objectClass: inetMailUser

objectClass: inetLocalMailRecipient

objectClass: nsManagedPerson

objectClass: userPresenceProfile

cn: Otis Fanning

sn: fanning

initials: OTF

givenName: Otis

pabURI: ldap://ldap.siroe.com:389/ou=fanning,ou=people,o=sesta.com,o=isp,o=pab

mail: Otis.Fanning@sesta.com

mailAlternateAddress: ofanning@sesta.com

mailDeliveryOption: mailbox

mailHost: manatee.siroe.com

uid: fanning

dataSource: iMS 5.0 @(#)ims50users.sh 1.5a 02/3/00

userPassword: 密碼

inetUserStatus: active

mailUserStatus: active

mailQuota: -1

mailMsgQuota: 100

Brightmail: virus

Brightmail: spam

如果使用 Symantec AntiVirus Scan Engine 和 SpamAssassin,則項目為:

SymantecAV: virus
SpamAssassin:
spam

請參閱「使用 Symantec Brightmail Anti-Spam」、「使用 SpamAssassin」或「使用 Symantec Anti-Virus Scanning Engine (SAVSE)」,以取得更多範例和詳細資訊。

指定網域級別的篩選

您可以指定接收篩選的網域。此功能的一個範例就是是否將防垃圾郵件或防毒篩選作為優惠服務提供給 ISP 網域客戶。指定網域篩選的一般步驟如下:

  1. 指定啟動篩選軟體的網域 LDAP 屬性。
  2. option.dat 中設定 LDAP_DOMAIN_ATTR_OPTINX 選項。範例:

    LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV
    LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin

  3. 在接收垃圾郵件篩選的網域項目中設定篩選器屬性。
  4. 篩選器屬性有多個值,並且取決於伺服器。如果使用步驟 1 中的範例,則項目為:

    SymantecAV: virus
    SpamAssassin:
    spam

    對於可同時篩選病毒和垃圾郵件的程式 (如 Brightmail),其有效值為 spamvirus。用作多值屬性時,每個值均需要單獨的屬性值項目。例如,如果將 LDAP_DOMAIN_ATTR_OPTIN1 設定為 Brightmail,則項目為:

    Brightmail: spam
    Brightmail:
    virus

網域級別的篩選範例

此範例假設在使用 Brightmail。還假設在 option.dat 檔案中將 LDAP_DOMAIN_ATTR_OPTIN1 設定為 Brightmail。在 Sun LDAP Schema 1 之 DC 樹的 sesta.com 網域項目中,將 Brightmail 屬性設定為 spamvirus。對於 Sun LDAP Schema 2,您亦應在接收垃圾郵件篩選的網域項目中設定 Brightmail

Brightmail 將對所有傳送至 sesta.com 的郵件進行垃圾郵件和病毒篩選。程式碼範例 14-2 顯示該網域項目。

程式碼範例 14-2  Brightmail 的範例 LDAP 網域項目

 

dn: dc=sesta,dc=com,o=internet

objectClass: 網域

objectClass: inetDomain

objectClass: mailDomain

objectClass: nsManagedDomain

objectClass: icsCalendarDomain

description: DC node for sesta.com hosted domain

dc: sesta

inetDomainBaseDN: o=sesta.com,o=isp

inetDomainStatus: active

mailDomainStatus: active

mailDomainAllowedServiceAccess: +imap, pop3, http:*

mailRoutingHosts: manatee.siroe.com

preferredMailHost: manatee.siroe.com

mailDomainDiskQuota: 100000000

mailDomainMsgQuota: -1

mailClientAttachmentQuota: 5

Brightmail: spam

Brightmail: virus

如果使用 Symantec AntiVirus Scan Engine 和 SpamAssassin,則項目類似於:

SymantecAV: virus
SpamAssassin:
spam

請參閱「使用 Symantec Brightmail Anti-Spam」、「使用 SpamAssassin」或「使用 Symantec Anti-Virus Scanning Engine (SAVSE)」,以取得更多範例和詳細資訊。

指定通道級別的篩選

依來源或目標通道進行篩選會使垃圾郵件篩選更靈活、更精確。例如,您可能希望以下列方法進行篩選:

Messaging Server 允許您依來源或目標通道指定篩選。在表 14-1 中描述的通道關鍵字即為執行此作業的機制。以下範例展示如何設定通道級別的篩選。

  1. 在所有內送 SMTP 伺服器 (負責將郵件傳送至後端郵件儲存主機) 的 imta.cnf 檔案中,增加一個重寫規則。範例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. 透過 destinationspamfilterXoptin 關鍵字增加對應於該重寫規則的通道。範例:
  4. tcp_msg_store1 smtp subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" \
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D \
    destinationspamfilter1optin spam
    msg_store1.siroe.com

表 14-1  垃圾郵件篩選器的 MTA 通道關鍵字

通道關鍵字

描述

destinationspamfilterXoptin

指定即使使用者或網域未透過 LDAP_OPTIN LDAP 屬性指定那些服務,防垃圾郵件軟體 X 仍會篩選目標為此通道的所有郵件。(在 option.dat 中,篩選軟體 X 由 spamfilterX_library 定義。)篩選參數取決於篩選程式,並遵循關鍵字。例如,Brightmail 的參數通常為 spamvirusspam,virus。SpamAssassin 的參數為 spam

在此範例中,所有目標為郵件儲存的郵件均由 Brightmail 進行垃圾郵件掃描:

ims-ms destinationspamfiltero1ptin spam,virus. . .

sourcespamfilterXoptin

指定即使使用者和網域未透過 LDAP_OPTIN LDAP 屬性指定那些服務,防垃圾郵件軟體 X 仍會篩選源自此通道的所有郵件。此關鍵字後接系統範圍的預設參數,可用的參數視篩選程式而定。例如,對於 Brightmail,參數為 spamvirusspam,virus。對於 SpamAssassin,參數為 spam。如果 switchchannel 生效,則應將此關鍵字置於切換至的通道上。

通道級別的篩選範例

這些範例假設一個由數字 1 指定的篩選程式。

範例 1:對所有郵件進行垃圾郵件和病毒篩選,這些郵件從 MTA 轉送至稱為 msg_store1.siroe.com 的後端郵件儲存。

  1. imta.cnf 檔案 (負責將郵件傳送至後端郵件儲存主機) 中,增加一個重寫規則。範例:
  2. msg_store1.siroe.com   $U@msg_store1.siroe.com

  3. 透過 destinationspamfilterXoptin 關鍵字增加對應於該重寫規則的通道。範例:
  4. tcp_msg_store1 smtp subdirs 20 backoff "pt5m" "pt10" "pt30" "pt1h" \
    "pt2h" "pt4h" maxjobs 1 pool IMS_POOL fileinto $U+$S@$D \
    destinationspamfilter1optin spam,virus
    msg_store1.siroe.com

範例 2:對經由 MTA 的所有內送的郵件進行垃圾郵件篩選 (通常,所有內送的郵件都經由 tcp_local 通道):

tcp_local smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
sourcespamfilter1optin spam
tcp-daemon

範例 3:篩選經由 MTA 的所有外寄至網際網路的郵件。(通常,所有外寄至網際網路的郵件都經由 tcp_local 通道。)

tcp_local smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
destinationspamfilter1optin spam
tcp-daemon

範例 4:篩選經由您的 MTA 的所有內送的和外寄郵件:

tcp_local smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
sourcespamfilter1optin spam destinationspamfilter1optin spam
tcp-daemon

範例 5:在雙層系統中篩選目標為本機郵件儲存的所有郵件,而不使用使用者選擇加入:

ims-ms smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
destinationspamfilter1optin spam
tcp-daemon

範例 6:對所有送進和外寄的郵件進行垃圾郵件和病毒篩選 (假定您的軟體可同時篩選垃圾郵件和病毒):

tcp_local smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
destinationspamfilter1optin spam,virus sourcespamfilter1optin \
spam,virus
tcp-daemon

指定要在垃圾郵件上執行的動作

垃圾郵件篩選程式對郵件進行分析,並向 Messaging Server 傳回郵件是否為垃圾郵件的判定結果。然後,Messaging Server 會在郵件上採取動作。動作藉由篩選郵件篩選程式語言來指定。可能的動作有捨棄郵件、歸檔至資料夾、增加標頭以及增加標記至主旨行等。帶有 if-then-else 描述的複雜篩選程序檔亦有可能。


注意

請參閱篩選規格 3028,以取得完整的篩選語法。另請參閱 http://www.cyrusoft.com/sieve/


篩選程序檔藉由表 14-2 中描述的 MTA 垃圾郵件篩選器選項 (option.dat) 來指定。主要的垃圾郵件篩選器動作選項為 SpamfilterX_null_action (指定當空值作為垃圾郵件判定結果值傳回時要執行的篩選規則) 和 SpamfilterX_string_action (指定當字串作為垃圾郵件判定結果傳回時要執行的篩選規則)。

垃圾郵件篩選程式通常向 MTA 傳回字串或空值,表示該郵件為垃圾郵件。某些程式還傳回垃圾郵件分值 ─ 評價郵件為垃圾郵件之可能性的數字。此分值可用作動作序列的一部分。以下範例顯示如何指定對篩選的郵件採取的動作。每個範例均假設一個由數字 1 指定的篩選程式。

範例 1:將垃圾郵件與判定結果值 (空值) 一同歸檔至檔案 SPAM_CAN

spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";

可在傳回字串的垃圾郵件上執行相同的動作:

spamfilter1_string_action=data:,require "fileinto"; fileinto "SPAM_CAN";

範例 2:將垃圾郵件與傳回的判定結果字串一同歸檔至以傳回的判定結果字串命名的檔案 (這是 $U 的工作)。即,如果傳回的判定結果字串為 spam,則將該郵件儲存在稱為 spam 的檔案中。

spamfilter1_null_action=data:,require "fileinto"; fileinto "$U";

範例 3:捨棄帶有字串判定結果值的垃圾郵件。

spamfilter1_string_action=data:,discard

可在傳回空值的垃圾郵件上執行相同的動作:

spamfilter1_null_action=data:,require "fileinto"; fileinto "SPAM_CAN";

範例 4:此行將標頭 Spam-test:FAIL 增加至已被字串判定結果值確定為垃圾郵件的每封郵件:

spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:FAIL";

範例 5:此行將字串 [PROBABLE SPAM] 增加至傳回字串的垃圾郵件的主旨行:

spamfilter1_string_action=data:,addtag "[PROBABLE SPAM]";

範例 6:如果標頭包含 resent-fromUser-1,則此行會假設判定結果值為字串,並將垃圾郵件歸檔至電子信箱 testspam。如果郵件不包含此標頭,則將郵件歸檔至 spam

spamfilter1_string_action=data:,require "fileinto";\
  if header :contains ["resent-from"] ["User-1"] {\
  fileinto "testspam";\
  } else {\
  fileinto "spam";};

因為判定結果字串可藉由大多數垃圾郵件篩選器軟體進行配置,所以您可以根據傳回的字串指定不同的動作。您可以使用配對 spamfilterX_verdict_nspamfilterX_action_n 選項來完成此作業。

範例 7:這些配對選項捨棄傳回的判定結果字串為 remove 的垃圾郵件。

spamfilter1_verdict_0=remove
spamfilter1_action_0
=data:,discard

請參閱垃圾郵件篩選軟體的特定小節,以取得有關如何指定垃圾郵件判定結果字串的說明。

表 14-2  MTA 垃圾郵件篩選器選項 (options.dat) 

適用於 SpamAssassin 的 MTA 選項

描述

SpamfilterX_config_file

指定篩選軟體 X 配置檔案的完整檔案路徑和名稱。
預設:無

SpamfilterX_library

指定篩選軟體 X 共用程式庫的完整檔案路徑和名稱。
預設:無

SpamfilterX_optional

控制篩選程式庫 X 報告的某些故障是否作為暫時性故障處理或被忽略。預設值 0 指定垃圾郵件篩選問題會導致暫時性處理故障。將值變更為 1 會導致在某些 (但可能並非所有) 篩選程式庫發生故障的情況下,垃圾郵件篩選器處理被略過。尤其是,如果系統阻塞而未在程式庫程式碼中傳回,則 MTA 的一些部分也可能阻塞。還可以設定為 -2 和 2。它們分別與 0 和 1 相同,但是如果垃圾郵件篩選外掛程式報告發現問題,它們將造成發出系統記錄訊息。

預設: 0

LDAP_optinX

指定用於針對使用者啟動篩選軟體 X 之 LDAP 屬性的名稱。它應為 inetMailUser 物件類別中的屬性。

此屬性本身可以有多個值,且區分大小寫。對於 SpamAssassin,它的值應為小寫的 spam

預設:無

LDAP_domain_attr_optinX

指定用於針對網域啟動篩選軟體 X 之 LDAP 屬性的名稱。適用於目標網域。除應屬於物件類別 mailDomain 之外,其餘與 LDAP_optin 相同。

預設:無

SpamfilterX_null_optin

指定一個字串,如果發現該字串是由 LDAP_optinX LDAP_domain_attr_optinX 定義的屬性值,則會導致 MTA 採取該屬性不存在時所採取的動作。即,停用對該項目的篩選。請參閱指定要篩選的郵件,以取得用法的詳細資訊。

預設:空字串。*依預設,空 optin 屬性被忽略。(這與 iPlanet Messaging Server 5.2 不同,在 5.2 版中,空 optin 屬性藉由空 optin 清單觸發篩選。5.2 版的運作方式可透過將 spamfilterX_null_optin 設定為虛擬字串來修復。)

SpamfilterX_null_action

定義一種篩選規則,用於指定當篩選軟體 X 判定結果傳回空值時如何處理郵件。可透過使用檔案 URL 在外部儲存篩選表示式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve.此外,請勿使用篩選拒絕動作拒絕垃圾郵件,因為這樣做會向無辜的一方 (其位址用於傳送垃圾郵件) 投遞未投遞通知。
預設:data:,discard;

SpamfilterX_string_action

定義一種篩選規則,用於指定當判定結果為字串時如何處理郵件。可透過使用檔案 URL 在外部儲存篩選表示式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve.此外,請勿使用篩選 reject 動作拒絕垃圾郵件,因為這樣做會向無辜的一方 (其伺服器用於傳送垃圾郵件) 投遞未投遞通知。

預設:data:,require "fileinto"; fileinto "$U;

其中 $U 表示 verdict 傳回的字串。

spamfilterX_verdict_n

spamfilterX_verdict_nspamfilterX_action_n 為配對選項,其中 n 是 0 到 9 的數字。這些選項可讓您為任意判定結果字串指定篩選器。執行方法為:將 spamfilterX_verdict_nspamfilterX_action_n 分別設定為判定結果字串和篩選器,其中 n 是 0 到 9 的整數。例如,站點可透過指定以下內容讓「拒絕」判定結果導致篩選拒絕動作發生:

spamfilter1_verdict_0=reject
spamfilter1_action_0=data:,require "reject"; reject "Rejected by spam filter";

所有 spamfilterX_verdict_n 選項及相應動作選項的預設值均為空字串。

預設:無

spamfilterX_action_n

請參閱 spamfilterX_verdict_n。預設:無

spamfilterX_final

某些篩選程式庫可基於收件者位址執行一組動作。spamfilterX_final 指定傳送至篩選程式庫的收件者位址類型。值 0 可導致使用中間位址;1 可導致傳送收件者位址的最終格式。

預設: 0

optin_user_carryover

轉寄對於垃圾郵件篩選器處理而言是個挑戰。考量指定 forward 投遞選項以及指定其他使用者轉寄位址的使用者項目。此外,使用者項目設定為選擇加入某些特定類型的篩選。是否應該將篩選套用至轉寄的郵件?一方面,對特定使用者而言正確的篩選選擇對其他使用者卻不一定正確。另一方面,結束篩選作業可能會作為違反站點安全策略的手段。

沒有一個答案在所有情況下都是正確的,因此 OPTIN_USER_CARRYOVER 控制在轉寄發生時,如何將垃圾郵件篩選 optin 清單從一個使用者或別名項目傳送至其他項目。這是位元編碼的值。各種位元值涵義如下:

位元 0 (值 1)。每個 LDAP 使用者項目無條件地置換先前使用中的任何使用者/網域 optin。

位元 1 (值 2)。如果使用者的網域具有 optin 屬性,則會置換先前使用中的任何使用者/網域/別名 optin。

位元 2 (值 4)。如果使用者具有 optin 屬性,則會置換先前使用中的任何使用者/網域/別名 optin。

位元 3 (值 8)。由 [optin] 非位置參數指定的 optin 置換先前使用中的任何使用者/網域/別名 optin。

預設:0 (如果一個使用者具有轉寄至其他使用者的投遞項目,則 optin 將會累積。此預設可確保站點安全策略在轉寄時有效;而其他設定則無法確保這一點。)


使用 Symantec Brightmail Anti-Spam

Brightmail 解決方案包含 Brightmail 伺服器以及可下載至電子郵件伺服器的即時防垃圾郵件與防毒規則更新。

Brightmail 的工作方式

Brightmail 伺服器部署於客戶站點。Brightmail 具有電子郵件探測,設定為在整個網際網路偵測新垃圾郵件。Brightmail 技術人員會建立自訂規則,以即時封鎖該垃圾郵件。這些規則也會即時下載至 Brightmail 伺服器。Brightmail 資料庫更新後,Brightmail 伺服器會針對指定使用者或網域的電子郵件執行此資料庫篩選器。

Brightmail 的架構

圖 14-1 描繪了 Brightmail 的架構。

圖 14-1

本圖顯示 Brightmail 和 Messaging Server 的架構。

Brightmail 與 Messaging Server 的架構

當 Brightmail Logistics and Operations Center (BLOC) 從電子郵件中探測到垃圾郵件時,操作員會立即建立適當的垃圾郵件篩選規則,這些規則可下載至 Brightmail 客戶機器上。同樣,Brightmail 還會傳送 Symantec 安全性回應即時病毒規則。客戶的 Brightmail 伺服器會使用這些規則攔截垃圾郵件及病毒。

MTA 使用 Brightmail SDK 與 Brightmail 伺服器進行通訊。MTA 會根據從 Brightmail 的回應派送郵件。當 MTA 收到郵件 (1a) 或 (1b) 時,會將郵件傳送給 Brightmail 伺服器 (2)。Brightmail 伺服器會使用其規則和資料,確定郵件是否為垃圾郵件或病毒 (3),然後向 MTA 傳回判定結果。MTA 便根據該判定結果 (4a) 捨棄郵件或將郵件歸檔至資料夾,或者 (4b) 將郵件正常遞送到目的地。

由於 Brightmail SDK 是協力廠商軟體,我們未將其納入安裝套件中。必須從 Brightmail Inc. 獲取 Brightmail SDK 與伺服器軟體。MTA 的配置設定會告知您是否以及在何處載入 Brightmail SDK,以啟用 Brightmail 整合。

載入 SDK 後,Brightmail 郵件處理會由數個因素與詳細級別 (Brightmail 指定使用中的處理作業時使用的術語是選擇加入) 確定。依以下準則指定:

對於任何特定郵件收件者,上述選擇加入和預設是合併的,這意味著如果通道預設已指定用於垃圾郵件和病毒,則無需再考量針對使用者的選擇加入。即,如果系統管理員決定對每個使用者進行垃圾郵件及病毒篩選,則無需為使用者提供選擇加入以篩選垃圾郵件或病毒的功能。無法選擇退出處理,即一旦使用者經由系統或網域選擇加入某種服務,便無法拒絕該服務。這還意味著如果您選擇加入某種服務,並且您的郵件已轉寄至另一位址,該位址將在該服務代您執行篩選作業後收到郵件。

在此只提供兩種服務,即病毒或垃圾郵件偵測。雖然 Brightmail 也提供「內容篩選」服務,但此功能必須配合篩選使用,因此,使用 Brightmail 執行篩選沒有多少附加值。

當郵件被確定為包含病毒時,Brightmail 伺服器可配置為清除病毒,並將清除後的郵件重新提交回 MTA。(由於在重新提交的已清除郵件中有關原始郵件的資訊遺失會導致某些負面影響,我們建議您不要將 Brightmail 配置為將已清除郵件重新提交回 MTA。)如果郵件為垃圾郵件,從 Brightmail 傳回的判定結果以及 Brightmail 中的配置會讓 MTA 確定如何處理該郵件。郵件可以被捨棄、歸檔至資料夾、在主旨行標記為垃圾郵件或病毒、傳送至篩選規則、正常投遞至 INBOX 等。

Brightmail 伺服器可與 MTA 位於同一系統上,也可位於不同系統上。實際上,您可以針對一個或多個 MTA 系統配備多台 Brightmail 伺服器。Brightmail SDK 使用 Brightmail 配置檔案來確定使用哪台 Brightmail 伺服器。

Brightmail 需求與效能注意事項

部署 Brightmail

執行以下步驟以部署 Brightmail。

Brightmail 配置選項

選取的 Brightmail 配置檔案選項如表 14-3 所示。可從 Brightmail 獲取 Brightmail 配置檔案選項的最完整清單。選項與值不區分大小寫。

表 14-3  選取的 Brightmail 配置檔案選項 

Brightmail 選項

描述

blSWPrecedence

給定郵件可具有多種判定結果。此選項指定優先順序。因此,如果郵件先要處理病毒,然後再處理垃圾郵件 (如果您指定此選項為 virus-spam),各判定結果之間會以連字符號 (-) 分隔。將 Brightmail 與 Sun Java System Messaging Server 配合使用時,建議使用該選項。

blSWClientDestinationDefault

指定如何遞送一般郵件,即非垃圾郵件或病毒,因此這類郵件沒有判定結果。通常您會希望正常遞送此郵件,因此可以將值指定為 inbox。此選項沒有預設。

blSWLocalDomain

此屬性指定將哪些網域視為本機。此屬性可包含多行,以指定數個網域,所有這些網域都應視為本機。本機與外部網域用於指定同一判定結果的兩種不同處理方式。

請參閱以下 blSWClientDestinationLocalblSWClientDestinationForeign。例如,您可以指定

blSWLocalDomain=siroe.com

blSWClientDestinationLocal

此選項指定本機網域的判定結果和動作對。此項目通常會有兩行,一行針對垃圾郵件,另一行則針對病毒。該值的形式為 verdict|action,例如,

blSWClientDestinationLocal=spam|spambox

blSWClientDestinationLocal=virus|

「空」動作 (表示 | 右側沒有內容) 的預設 Brightmail 解譯為捨棄郵件。因此在上述範例中,如果判定結果為 virus,則捨棄郵件。如果判定結果為 spam,上述範例會將郵件歸檔至名為 spambox 的資料夾。如果郵件既不是垃圾郵件又不包含病毒,則判定結果不相符,該郵件會根據上述 blSWClientDestinationDefault 設定中的設定內容進行正常投遞。

使用與 MTA 分開的 Brightmail 伺服器時,可以自訂每個 MTA 執行的動作,方法是使用 Brightmail_verdict_n/Brightmail_action_n/Brightmail_null_action/Brightmail_string_action MTA 選項來置換 Brightmail 伺服器傳回的動作與判定結果。在此範例中,您可以使用 MTA 上不同的 Brightmail_null_action 來置換 Virus 動作 (捨棄郵件),或使用 Brightmail_verdict_0=spamboxBrightmail_action_0=data:,require "fileinto";fileinto "Junk"; 將郵件歸檔至名為 Junk 的資料夾而非 spambox

blSWClientDesintationForeign

格式與解譯與上述 blSWClientDestinationLocal 相同,除了它適用於非本機網域的使用者以外。

blSWUseClientOptin

與 Sun Java System Messaging Server 配合使用時,始終將本選項設定為 TRUE。

blswcServerAddress

格式為 ip:port[,ip:port,...],用於指定一台或多台 Brightmail 伺服器的 IP 位址和連接埠號


使用 SpamAssassin

本節包含以下小節:

SpamAssassin 簡介

Messaging Server 支援使用 SpamAssassin,SpamAssassin 是一種用於識別垃圾郵件的免費郵件篩選器。SpamAssassin 包括一個以 Perl 撰寫的程式庫和一組可用於將 SpamAssassin 整合到郵件傳送系統中的應用程式與公用程式。

SpamAssassin 透過對郵件標頭和內文資訊執行一系列測試來計算每封郵件的分值。每項測試成功或失敗,並描繪判定結果 true (垃圾郵件) 或 false (非垃圾郵件)。分值是實數,可以是正數或負數。分值超出特定臨界值 (通常為 5.0) 的郵件會被視為垃圾郵件。SpamAssassin 結果字串的範例為:

True ; 18.3 / 5.0

True 表示郵件為垃圾郵件。18.3 為 SpamAssassin 分值。5.0 為臨界值。

SpamAssassin 高度可調整。測試可以隨時增加或移除,而且現有測試的分值可以調整。透過各種配置檔案即可達此目的。如需有關 SpamAssassin 的進一步資訊,請查閱 SpamAssassin 網站。

用於呼叫 Brightmail 垃圾郵件與病毒掃描程式庫的機制,可用於連線至 SpamAssassin spamd 伺服器。Messaging Server 中提供的模組稱為 libspamass.so

SpamAssassin/Messaging Server 作業原理

spamd 是 SpamAssassin 的常駐程式版本並可從 MTA 呼叫。spamd 偵聽通訊端請求並產生子程序以測試郵件。子程序在處理郵件並傳回結果後停止。由於程式碼本身在子程序之間共用,因此從理論上說,未經同意擅自修改程序碼應為有效的程序。

不使用用戶端部分 spamc (來自 SpamAssassin 安裝)。而由稱為 libspamass.so 的共用程式庫來執行其功能,該程式庫是 Messaging Server 的一部分。載入 libspamass.so 的方法與載入 Brightmail SDK 的方法相同。

從 MTA 角度看,您幾乎可以透明地在 SpamAssassin 與 Brightmail 之間切換,以進行垃圾郵件篩選。但切換並不是完全透明的,因為二者的功能不同。例如,Brightmail 還可篩選病毒,但 SpamAssassin 僅用於篩選垃圾郵件。由這兩種套裝軟體傳回的結果或判定結果也不相同。SpamAssassin 提供分值,而 Brightmail 僅提供判定結果名稱,因此配置也應有所不同。

使用帶有 MTA 的 SpamAssassin 時,僅會從 SpamAssassin 傳回分值和判定結果。郵件本身不做修改。即,必須由篩選程序檔來執行選項 (如增加標頭和修改主旨行)。此外,mode 選項還可讓您指定傳回的表示判定結果的字串。字串選擇為空、預設值、SpamAssassin 結果字串或 verdict 字串。請參閱「表 14-4」,以取得詳細資訊。

SpamAssassin 需求與用法注意事項

在何處執行 SpamAssassin?

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

若要使用多台伺服器執行 SpamAssassin,則必須在其前端使用負載平衡器。僅使用一個位址來為 SpamAssassin 配置 MTA。

佈署 SpamAssassin

執行以下步驟以部署 SpamAssassin:

SpamAssassin 配置範例

本小節描述一些常用的 SpamAssassin 配置範例:

將垃圾郵件歸檔至單獨的資料夾

此範例測試到達本機郵件儲存的郵件,並將垃圾郵件歸檔至稱為 spam 的資料夾。前三個步驟可以任何次序執行。

  1. 建立 SpamAssassin 配置檔案。
  2. 此檔案的名稱和位置在步驟 2 中指定。spamassassin.opt 是個很好的名稱。此檔案包含以下行:

    host=127.0.0.1
    port=2000
    mode=0
    verdict=spam
    debug=1

    hostport 指定執行 spamd 的系統之名稱,以及 spamd 偵聽內送的請求的埠。mode=0 指定如果郵件被判定為垃圾郵件,則傳回由 verdict 指定的字串。debug=1 指定在 SpamAssassin 程式庫中啟動除錯。請參閱表 14-4,以取得有關 SpamAssassin 配置參數的描述。

  3. 將以下行增加至 option.dat 檔案:

    ! for Spamassassin
    spamfilter1_config_file1=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library1=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,require "fileinto"; fileinto "$U;

  4. spamfilter1_config_files 指定 SpamAssassin 配置檔案。

    spamfilter1_library 指定 SpamAssassin 共用程式庫。

    spamfilter1_optional=1 指定如果因 spamd 而發生故障,MTA 則繼續作業。

    spamfilter1_string_action 指定對垃圾郵件採取的篩選動作。

    spamfilter1_string_action 在此範例中不是必需的,因為預設值已經是 data:,require "fileinto"; fileinto "$U;。此行指定將垃圾郵件傳送至資料夾。資料夾的名稱是由 SpamAssassin 傳回的垃圾郵件判定結果值。SpamAssassin 傳回的值由 verdict 選項在 spamassassin.opt 中指定。(請參閱步驟 1。)在此範例中,資料夾名稱為 spam

  5. 指定要篩選的郵件。
  6. 若要篩選進入本機郵件儲存的所有郵件,請將 destinationspamfilterXoptin spam 關鍵字增加至 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 destinationspamfilter1optin spam
    ims-ms-daemon

  7. 重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。您無需執行 stop-msg
  8. # imsimta cnbuild
    # imsimta restart

  9. 啟動 spamd 常駐程式。通常以指令啟動,指令的形式為:

將包含 SpamAssassin 分值的標頭增加至垃圾郵件

此範例將標頭 Spam-test:result string 增加至由 SpamAssassin 確定為垃圾郵件的郵件。標頭範例可能是:

Spam-test:True ; 7.3 / 5.0

其中 Spam-test:是文字列,其後的內容是結果字串。True 表示它是垃圾郵件 (false 表示不是垃圾郵件)。7.318.3 為 SpamAssassin 分值。5.05.0 為臨界值。此結果有助於設定篩選器,它可以歸檔或捨棄超過某個分值或介於分值之間的郵件。

此外,將 USE_CHECK 設定為 0 可傳回與判定結果字串相符的 SpamAssassin 測試清單。請參閱表 14-4 中的 USE_CHECK

  1. 指定要篩選的郵件。此步驟在將垃圾郵件歸檔至單獨的資料夾步驟 3 中有描述。
  2. 建立 SpamAssassin 配置檔案。
  3. 此檔案的名稱與位置可使用 spamfilter_configX_file 進行指定 (請參閱下一個步驟)。包含以下各行:

    host=127.0.0.1
    port=2000
    mode=1
    field=
    debug=1

    hostport 指定執行 spamd 之系統的名稱,以及 spamd 偵聽內送的請求的埠。mode=1 指定如果發現郵件是垃圾郵件,則傳回 SpamAssassin 結果字串。field= 指定 SpamAssasin 結果字串的字串前綴。此範例中無需前綴,因為我們在篩選程序檔中指定它。debug=1 指定在 SpamAssassin 程式庫中啟動除錯。

  4. 將以下行增加至 option.dat 檔案:

    !for Spamassassin
    spamfilte1r_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:$U";

  5. 與前面的範例相同,前三個選項指定 SpamAssassin 配置檔案、共用程式庫以及因共用程式庫發生故障時繼續 MTA 作業。以下一行:

    spamfilter1_string_action=data:,require ["addheader"];addheader "Spam-test:$U";

    指定將標頭增加至垃圾郵件。標頭將具有文字列前綴 Spam-text:其後是 SpamAssassin 傳回的字串。因為在步驟 2 中指定了 mode=1,所以傳回 SpamAssassin 結果字串。例如:True; 7.3/5.0

  6. 重新編譯配置,重新啟動伺服器,然後啟動 spamd 常駐程式。
  7. 請參閱「將垃圾郵件歸檔至單獨的資料夾」。

將 SpamAssassin 結果字串增加至主旨行

透過將 SpamAssassin 結果字串增加至主旨行,使用者可以確定是否閱讀帶有 SpamAssassin 分值的郵件。例如:

Subject:[SPAM True ; 99.3 / 5.0] Free Money At Home with Prescription Xanirex!

請注意,將 USE_CHECK 設定為 0 可傳回與判定結果字串相符的 SpamAssassin 測試清單 (請參閱表 14-4 中的 USE_CHECK)。此清單可能會很長,因此最好將 USE_CHECK 設定為 1

  1. 指定要篩選的郵件。請參閱「將垃圾郵件歸檔至單獨的資料夾」中的步驟 3
  2. 建立 SpamAssassin 配置檔案。
  3. 此步驟在將垃圾郵件歸檔至單獨的資料夾中進行描述。mode=1 指定如果發現郵件是垃圾郵件,則傳回 SpamAssassin 結果字串。

    host=127.0.0.1
    port=2000
    mode=1
    debug=1

    hostport 指定執行 spamd 的系統之名稱,以及 spamd 偵聽內送的請求的埠。mode=1 指定如果郵件是垃圾郵件,則傳回 SpamAssassin 結果字串。debug=1 指定在 SpamAssassin 程式庫中啟動除錯。

  4. 將以下行增加至 option.dat 檔案:

    !for Spamassassin
    spamfilter1_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,addtag "[SPAM detected:$U]";

  5. 與前面的範例相同,前三個選項指定 SpamAssassin 配置檔案、共用程式庫以及因共用程式庫發生故障時繼續 MTA 作業。以下一行

    spamfilter1_string_action=data:,addtag "[SPAM detected $U]";

    指定將標記增加至 Subject: 行中顯示的位址。它具有文字列前綴 SPAM detected,其後是 field 字串 (預設:Spam-Test),其後是 SpamAssassin 傳回的「[result string]」。因為在步驟 2 中指定了 mode=1,所以傳回 SpamAssassin 結果字串。因此,主旨行如下所示:

    Subject:[SPAM detected Spam-Test:True ; 11.3 / 5.0] Make Money!

    您還可以一同使用 addheaderaddtag

    spamfilter1_string_action=data:,require ["addheader"];addtag "[SPAM detected $U]";addheader "Spamscore:$U";

    以收到如下郵件:

    Subject: [SPAM detected Spam-Test:True ; 12.3 / 5.0] Vigaro Now!
    Spamscore:
    Spam-Test:True ; 12.3 / 5.0

    spamassassin.opt 中將 field= 設定為移除 Spam-Test 的預設值。將傳回更清楚的郵件:

    Subject: [SPAM True ; 91.3 / 5.0] Vigaro Now!
    Spamscore:
    True ; 91.3 / 5.0

  6. 重新編譯配置,重新啟動伺服器,然後啟動 spamd 常駐程式。
  7. 請參閱「將垃圾郵件歸檔至單獨的資料夾」。

測試 SpamAssassin

若要測試 SpamAssassin,首先請在 spamassassion.opt 檔案中設定 debug=1。您不一定要在 imta.cnf 中啟動通道特定的 master_debugslave_debug。然後將測試郵件傳送給測試使用者。msg_svr_base/data/tcp_local_slave.log* 檔案應該有些行類似於:

15:15:45.44: SpamAssassin callout debugging enabled; config /opt/SUNWmsgsr/config/spamassassin.opt

15:15:45.44: IP address 127.0.0.1 specified

15:15:45.44: Port 2000 selected

15:15:45.44: Mode 0 selected

15:15:45.44: Field "Spam-Test:" selected

15:15:45.44: Verdict "spam" selected

15:15:45.44: Using CHECK rather than SYMBOLS

15:15:45.44: Initializing SpamAssassin message context

...

15:15:51.42: Creating socket to connect to SpamAssassin

15:15:51.42: Binding SpamAssassin socket

15:15:51.42: Connecting to SpamAssassin

15:15:51.42: Sending SpamAssassin announcement

15:15:51.42: Sending SpamAssassin the message

15:15:51.42: Performing SpamAssassin half close

15:15:51.42: Reading SpamAssassin status

15:15:51.67: Status line:SPAMD/1.1 0 EX_OK

15:15:51.67: Reading SpamAssassin result

15:15:51.67: Result line:Spam:False ; 1.3 / 5.0

15:15:51.67: Verdict line:Spam-Test:False ; 1.3 / 5.0

15:15:51.67: Closing connection to SpamAssassin

15:15:51.73: Freeing SpamAssassin message context

如果記錄檔不包含與此類似的行,或者 spamd 尚未執行,則在最後一個句號 (.) 傳送至 SMTP 伺服器後,在 SMTP 對話中傳回如下錯誤訊息:

452 4.4.5 Error writing message temporaries - Temporary scan failure:End message status = -1

此外,如果在 option.dat 中設定了 spamfilter1_optional=1 (強烈建議您作此設定),郵件將被接受但不進行篩選,就像未啟用垃圾郵件篩選一樣,並在 tcp_local_slave.log* 中顯示以下行:

15:35:15.69: Creating socket to connect to SpamAssassin
15:35:15.69: Binding SpamAssassin socket
15:35:15.69: Connecting to SpamAssassin
15:35:15.69: Error connecting socket:Connection refused
15:35:15.72: Freeing SpamAssassin message context

呼叫 SpamAssassin 發生在 SMTP 伺服器收到整封郵件 (即最後一個「.」已傳送至 SMTP 伺服器之後),但 SMTP 伺服器向寄件者確認已接受該郵件之前。

另一個測試為從目錄 (如 Mail-SpamAssassin-2.60 目錄) 使用 sample-spam.txt 傳送範例垃圾郵件。此郵件包含以下特殊文字字串:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

相應的 tcp_local_slave.log* 包含如下內容:

16:00:08.15: Creating socket to connect to SpamAssassin

16:00:08.15: Binding SpamAssassin socket

16:00:08.15: Connecting to SpamAssassin

16:00:08.15: Sending SpamAssassin announcement

16:00:08.15: Sending SpamAssassin the message

16:00:08.15: Performing SpamAssassin half close

16:00:08.15: Reading SpamAssassin status

16:00:08.43: Status line:SPAMD/1.1 0 EX_OK

16:00:08.43: Reading SpamAssassin result

16:00:08.43: Result line:Spam:True ; 1002.9 / 5.0

16:00:08.43: Verdict line:Spam-Test:True ; 1002.9 / 5.0

16:00:08.43: Closing connection to SpamAssassin

16:00:08.43: Mode 0 verdict of spam

16:00:08.43: Mode 0 verdict of spam

16:00:08.47: Freeing SpamAssassin message context

mail.log_current 檔案中的相應項目如下所示。請注意,目標位址的 +spam 部分表示郵件歸檔在稱為 spam 的資料夾中:

15-Dec-2003 15:32:17.44 tcp_intranet ims-ms E 1 morchia@siroe.com rfc822;morchia
morchia+spam@ims-ms-daemon
15-Dec-2003 15:32:18.53 ims-ms D 1 morchia@siroe.com rfc822;morchia morchia+spam@ims-ms-daemon

SpamAssassin 選項

SpamAssassin mode 選項

處理完一封郵件後,SpamAssassin 會確定該郵件是否為垃圾郵件。mode 讓您可以指定傳回表示判定結果的字串。字串選擇為空、預設值、SpamAssassin 結果字串或由verdict 選項指定的 verdict 字串。(請注意預設值不為空、SpamAssassin 結果字串或由 verdict 指定的字串,而是某些其他不可配置的結果字串。)下表概述了 mode 作業。

表 14-5  傳回的 SpamAssassin mode 選項的字串

verdict 設定

是否垃圾郵件?

mode=0

mode=1

mode=2

mode=3

verdict=""   (未設定)

   是

SpamAssassin 結果

SpamAssassin 結果

SpamAssassin 結果

   否

預設值

預設值

SpamAssassin 結果

預設值

verdict=string

   是

verdict string

SpamAssassin 結果

SpamAssassin 結果

SpamAssassin 結果

   否

預設值

預設值

SpamAssassin 結果

verdict string

第一欄表示 verdict 選項是否已經設定。第二欄表示郵件是否為垃圾郵件。模式欄表示傳回的各種模式的字串。例如,如果 verdict 未設定,mode 設定為 0 且郵件不是垃圾郵件,則傳回預設字串。如果 verdict 設定為 YO SPAM!mode 設定為 0,且郵件為垃圾郵件,則傳回 YO SPAM! 字串。


使用 Symantec Anti-Virus Scanning Engine (SAVSE)

除描述如何部署 SAVSE 之外,本小節對部署其他支援 ICAP 的防垃圾郵件/防毒程式也很有用。本節包含以下小節:

SAVSE 概況

SAVSE 是 TCP/IP 伺服器應用程式以及提供病毒掃描服務的通訊應用程式程式設計介面 (API)。它是專門為保護通過或儲存於網路基礎架構裝置的通訊流而設計的,它會偵測並保護系統免受所有主要檔案類型 (包括行動碼和壓縮檔案格式) 中的病毒、蠕蟲和特洛伊木馬的影響。請參閱 Symantec 網站以取得更多詳細資訊


注意

Messaging Server 僅支援 SAVSE 掃描功能。不支援修復或刪除功能。


SAVSE 需求與用法注意事項

這是 Symantec 單獨授權的產品。

僅支援掃描模式,不支援 SAVSE 配置中的掃描並修復或掃描並刪除模式。

在何處執行 SAVSE?

SAVSE 或其他支援 ICAP 的伺服器可在自身的獨立系統上執行,或與 Messaging Server 在同一系統上執行 (單一系統部署中),或與 MTA 在同一系統上執行 (兩層部署中)。如果在 MTA 與郵件儲存之間使用本機郵件傳送協定 (LMTP),則必須從 MTA 呼叫篩選,而不可從郵件儲存呼叫篩選。如果在 MTA 與郵件儲存之間使用 SMTP,則可以從任意一方呼叫篩選,並可以在任一系統或獨立的協力廠商系統上執行篩選。

若要使用執行 SAVSE 的多台伺服器,則必須在其前端使用負載平衡器。僅使用一個位址來為 SpamAssassin 配置 MTA。

部署 SAVSE

執行以下步驟以部署 SAVSE。

SAVSE 配置範例

以下範例可測試到達本機郵件儲存的郵件,並捨棄帶有附加病毒的郵件。前三個步驟可以任何次序執行。

  1. 建立 SAVSE 配置檔案。
  2. 此檔案的名稱和位置在步驟 2 中指定。此處使用的名稱為 SAVSE.opt。此檔案的範例顯示如下:

    host=127.0.0.1
    port=1344
    mode=0
    verdict=virus
    debug=1

    hostport 指定執行 SAVSE 程式的系統之名稱,以及其偵聽內送的請求的埠 (SAVSE 的預設值為 1344)。mode=0 指定如果判定郵件含有病毒,則傳回由 verdict 指定的字串 (此範例中指定為 virus 一字)。debug=1 啟動除錯。請參閱表 14-6,以取得有關 ICAP 配置參數的描述。

  3. 建立 option.dat 檔案。範例:

    ! for Symantex Anti-virus Scan Engine
    spamfilter1_config_file=/opt/SUNWmsgsr/config/SAVSE.opt
    spamfilter1_library=/opt/SUNWmsgsr/lib/libicap.so
    spamfilter1_optional=1
    spamfilter1_string_action=data:,discard

  4. spamfilter1_config_files 指定 SAVSE 配置檔案。

    spamfilter1_library 指定 SAVSE 共用程式庫的位置。

    spamfilter1_optional=1 指定如果因 SAVSE 程式而發生故障,則 MTA 繼續作業。

    spamfilter1_string_action 指定對垃圾郵件採取的篩選動作。此值可指定捨棄帶有病毒的郵件。由於這是預設值,除非您要變更此值,否則無須進行指定。

  5. 指定要篩選的郵件。
  6. 若要篩選進入本地郵件儲存的所有郵件,請將 destinationspamfilter1optin spam 關鍵字增加至 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 destinationspamfilter1optin virus
    ims-ms-daemon

  7. 重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。您無需執行 stop-msg
  8. # imsimta cnbuild
    # imsimta restart

  9. 確定已啟動 SAVSE。
  10. 它應該已自動啟動,否則啟動指令可能如下所示:
    /etc/init.d/symcscna start

其他可能的配置

mode 設定為 0 可與 spamfilterX_null_option 一起使用,以採取其他動作 (例如,確定郵件為垃圾郵件時,將其歸檔至特定的資料夾)。例如:

spamfilter1_null_option=data:,require "fileinto"; fileinto "VIRUS";

請注意,在大多數情況下,將被感染的郵件歸檔至資料夾並不是一個好方法。

mode 設定為 1 可用於啟動動作。例如,可以將垃圾郵件結果納入拒絕郵件中,方法是將 mode 設定為 1,並將 MTA 中的 spamfilterX_string_action 選項設定為以下形式:

spamfilter1_string_action=data:,require "reject"; reject "Message contained a virus [$U]";

fileinto 相同,使用 reject 動作處理病毒並不是個好方法,因為它會將病毒傳回給寄件者。

您還可以透過在 option.dat 檔案中增加一行來新增標記至垃圾郵件標頭。範例:

spamfilter1_string_action=data:,addtag "[SPAM detected!]";

mode 設定為 2 可用於需要採取動作的情況,無論郵件是否確定為含有病毒。增加可以後測試的標頭欄位明顯適用於模式 2。

spamfilterX_string_action=data:,require ["addheader"];addheader "$U"

SAVSE 選項

SAVSE 選項檔案確實是一個更為通用的 ICAP 選項檔案。其名稱與位置由 option.dat 中的 spamfilterX_config_file 來設定。它由形式為 option=value 的行組成。所需的一個選項為 HOST。它必須設定為執行 ICAP 篩選伺服器的系統之名稱。必須設定此選項,即使 ICAP 伺服器在本地主機上執行。下面顯示了此選項檔案。

ICAP mode 選項

處理完一封郵件後,SASVE 等 ICAP 防毒程式確定郵件是否有病毒。﹝mode 讓您可以指定由表示此判定結果的 ICAP 程式傳回的字串。該字串可以為預設值ICAP 結果字串verdict 字串 (使用 verdict 選項指定)。請注意預設值不是空、ICAP 結果字串,也不是由 verdict 指定的字串,而是由程式傳回的某些其他的不可配置的字串。下表概述了 mode 作業。

表 14-7  傳回的 ICAP mode 選項的判定結果字串

verdict 設定

是否
病毒?

mode=0

mode=1

mode=2

mode=3

verdict=""   (未設定)

   是

ICAP 結果

ICAP 結果

ICAP 結果

   否

預設值

預設值

ICAP 結果

預設值

verdict=string

   是

verdict string

ICAP 結果

ICAP 結果

ICAP 結果

    no

預設值

預設值

ICAP 結果

verdict string

第一欄表示 verdict 選項是否已經設定。第二欄表示郵件是否包含病毒。模式欄表示傳回的各種模式字串。例如,如果 verdict 未設定,mode 設定為 0 且郵件不包含病毒,則 ICAP 程式傳回預設值。如果 verdict 設定為 WARNING VIRUS!mode 設定為 0,且郵件不包含病毒,則 ICAP 程式傳回字串 YO SPAM!


支援篩選延伸

除標準篩選功能之外,Messaging Server 還支援大量的延伸篩選功能 (例如 addheaderaddtagspamtestspamadjust)。將包含 SpamAssassin 分值的標頭增加至垃圾郵件將 SpamAssassin 結果字串增加至主旨行描述了 addheaderaddtag。而此處則描述 spamtestspamadjust

這些延伸可讓管理員設定不同的臨界值,以及設定置換 SpamAssassin 判定結果的安全名單。甚至可以將二者組合起來,以根據傳送特定郵件的寄件者使用不同的臨界值。spamadjust 為非標準動作。ftp://ftp.isi.edu/in-notes/rfc3685.txt 中描述了spamtest

spamtest 可用於將 SpamAssassin 分值與特定值進行比較,方法是使用篩選 [RELATIONAL] 延伸與 "i;ascii-numeric" 比較器來比較二者。SpamAssassin 分值通常為實數,但 spamtest 透過首先將分值捨入為最接近的整數,將分值強制為 0 到 10 之間的整數值。小於 0 的值強制增加為 0,而大於 10 的值強制縮小為 10。最後,附加 Messaging Server 維護的文字字串,以產生 spamtest 測試得到的測試字串。

spamadjust 用於調整目前垃圾郵件分值。此動作使用要對其進行實數值掃描的單一字串引數。此值用於調整目前垃圾郵件分值。整個字串也會附加至目前的分值文字字串。在下面顯示的範例中,字串應為「undisclosed recipients」。

允許多個 spamadjust 動作,每個動作均被增加至目前分值。此外,分值值始終從 0 開始。允許簽署的數字值,以可能降低和提高目前分值。spamadjust 沒有 require 陳述;而應該列示 spamtest 延伸。

例如,可將 spamadjust 與設定為 2 的 SpamAssassin MODE 配合使用,如下所示:

spamfilterX_string_action=data:,require ["spamtest"];spamadjust "$U";

然後,系統級別的篩選器就可以透過檢查特定類型的標頭 (如果找到,將 SpamAssassin 分值增加 5) 修改 SpamAssassin 分值:

spamfilter1_string_action=require "spamtest";                                    \
if header :contains ["to", "cc", "bcc", "resent-to", "resent-cc", "resent-bcc"]  \
                    ["<undisclosed recipients>", "undisclosed.recipients"]       \
{spamadjust "+5 undisclosed recipients";}

最後,使用者級別的篩選程序檔可以測試結果值、捨棄確定為垃圾郵件的郵件、歸檔可能是垃圾郵件的郵件和允許來自本機網域中位址的郵件通過:

spamfilter1_string_action=require ["spamtest", "relational",  \
"comparator-i;ascii-numeric", "fileinto"];                   \
if anyof (address :matches "from" ["*@siroe.com",            \
                                   "*@*.siroe.com"])         \
    {keep;}                                                  \
elsif spamtest :value "ge" :comparator "i;ascii-numeric" "8" \
    {discard;}                                               \
elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" \
    {fileinfo "spam-likely";}                                \
else                                                         \
   {keep;}                                                   



上一個      目錄      索引      下一個     


Copyright 2005 Sun Microsystems, Inc. 版權所有。