Sun Java System Messaging Server 6 2005Q4 管理指南

第 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 是前兩個可與整合的垃圾郵件篩選程式。 MTA 現在支援使用 ICAP 的程式。

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

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


備註 –

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


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

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

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

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 配置為依使用者、網域或通道篩選郵件。以下小節描述了這些情形:


備註 –

表示式 optin 表示選取接收郵件篩選的使用者、網域或通道。


Procedure指定使用者級別的篩選

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

步驟
  1. 指定啟動垃圾郵件篩選軟體的使用者 LDAP 屬性。

    option.dat 中設定 LDAP_OPTINX 選項。範例:


    LDAP_OPTIN1=SymantecAV
    LDAP_OPTIN2=SpamAssassin
  2. 在接收垃圾郵件篩選的使用者項目中設定篩選器屬性。

    篩選器屬性有多個值並且取決於伺服器。如果使用步驟 1 中的範例則項目為:


    SymantecAV: virus
    SpamAssassin: spam

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


    Brightmail: spam
    Brightmail: virus

使用者級別的篩選範例

此範例假設在使用。還假設在 option.dat 檔案中已將 LDAP_OPTIN1 設定為 Brightmail。使用者 Otis Fanning 在其使用者項目中將 Brightmail 屬性設定為 spamvirus。Brightmail 將對其郵件進行篩選,以檢查是否為垃圾郵件和帶有病毒。使用者級別的篩選範例顯示 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: password
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)

Procedure指定網域級別的篩選

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

步驟
  1. 指定啟動篩選軟體的網域 LDAP 屬性。

    option.dat 中設定 LDAP_DOMAIN_ATTR_OPTINX 選項。範例:


    LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV
    LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin
    
  2. 在接收垃圾郵件篩選的網域項目中設定篩選器屬性。

    篩選器屬性有多個值並且取決於伺服器。如果使用步驟 1 中的範例則項目為:


    SymantecAV: virus
    SpamAssassin: spam

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


    Brightmail: spam
    Brightmail: virus

網域級別的篩選範例

此範例假設在使用。還假設已在 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 Brightmail 的範例 LDAP 網域項目


dn: dc=sesta,dc=com,o=internet
objectClass: domain
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),以取得更多範例和詳細資訊。

Procedure指定通道級別的篩選

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

Messaging Server 可讓您指定依來源通道或目標通道進行篩選。表 14–1 中說明的通道關鍵字即為進行此作業的機制。以下範例展示如何設定通道級別的篩選。

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

    msg_store1.siroe.com $U@msg_store1.siroe.com

  2. 透過 destinationspamfilterXoptin 關鍵字增加對應於該重寫規則的通道。範例:


    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
    

通道級別的篩選範例

這些範例假設一個由數字 1 指定的篩選程式。它們使用下表中的關鍵字。

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

通道關鍵字 

說明 

destinationspamfilterXoptin

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

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

ims-ms destinationspamfilter1optin spam,virus. . .

sourcespamfilterXoptin

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

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

Procedure對 MTA 轉送至後端郵件儲存的郵件進行篩選

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

    msg_store1.siroe.com   $U@msg_store1.siroe.com
  2. 透過 destinationspamfilterXoptin 關鍵字增加對應該重寫規則的通道。範例:

    tcp_msg_store1 smtp subdirs 20 backoff “pt5m” “pt10” “pt30” “pt1h” \
    “pt2h” “pt4h” maxjobs 1 pool IMS_POOL fileinto $U+$S@$D \
    destinationspamfilter 1optin 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 在兩層系統中篩選目標為本機郵件儲存的所有郵件,而不使用使用者 optin:

    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 以取得完整的篩選語法。另請參閱


篩選程序檔是透過表 14–2 中說明的 MTA 垃圾郵件篩選器選項 (option.dat) 指定的。主要的垃圾郵件篩選器動作選項包括 SpamfilterX_null_action (指定傳回的垃圾郵件判定結果值為空值時所要執行的篩選規則) 和 Spamfilter X_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 垃圾郵件篩選器選項 (option.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_optinXLDAP_domain_attr_optinX 定義的屬性值,則會導致 MTA 執行該屬性不存在所執行的動作。即,停用對該項目的篩選。請參閱指定要篩選的郵件

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

SpamfilterX_null_action

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

SpamfilterX_string_action

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

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

其中,$U判定結果傳回的字串。

spamfilterX_verdict_n

spamfilterX_verdict_nspamfilterX_action_n 組成相符的一對選項,其中,n 是 0 到 9 之間的一個數字。這兩個選項可讓您為任意判定結果字串指定篩選器。執行方法為:將 spamfilterX_verdict_nspamfilterX_action_n 分別設定為判定結果字串和篩選器,其中,n 是 0 到 9 之間的一個整數。例如,站點可透過指定以下內容使「reject」判定結果導致篩選 reject 動作:


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 還會傳送 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 指定使用中的處理作業時使用的術語是 optin) 層級決定。依以下準則指定:

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

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

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

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

Brightmail 需求與效能注意事項

部署 Brightmail

執行以下步驟以部署 Brightmail。

Brightmail 配置選項

表 14–3 顯示選取的 Brightmail 配置檔案選項。可從 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_nBrightmail_action_nBrightmail_null_actionBrightmail_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 包括一個以 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 結果字串或判定結果字串。請參閱SpamAssassin 選項,以取得詳細資訊。

SpamAssassin 需求與用法注意事項

SpamAssassin 在何處執行?

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

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

佈署 SpamAssassin

執行以下步驟以部署:

SpamAssassin 配置範例

本小節說明了一些常用 SpamAssassin 配置範例:


備註 –

這些範例使用了一些選項和關鍵字。請參閱表 14–1表 14–2


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

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

步驟
  1. 建立 SpamAssassin 配置檔案。

    步驟 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

  2. 將以下行增加至 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:,require "fileinto"; fileinto "$U";
                      

    spamfilter1_config_file 指定 SpamAssassin 配置檔案。

    spamfilter1_library 指定 SpamAssassin 共用程式庫。

    spamfilter1_optional=1 指定即使因 spamd 而發生故障,MTA 仍繼續作業。

    spamfilter1_string_action 指定對垃圾郵件執行的篩選動作。

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

  3. 指定要篩選的郵件。

    1若要篩選進入本機郵件儲存的所有郵件,請將 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
  4. 重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。無需執行 stop-msg


    # imsimta cnbuild
    # imsimta restart
    
  5. 啟動 spamd 常用程式。通常以指令啟動,指令的形式為:

    spamd -d

    spamd 預設為僅接受來自本機系統的連線。如果 SpamAssassin 和 Messaging Server 在不同系統上執行,則需要以下語法:

    spamd -d -i listen_ip_address -A allowed_hosts

    其中,listen_ip_address 表示偵聽時所在的位址,而 allowed_hosts 表示可以連線此 spamd 實例的授權主機或網路 (使用 IP 位址) 清單。


    備註 –

    0.0.0.0 可與 -i listen_ip_address 配合使用,以使 spamd 偵聽所有位址。最好偵聽所有位址,因為 spamfilterX_verdict_n 可避免在變更系統 IP 位址時必須變更指令程序檔。


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

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

Spam-test: True ; 7.3 / 5.0

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

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

步驟
  1. 指定要篩選的郵件。這在將垃圾郵件歸檔至單獨的資料夾步驟 3 中有說明。

  2. 建立 SpamAssassin 配置檔案。

    此檔案的名稱與位置可使用 spamfilter_configX_file 指定 (請參閱下一個步驟)。包含以下各行:


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

    hostport 指定執行 spamd 的系統之名稱和 spamd 偵聽內送請求時所在的連接埠。mode=1 指定如果郵件被確定為垃圾郵件,則傳回 SpamAssassin 結果字串。field= 指定 SpamAssassin 結果字串的字串前綴。在此範例中,前綴並不是必需的,因為我們會在篩選程序檔中指定它。debug=1 開啟 SpamAssassin 程式庫中的除錯處理。

  3. 將以下行增加至 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";
                      
    

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

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

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

  4. 重新編譯配置,重新啟動伺服器,並啟動 spamd 常駐程式。

    請參閱SpamAssassin 配置範例

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

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

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

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

步驟
  1. 指定要篩選的郵件。

    請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 3

  2. 建立 SpamAssassin 配置檔案。

    此步驟在將垃圾郵件歸檔至單獨的資料夾中有說明。mode=1 指定如果郵件被確定為垃圾郵件,則傳回 SpamAssassin 結果字串。


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

    hostport 指定執行 spamd 的系統之名稱和 spamd 偵聽內送請求時所在的連接埠。mode=1 指定如果郵件為垃圾郵件,則傳回 SpamAssassin 結果字串。debug=1 開啟 SpamAssassin 程式庫中的除錯處理。

  3. 將以下行增加至 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]”;
                      
    

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

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

    指定將標記增加至 Subject: 行。它具有文字列前綴 SPAM detected,其後是欄位字串 (預設:Spam-Test),其後是 SpamAssassin 傳回的「[result string]」。因為在SpamAssassin 配置範例中指定了 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

  4. 重新編譯配置,重新啟動伺服器,並啟動 spamd 常駐程式。

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

測試 SpamAssassin

若要測試 SpamAssassin,首先請在 spamassassion.opt 檔案中設定 debug=1。無須在 imta.cnf 中啟動通道專用的 master_debugslave_debug。然後將測試郵件傳送給測試使用者。msg_svr_base/data/log/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
         

SMTP 伺服器接收到完整的郵件後 (即接收到最後一個「.」後),且在向寄件者確認其已接收郵件前,將呼叫 SpamAssassin。

另一個測試為使用目錄中的 (如 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 選項表。

表 14–4 SpamAssassin 選項 (spamassassin.opt)

選項 

說明 

預設 

debug

指定是否在 libspamass.so 中開啟除錯除錯處理。spamd 本身的除錯處理由呼叫 spamd 的指令行進行控制。設定為 0 或 1。

field

指定 SpamAssassin 結果的字串前綴。SpamAssassin 結果如下: 

Spam-Test: False ; 0.0 / 5.0 Spam-Test: True ; 27.7 / 5.0

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

如果將 USE_CHECK 設定為 0,則結果字串將類似於:

Spam-test: False ; 0.3 / 4.5 ; HTML_MESSAGE,NO_REAL_NAME 

Spam-test: True ; 8.8 / 4.5 ; NIGERIAN_BODY, NO_REAL_NAME,PLING_PLING,RCVD_IN_SBL,SUBJ_ALL_CAPS 

「Spam-test」 

host

執行 spamd 的系統名稱。

localhost 

mode

控制 SpamAssassin 篩選結果至判定結果資訊的轉譯。即,它指定處理郵件後所傳回的判定結果資訊。可以使用四種模式。請參閱SpamAssassin mode 選項,以取得詳細說明。

0 - 如果郵件為垃圾郵件,則傳回判定結果字串 (該字串由 verdict 選項指定)。MTA 選項 spamfilterX_string_action 可用於指定傳回 verdict 字串時所執行的作業。如果 verdict 選項 (如下定義) 為空或未指定,且郵件為垃圾郵件,則傳回空判定結果。MTA 選項 spamfilterX_null_action 可用於指定傳回空判定結果時所執行的作業。

如果郵件不是垃圾郵件,則傳回 SpamAssassin 預設結果字串。(預設判定結果字串始終表示不採取任何動作並正常投遞。)

1 - 如果發現郵件是垃圾郵件,則傳回 SpamAssassin 結果字串。如果郵件不是垃圾郵件,則傳回 SpamAssassin 預設結果字串。(同樣,預設判定結果字串始終表示不採取任何動作並正常投遞。)SpamAssassin 結果字串如下:True; 6.5 / 7.3

2 與模式 1 相同,除了無論郵件是否為垃圾郵件均傳回 SpamAssassin 結果字串。未傳回預設判定結果或空判定結果,並且從未使用 verdict 選項。

3 - 如果發現郵件是垃圾郵件,則傳回 SpamAssassin 結果字串;否則傳回由 verdict 選項指定的判定結果字串。可以使用相符的選項對 spamfilterX_verdict_nspamfilterX_action_n 控制對 SpamAssassin 結果字串執行的動作。可以使用 spamfilterX_string_action 控制對判定結果字串執行的動作。

port

指定 spamd 偵聽內送請求時所在的連接埠號碼。

783 

USE_CHECK

1 - spamd CHECK 指令用於傳回 SpamAssassin 分值。

0 - 啟用 SYMBOLS 指令,該指令可傳回分值及匹配的 SpamAssassin 測試清單。在 2.55 版本之前的 SpamAssassin 中,使用此選項可能會使系統當機或產生其他問題。請參閱以上 field

 

SOCKS_HOST

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

"" 

SOCKS_PORT

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

1080 

SOCKS_PASSWORD

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

"" 

SOCKS_USERNAME

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

"" 

verdict

指定用於 MODE 0 的判定結果字串。 

“” 

SpamAssassin mode 選項

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

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

verdict\設定

是否垃圾郵件? 

mode=0

mode=1

mode=2

mode=3

verdict="" (未設定)

是 

空 

SpamAssassin 結果 

SpamAssassin 結果 

SpamAssassin 結果 

no 

預設 

預設 

SpamAssassin 結果 

預設 

verdict=string

是 

verdict string

SpamAssassin 結果 

SpamAssassin 結果 

SpamAssassin 結果 

no 

預設 

預設 

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 website 以取得詳細資訊


備註 –

目前版本的 Messaging Server 僅支援 SAVSE 掃描功能。不支援修復或刪除功能。


SAVSE 需求與用法注意事項

這是 Symantec 單獨授權的產品。

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

SAVSE 在何處執行?

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

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

部署 SAVSE

執行以下步驟以部署 SAVSE。

SAVSE 配置範例

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

Procedure配置 SAVSE

步驟
  1. 建立 SAVSE 配置檔案。

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


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

    hostport 指定執行 SAVSE 程式的系統之名稱以及 SAVSE 程式偵聽內送請求時所在的連接埠號碼 (對 SAVSE 來說,預設值為 1344)。mode=0 指定如果偵測到郵件中包含病毒,則將傳回由 verdict 指定的字串 (此處為 virus)。debug=1 開啟除錯處理。請參閱SAVSE 選項,以取得有關 ICAP 配置參數的說明。

  2. 建立 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
                      

    spamfilter1_config_files 指定 SAVSE 配置檔案。

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

    spamfilter1_optional=1 指定即使因 SAVSE 程式而發生故障, MTA 仍將繼續作業。

    spamfilter1_string_action 指定對垃圾郵件執行篩選動作。此值可指定捨棄帶有病毒的郵件。由於這是預設值,所以無需指定,除非要變更此值。

  3. 指定要篩選的郵件。

    若要篩選進入本機郵件儲存的所有郵件,請將 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
  4. 重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。無需執行 stop-msg


    # imsimta cnbuild
    # imsimta restart
    
  5. 確定 SAVSE 已啟動。

    它應該已自動啟動,否則啟動指令可能如下所示:/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 伺服器在本地主機上執行。下面顯示了此選項檔案。

表 14–6 ICAP 選項

選項 

說明 

預設 

debug

啟用或停用 ICAP 介面模組的除錯輸出。0 或 1。 

field

指定 ICAP 結果的前綴。SAVSE 結果字串如下: 

Virus-Test: False Virus-Test: True; W32.Mydoom.A@mm.enc

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

Virus-test 

host

執行 ICAP 篩選伺服器的系統之名稱 

localhost 

mode

控制 ICAP 篩選結果至判定結果資訊的轉譯。亦即它指定郵件處理後所傳回的字串資訊。可以使用四種模式。請參閱ICAP mode 選項,以取得詳細說明。

0 - 如果郵件含有病毒,則傳回判定結果字串 (該字串由 verdict 選項指定)。MTA 選項 spamfilterX_string_action 可用於指定傳回判定結果字串時所採取的作業。如果 verdict 選項為空或未設定,則傳回空判定結果。MTA 選項 spamfilterX_null_action 可用於指定傳回空判定結果以及您想置換預設動作 (即捨棄郵件) 時所執行的作業。

如果該郵件不包含病毒,將傳回預設字串。預設字串不可配置且始終表示不採取任何動作並正常投遞。 

1 - 如果發現郵件包含病毒,則傳回 ICAP 結果字串。 如果該郵件不包含病毒,將傳回預設字串。預設字串始終表示不採取任何動作並正常投遞。以下是兩個 ICAP 結果字串範例:

VIRUS TEST: FALSEVIRUS-TEST: TRUE; W32.Mydoom.A@mm.enc

2 - 無條件地傳回 ICAP 結果字串;未傳回預設判定結果或空判定結果,並且從未使用 verdict 選項。此設定適用於無論郵件是否確定為含有病毒均需要採取一個動作的情況。增加可以後測試的標頭欄位明顯適用於模式 2:

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

3 - 如果發現郵件包含病毒,則傳回 ICAP 結果字串;否則傳回 verdict 選項所指定的判定結果字串。此設定適用於發現病毒時採取一個動作,沒發現病毒時採取另一個動作的情況。您可以使用相符的選項對 spamfilterX_verdict_nspamfilterX_action_n 來控制對 ICAP 結果字串執行的動作。您可以使用 spamfilterX_string_action 控制對 verdict 字串執行的動作。

port

指定執行 ICAP 伺服器時所在的連接埠號碼。

1344 

SOCKS_HOST

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

"" 

SOCKS_PORT

整數。指定中間 SOCKS 伺服器執行時所在的埠。 

1080 

SOCKS_PASSWORD

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

"" 

SOCKS_USERNAME

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

"" 

verdict

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

"" 

ICAP mode 選項

處理郵件後,ICAP 防病毒程式 (如 SASVE) 將決定該郵件是否包含病毒。mode 可讓您指定 ICAP 程式傳回的、表示此判定結果的字串。字串選項為預設值ICAP 結果字串判定結果字串 (透過 verdict 選項指定)。請注意,預設值不是空、ICAP 結果字串,也不是由 verdict 指定的字串,而是由程式傳回的某些其他的不可配置的字串。下表概述了 mode 作業。

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

verdict\設定

是否病毒? 

mode=0

mode=1

mode=2

mode=3

verdict="" (未設定)

是 

空 

ICAP 結果 

ICAP 結果 

ICAP 結果 

no 

預設 

預設 

ICAP 結果 

預設 

verdict=string

是 

verdict string

ICAP 結果 

ICAP 結果 

ICAP 結果 

no 

預設 

預設 

ICAP 結果 

verdict string

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

支援篩選延伸

除了標準篩選功能外,Messaging Server 還提供對數個篩選功能延伸的支援,這些功能延伸包括 addheaderaddtagspamtestspamadjust。在將包含 SpamAssassin 分值的標頭增加至垃圾郵件將 SpamAssassin 結果字串增加至主旨行中對 addheaderaddtag 進行了說明。

這些延伸可讓管理員設定不同的臨界值以及設定置換 SpamAssassin 判定結果的安全名單。甚至可以將兩者合併,以設定不同的臨界值,具體視特定郵件的傳送者而定。spamadjust 為非標準動作。spamtestftp://ftp.isi.edu/in-notes/rfc3685.txt 中有說明。

spamtest 可用於對 SpamAssassin 分值和特定值進行比較,方法是將篩選 [RELATIONAL] 延伸與 "i;ascii-numeric" 比較器配合使用。SpamAssassin 分值通常為實數,但 spamtest 首先將分值捨入為最接近的整數,從而將分值強制變更為 0 到 10 之間的整數值。小於 0 的數值強制變更為 0,大於 10 的數值強制變更為 10。最終,附加由 Messaging Server 維護的文字字串,以產生 spamtest 測試可查看的測試字串。

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

允許多個 spamadjust 動作;每個動作均被計入目前分值。此外分值永遠從 0 開始。允許簽署的數字值,才能降低和提高目前分值。沒有針對 spamadjustrequire 陳述式;而應該為列示 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;}