本章說明如何將垃圾郵件和病毒篩選軟體與 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 將郵件的副本傳送至垃圾郵件篩選軟體。
垃圾郵件篩選軟體對郵件進行分析並傳回其是否為垃圾郵件的判定結果。某些程式 (例如 SpamAssassin) 還可以傳回垃圾郵件分值,該分值代表郵件可能為垃圾郵件的比率數。
Messaging Server 會讀取判定結果並對郵件訊息執行篩選動作 (請參閱指定要在垃圾郵件上執行的動作)。
垃圾郵件篩選程式透過某項協定與 MTA 互動。該協定可能是標準協定 (例如在基於 ICAP 的程式中,如 Symantec AntiVirus Scan Engine) 、專用協定 (例如在 Brightmail 中),或僅是非標準協定 (例如在 SpamAssassin 中)。每項協定均需要軟體結合以便與 MTA 互動。Brightmail 和 SpamAssassin 是前兩個可與整合的垃圾郵件篩選程式。 MTA 現在支援使用 ICAP 的程式。
在 Messaging Server 上部署協力廠商篩選軟體需要執行以下 5 項動作:
決定要部署哪些垃圾郵件篩選程式,以及多少台伺服器上進行部署。Messaging Server 可讓您最多使用四種不同的垃圾郵件/病毒程式篩選內送郵件。這些程式可在獨立的系統上執行、在與 Messaging Server 相同的系統上執行 (單一系統部署中),或在與 MTA 相同的系統上執行 (兩層部署中)。 需要的伺服器數目取決於郵件負載、硬體效能和其他因素。請參閱您的垃圾郵件篩選軟體文件,或與您的代表聯絡,以取得有關確定站點之硬體需求的使用準則。
安裝和配置垃圾郵件篩選軟體。請參閱您的垃圾郵件篩選軟體文件,或與您的代表聯絡,以取得此資訊。
載入和配置篩選用戶端程式庫。這包括在 MTA option.dat 檔案中指定用戶端程式庫和配置檔案,以及在篩選軟體的配置檔案中設定所需的選項。載入與配置垃圾郵件篩選軟體用戶端程式庫
指定要篩選的郵件。可以依使用者、網域或通道篩選郵件。指定要篩選的郵件。
指定如何處理垃圾郵件。可以將垃圾郵件捨棄、歸檔至資料夾、標記在主旨行等等。指定要在垃圾郵件上執行的動作
舊版本的 Messaging Server 僅支援 Brightmail 篩選技術,因此,關鍵字和選項具有 sourcebrightmail 或 Brightmail_config_file 之類的名稱。這些關鍵字和選項已變更為更通用的名稱,例如 sourcespamfilter 或 spamfilter_config_file。先前的 Brightmail 名稱仍然保留,以確保相容性。
每個垃圾郵件篩選程式均需要為提供用戶端程式庫檔案和配置檔案。載入與配置用戶端程式庫包括兩項作業:
在 option.dat 檔案中指定垃圾郵件篩選軟體程式庫路徑 (spamfilter X_library) 和配置檔案 (spamfilterX_config_file )。除這些選項之外,許多其他選項也可用於指定垃圾郵件篩選 LDAP 屬性及垃圾郵件上使用的篩選動作。
在垃圾郵件篩選軟體配置檔案中指定所需的選項。每個垃郵件篩選程式均具有不同的配置檔案和配置選項。有關垃圾郵件篩選軟體的小節和篩選軟體文件中都有相關描述。請參閱使用 Symantec Brightmail Anti-Spam和使用 Symantec Anti-Virus Scanning Engine (SAVSE)。
Messaging Server 最多可呼叫四個不同的篩選系統對郵件進行篩選。例如,您可以同時透過 Symantec AntiVirus Scan Engine 和 SpamAssassin 篩選郵件。每個篩選軟體由 1 到 4 來識別。這些數字顯示為各種垃圾郵件篩選選項、LDAP 屬性以及通道關鍵字的一部分;X 用作篩選器識別碼。例如,sourcespamfilterXoptin 或 spamfilterX_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 表示選取接收郵件篩選的使用者、網域或通道。
它可適用於針對每個使用者指定篩選。例如,如果垃圾郵件或病毒篩選是做為優惠服務提供給 ISP 客戶的,您可以指定可接收此服務的使用者和不可接收此服務的使用者。使用者篩選的一般步驟如下:
指定啟動垃圾郵件篩選軟體的使用者 LDAP 屬性。
在 option.dat 中設定 LDAP_OPTINX 選項。範例:
LDAP_OPTIN1=SymantecAV LDAP_OPTIN2=SpamAssassin |
在接收垃圾郵件篩選的使用者項目中設定篩選器屬性。
篩選器屬性有多個值並且取決於伺服器。如果使用步驟 1 中的範例則項目為:
SymantecAV: virus SpamAssassin: spam |
對於可同時篩選病毒和垃圾郵件的程式 (如 Brightmail),有效值為 spam 和 virus。用作多值屬性時每個值均需要單獨的屬性項目。例如,如果將 Brightmail 的篩選器屬性設定為 Brightmail,則項目為:
Brightmail: spam Brightmail: virus |
此範例假設在使用。還假設在 option.dat 檔案中已將 LDAP_OPTIN1 設定為 Brightmail。使用者 Otis Fanning 在其使用者項目中將 Brightmail 屬性設定為 spam 和 virus。Brightmail 將對其郵件進行篩選,以檢查是否為垃圾郵件和帶有病毒。使用者級別的篩選範例顯示 Otis Fanning 的 Brightmail 使用者項目。
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)
您可以指定接收篩選的網域。此功能的一個範例就是是否將防垃圾郵件或防毒篩選作為優惠服務提供給 ISP 網域客戶。指定網域篩選的一般步驟如下:
指定啟動篩選軟體的網域 LDAP 屬性。
在 option.dat 中設定 LDAP_DOMAIN_ATTR_OPTINX 選項。範例:
LDAP_DOMAIN_ATTR_OPTIN1=SymantecAV LDAP_DOMAIN_ATTR_OPTIN2=SpamAssassin |
在接收垃圾郵件篩選的網域項目中設定篩選器屬性。
篩選器屬性有多個值並且取決於伺服器。如果使用步驟 1 中的範例則項目為:
SymantecAV: virus SpamAssassin: spam |
對於可同時篩選病毒和垃圾郵件的程式 (如 Brightmail),有效值為 spam 和 virus。用作多值屬性時,每個值均需要單獨的屬性值項目。例如,如果將 LDAP_DOMAIN_ATTR_OPTIN1 設定為 Brightmail,則項目為:
Brightmail: spam Brightmail: virus |
此範例假設在使用。還假設已在 option.dat 檔案中將 LDAP_DOMAIN_ATTR_OPTIN1 設定為 Brightmail。在 Sun LDAP Schema 1 DC 樹狀結構的 sesta.com 網域項目中,將 Brightmail 屬性設定為 spam 和 virus。對於 Sun LDAP Schema 2,您亦應在接收垃圾郵件篩選的網域項目中設定 Brightmail。
Brightmail 會篩選所有傳送至 sesta.com 的郵件,以檢查其是否為垃圾郵件和帶有病毒。以下顯示網域級別的篩選範例。
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),以取得更多範例和詳細資訊。
依來源或目標通道進行篩選會使垃圾郵件篩選更靈活、更精確。例如,您可能希望以下列方法進行篩選:
僅限於從特定 MTA 轉送至後端郵件儲存的郵件
來自特定 MTA 的所有送進郵件。
來自特定 MTA 的所有外寄郵件。
來自特定 MTA 的送進郵件和外寄郵件。
Messaging Server 可讓您指定依來源通道或目標通道進行篩選。表 14–1 中說明的通道關鍵字即為進行此作業的機制。以下範例展示如何設定通道級別的篩選。
在所有內送 SMTP 伺服器 (負責將郵件傳送至後端郵件儲存主機) 的 imta.cnf 檔案中,增加一條重寫規則。範例:
msg_store1.siroe.com $U@msg_store1.siroe.com
透過 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 通道關鍵字
通道關鍵字 |
說明 |
---|---|
指定即使使用者或網域未透過 LDAP_OPTIN LDAP 屬性指定這些篩選服務,防垃圾郵件軟體 X 仍篩選目標為此通道的所有郵件。(在 option.dat 中,篩選軟體 X 由 spamfilterX 定義。)篩選參數取決於篩選程式,並遵循關鍵字。例如,Brightmail 的參數通常為 spam、virus 或 spam,virus。SpamAssassin 參數為 spam。 在此範例中所有目標為郵件儲存的郵件均由進行垃圾郵件掃描: ims-ms destinationspamfilter1optin spam,virus. . . |
|
指定即使使用者或網域未透過 LDAP_OPTIN LDAP 屬性指定這些服務,防垃圾郵件軟體 X 仍篩選來自此通道的所有郵件。此關鍵字後接系統範圍的預設參數,可用的參數視篩選程式而定。例如,對於 Brightmail,參數為 spam、virus 或 spam,virus。對於 SpamAssassin,參數為 spam。如果 switchchannel 生效,則應將此關鍵字置於切換至的通道上。 |
範例 1 對所有郵件進行垃圾郵件和病毒篩選,這些郵件從 MTA 轉送至稱為 msg_store1.siroe.com 的後端郵件儲存
在 imta.cnf 檔案 (負責將郵件傳送至後端郵件儲存主機) 中,增加一個重寫規則。範例:
msg_store1.siroe.com $U@msg_store1.siroe.com
透過 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 描述的複雜篩選程序檔亦有可能。
篩選程序檔是透過表 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-from 和 User-1,此行將假設字串判定結果值並對電子信箱 testspam 中的垃圾郵件進行歸檔。如果郵件不包含此標頭,則將郵件歸檔至 spam
spamfilter1_string_action=data:,require "fileinto"; \ if header :contains ["resent-from"] ["User-1"] { \ fileinto "testspam"; \ } else { \ fileinto "spam";};
因為判定結果字串可藉由大多數垃圾郵件篩選器軟體進行配置,所以您可以根據傳回的字串指定不同的動作。這可透過相符的配對選項 spamfilterX_verdict_n 和 spamfilterX_action_n 執行。
範例 7。這些相符的配對選項捨棄傳回的判定結果字串為 remove 的垃圾郵件。
spamfilter1_verdict_0=remove spamfilter1_action_0=data:,discard |
請參閱垃圾郵件篩選軟體的特定小節,以取得有關如何指定垃圾郵件判定結果字串的說明。
表 14–2 MTA 垃圾郵件篩選器選項 (option.dat)
適用於 SpamAssassin 的 MTA 選項 |
說明 |
|
---|---|---|
指定篩選軟體 X 配置檔案的完整檔案路徑和名稱。預設:無 |
||
指定篩選軟體 X 共用程式庫的完整檔案路徑和名稱。預設:無 |
||
控制篩選程式庫 X 報告的某些故障是否作為暫時性故障處理或被忽略。預設值 0 指定垃圾郵件篩選問題會導致暫時性處理故障。將值變更為 1 會導致在某些 (但可能並非所有) 篩選程式庫發生故障的情況下,略過垃圾郵件篩選器處理。尤其是,如果系統阻塞而未在程式庫程式碼中傳回,則 MTA 的一些部分也可能阻塞。還可以設定為 -2 和 2。它們分別與 0 和 1 相同,但是如果垃圾郵件篩選外掛程式報告發現問題,它們將造成發出系統記錄訊息。 預設:0 |
||
指定用於針對使用者啟動篩選軟體 X 之 LDAP 屬性的名稱。這應為 inetMailUser 物件類別中的屬性。 此屬性本身可以有多個值且區分大小寫。對於 SpamAssassin,它的值應為小寫的 spam。 預設:無 |
||
指定用於針對網域啟動篩選軟體 X 之屬性 LDAP 的名稱。適用於目標網域。除應屬於物件類別 mailDomain 之外,其餘與 LDAP_optin 相同。 預設:無 |
||
指定一個字串,如果發現該字串是由 LDAP_optinX 或 LDAP_domain_attr_optinX 定義的屬性值,則會導致 MTA 執行該屬性不存在所執行的動作。即,停用對該項目的篩選。請參閱指定要篩選的郵件 預設:空字串。依預設空屬性被忽略。(這與 iPlanet Messaging Server 5.2 不同,在 5.2 版中,空 optin 屬性藉由空 optin 清單觸發篩選。可透過將 spamfilterX_null_optin 設定為虛擬字串來復原 5.2 版的運作方式。)) |
||
定義一種篩選規則用於指定當篩選軟體 X 判定結果傳回空值時如何處理郵件。可透過使用檔案 URL 在外部儲存篩選表示式。例如:file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,請勿使用篩選 reject 動作拒絕垃圾郵件,因為這樣做會向無辜的一方 (其位址用於傳送垃圾郵件) 傳送「未傳送通知」。預設:data:,discard; |
||
定義一種篩選規則用於指定當判定結果為字串時如何處理郵件。可透過使用檔案 URL 在外部儲存篩選表示式。例如: file:///var/opt/SUNWmsgsr/config/null_action.sieve。此外,請勿使用篩選 reject 動作拒絕垃圾郵件,因為這樣做會向無辜的一方 (其伺服器用於傳送垃圾郵件) 傳送「未傳送通知」。 預設:data:,require "fileinto"; fileinto "$U; 其中,$U 為判定結果傳回的字串。 |
||
spamfilterX_verdict_n 和 spamfilterX_action_n 組成相符的一對選項,其中,n 是 0 到 9 之間的一個數字。這兩個選項可讓您為任意判定結果字串指定篩選器。執行方法為:將 spamfilterX_verdict_n 和 spamfilterX_action_n 分別設定為判定結果字串和篩選器,其中,n 是 0 到 9 之間的一個整數。例如,站點可透過指定以下內容使「reject」判定結果導致篩選 reject 動作:
所有 spamfilterX_verdict_n 選項及相應動作選項的預設值均為空字串。 預設:無 |
||
請參閱 spamfilterX_verdict_n。預設:無 |
||
某些篩選程式庫可以根據收件者位址執行一組動作。spamfilterX_final 指定傳送至篩選程式庫的收件者位址類型。值 0 可導致使用中間位址;1 可導致傳送收件者位址的最終格式。 預設:0 |
||
轉寄對於垃圾郵件篩選器處理而言是個挑戰。考量指定 forward 傳送選項以及指定其他使用者轉寄位址的使用者項目。此外,使用者項目設定為選擇加入某些特定類型的篩選。是否應該將篩選套用至轉寄的郵件?一方面,對特定使用者而言正確的篩選選擇對其他使用者卻不一定正確。另一方面,結束篩選作業可能會成為違反站點安全策略的手段。 沒有一個答案在所有情況下都是正確的,因此 OPTIN_USER_CARRYOVER 控制在轉寄時如何將垃圾郵件篩選 optin 清單從一個使用者或別名項目傳送至其他項目。這是位元編碼的值。各種位元值涵義如下: 位元 0 (值 1)。每個 LDAP 使用者項目無條件地置換先前使用中的任何使用者/網域 optin。 位元 1 (值 2)。如果使用者的網域具有 optin 屬性,則會置換先前任何使用中的使用者/網域/別名 optin。 位元 2 (值 4)。如果使用者具有 optin 屬性,則會置換先前使用中的任何使用者/網域/別名 optin。 位元 3 (值 8)。由 [optin] 非位置參數指定的 optin 置換先前使用中的任何使用者/網域/別名 optin。 預設:0 (如果一個使用者具有轉寄至其他使用者的投遞項目,則 optin 將會累積。此預設可確保站點安全策略在轉寄時有效;而其他設定則無法確保這一點。) |
Brightmail 解決方案包含 Brightmail 伺服器,以及下載至電子郵件伺服器的即時防垃圾郵件和防病毒規則更新。除以下各小節之外,請參閱「」。
Brightmail 伺服器部署於客戶站點。Brightmail 具有電子郵件探測設定為在整個網際網路偵測新垃圾郵件。Brightmail 技術人員會建立自訂規則,以即時封鎖該垃圾郵件。這些規則也會即時下載至 Brightmail 伺服器。Brightmail 資料庫更新後,Brightmail 伺服器會針對指定使用者或網域的電子郵件執行此資料庫篩選器。
圖 14–1 說明 Brightmail 架構。
當 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 啟用了來源通道或目標通道 (imta.cnf)
(imta.cnf) 中選擇加入的服務是否有預設通道
是否有針對網域的選擇加入 (LDAP)
是否有針對使用者的選擇加入 (LDAP)
對於任何特定郵件收件者,上述選擇加入和預設是合併的,這意味著如果通道預設已指定用於垃圾郵件和病毒,則無需再考量針對使用者的選擇加入。即,如果系統管理員決定對每個使用者進行垃圾郵件及病毒篩選,則無需為使用者提供選擇加入以篩選垃圾郵件或病毒的功能。無法選擇退出處理,即一旦使用者經由系統或網域選擇加入某種服務,便無法拒絕該服務。這還意味著如果您選擇加入某種服務,並且您的郵件已轉寄至另一位址,該位址將在該服務代您執行篩選作業後收到郵件。
在此只提供兩種服務即病毒或垃圾郵件偵測。雖然 Brightmail 也提供「內容篩選」服務,但此功能在使用篩選時提供,因此 Brightmail 執行篩選沒有附加值。
當郵件被確定為包含病毒時,伺服器可配置為清除病毒並將清除後的郵件重新提交回。(由於在重新提交的已清除郵件中有關原始郵件的資訊遺失會導致某些負面影響,我們建議您不要將 Brightmail 配置為將已清除郵件重新提交回 MTA。)如果郵件為垃圾郵件,從 Brightmail 傳回的判定結果以及 Brightmail 中的配置會讓 MTA 確定如何處理該郵件。郵件可以被捨棄、歸檔至資料夾、在主旨行標記為垃圾郵件或病毒、傳送至篩選規則、正常傳送至 INBOX 等。
Brightmail 伺服器可與 MTA 位於同一系統上也可位於不同系統上。實際上,您可以針對一個或多個 MTA 系統配備多台 Brightmail 伺服器。Brightmail SDK 使用 Brightmail 配置檔案來確定使用哪台 Brightmail 伺服器。
Brightmail 伺服器必須在 Solaris 作業系統上執行。
如果 Brightmail 執行垃圾郵件和病毒檢查,MTA 郵件流量就會減少 50%。若要保持 MTA 流量,則每個 MTA 可能需要兩個 Brightmail 伺服器。
雖然 SpamAssassin 可針對使用者執行不同類型的篩選,但它無法同時將兩組不同的篩選條件套用至同一郵件。因此,SpamAssassin 僅允許系統範圍的篩選。不可能針對個別使用者自訂篩選。
執行以下步驟以部署 Brightmail。
安裝和配置 Brightmail。請參閱 Brightmail 軟體文件或與相關代表聯絡以取得安裝與配置資訊。Brightmail 配置選項顯示選取的 Brightmail 配置選項,而最完整、最新的資訊則位於 Brightmail 文件中。
載入和配置 Brightmail 用戶端程式庫。這包括將 Brightmail 用戶端程式庫 libbmiclient.so 與配置檔案 config 指定給 MTA。請參閱載入與配置垃圾郵件篩選軟體用戶端程式庫。
指定要進行垃圾郵件篩選的郵件。可以依使用者、網域或通道篩選郵件。請參閱指定要篩選的郵件。
指定要對垃圾郵件執行的動作。可以將垃圾郵件捨棄、歸檔至資料夾、標記在主旨行等等。請參閱指定要在垃圾郵件上執行的動作。
依需要設定其他MTA 篩選器配置參數。請參閱表 14–2。
表 14–3 顯示選取的 Brightmail 配置檔案選項。可從 Brightmail 獲取 Brightmail 配置檔案選項的最完整清單。選項與值不區分大小寫。
表 14–3 選取的 Brightmail 配置檔案選項
Brightmail 選項 |
說明 |
---|---|
給定郵件可具有多種判定結果。此選項指定優先順序。因此,如果郵件先要處理病毒,然後再處理垃圾郵件 (如果您指定此選項為 virus-spam),各判定結果之間會以連字符號 (-) 分隔。將 Brightmail 與 Sun Java System Messaging Server 配合使用時,建議使用該選項。 |
|
指定如何遞送一般郵件,即非垃圾郵件或病毒, 因此這類郵件沒有判定結果。通常使用者會希望正常遞送此郵件,因此可以將值指定為 inbox。此選項沒有預設。 |
|
此屬性指定將哪些網域視為本機。此屬性可包含多行以指定數個網域所有這些網域都應視為本機。本機與外部網域用於指定同一判定結果的兩種不同處理方式。 請參閱以下 blSWClientDestinationLocal 和 blSWClientDestinationForeign。例如,您可以指定 blSWLocalDomain=siroe.com |
|
此選項指定本機網域的判定結果和動作對。此項目通常會有兩行,一行針對垃圾郵件,另一行則針對病毒。該值的形式為 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=spambox 和 Brightmail_action_0=data:,require "fileinto";fileinto "Junk"; 歸檔至名為 Junk (而非 spambox) 的資料夾。 |
|
格式與解譯與上述 blSWClientDestinationLocal 相同,除了它適用於非本機網域的使用者以外。 |
|
與 Sun Java System Messaging Server 配合使用時,始終將此設定為 TRUE。 |
|
格式為 ip:port[,ip:port,...],用於指定一台或多台 Brightmail 伺服器的 IP 位址和連接埠號碼 |
本節包含以下小節:
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。
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 是免費的。請移至 http//www.spamassassin.org,以取得軟體和文件。
SpamAssassin 可調校和配置以提供非常精確的垃圾郵件偵測。調校取決於您和 SpamAssassin 社群。Messaging Server 不提供或增強 SpamAssassin 的功能。
雖無特定的數據可用,但 SpamAssassin 似乎比 Brightmail 更能減少流量。
可以為使用者、網域或通道啟用與 MTA 整合的 SpamAssassin。
SpamAssassin 可配置為使用其他線上資料庫,例如 Vipul Razor 或 Distributed checksum clearinghouse (DCC)。
Messaging Server 不提供安全通訊端層 (SSL) 版本的 libspamass.so,但可以建立 SpamAssassin 來使用 openSSL。
需要 Perl 5.6 或更高版本。
SpamAssassin 可以在其自身的獨立系統上執行,在與 Messaging Server 在單一系統部署中相同的系統上執行或在與 MTA 在兩層部署中相同的系統上執行。如果在 MTA 與郵件儲存之間使用本機郵件傳送協定 (LMTP),則必須從 MTA 呼叫篩選,而不可從郵件儲存呼叫篩選。如果在 MTA 與郵件儲存之間使用 SMTP,則可以從任意一方呼叫篩選,並可以在任一系統或獨立的協力廠商系統上執行篩選。
若要使用多台伺服器執行 SpamAssassin,則必須在其前端使用負載平衡器。僅使用一個位址來為 SpamAssassin 配置 MTA。
執行以下步驟以部署:
安裝和配置 SpamAssassin。請參閱 SpamAssassin 軟體文件以取得有關安裝與配置的資訊。另請參閱SpamAssassin 選項。
載入和配置 SpamAssassin 用戶端程式庫。這包括將用戶端程式庫 libspamass.so 與配置檔案 (必須建立此檔案) 至 MTA。請參閱載入與配置垃圾郵件篩選軟體用戶端程式庫
指定要進行垃圾郵件篩選的郵件。可以依使用者、網域或通道篩選郵件。請參閱指定要篩選的郵件。
指定要對垃圾郵件執行的動作。可以將垃圾郵件捨棄、歸檔至資料夾、標記在主旨行等等。請參閱指定要在垃圾郵件上執行的動作。
依需要設定其他篩選器配置參數。請參閱表 14–2
這些範例使用了一些選項和關鍵字。請參閱表 14–1 和表 14–2。
此範例測試到達本機郵件儲存的郵件,並將垃圾郵件歸檔至稱為 spam 的資料夾。前三個步驟可以任何次序執行。
建立 SpamAssassin 配置檔案。
步驟 2 中指定了此檔案的名稱和位置。spamassassin.opt 是個很好的名稱。此檔案包含以下行:
host=127.0.0.1 port=2000 mode=0 verdict=spam debug=1 |
host 和 port 指定執行 spamd 的系統之名稱和 spamd 偵聽內送請求時所在的連接埠。mode=0 指定如果某郵件被偵測為垃圾郵件,則傳回由 verdict 指定的字串。debug=1 開啟 SpamAssassin 程式庫中的除錯處理。請參閱表 14–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:,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。
指定要篩選的郵件。
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 |
重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。無需執行 stop-msg。
# imsimta cnbuild # imsimta restart |
啟動 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 位址時必須變更指令程序檔。
此範例將標頭 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。
指定要篩選的郵件。這在將垃圾郵件歸檔至單獨的資料夾步驟 3 中有說明。
建立 SpamAssassin 配置檔案。
此檔案的名稱與位置可使用 spamfilter_configX_file 指定 (請參閱下一個步驟)。包含以下各行:
host=127.0.0.1 port=2000 mode=1 field= debug=1 |
host 和 port 指定執行 spamd 的系統之名稱和 spamd 偵聽內送請求時所在的連接埠。mode=1 指定如果郵件被確定為垃圾郵件,則傳回 SpamAssassin 結果字串。field= 指定 SpamAssassin 結果字串的字串前綴。在此範例中,前綴並不是必需的,因為我們會在篩選程序檔中指定它。debug=1 開啟 SpamAssassin 程式庫中的除錯處理。
將以下行增加至 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
重新編譯配置,重新啟動伺服器,並啟動 spamd 常駐程式。
透過將 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。
指定要篩選的郵件。
請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 3。
建立 SpamAssassin 配置檔案。
此步驟在將垃圾郵件歸檔至單獨的資料夾中有說明。mode=1 指定如果郵件被確定為垃圾郵件,則傳回 SpamAssassin 結果字串。
host=127.0.0.1 port=2000 mode=1 debug=1 |
host 和 port 指定執行 spamd 的系統之名稱和 spamd 偵聽內送請求時所在的連接埠。mode=1 指定如果郵件為垃圾郵件,則傳回 SpamAssassin 結果字串。debug=1 開啟 SpamAssassin 程式庫中的除錯處理。
將以下行增加至 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!
您還可以將 addheader 和 addtag 一同使用:
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
重新編譯配置,重新啟動伺服器,並啟動 spamd 常駐程式。
請參閱將垃圾郵件歸檔至單獨的資料夾。
若要測試 SpamAssassin,首先請在 spamassassion.opt 檔案中設定 debug=1。無須在 imta.cnf 中啟動通道專用的 master_debug 或 slave_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 選項表。
表 14–4 SpamAssassin 選項 (spamassassin.opt)
選項 |
說明 |
預設 |
---|---|---|
指定是否在 libspamass.so 中開啟除錯除錯處理。spamd 本身的除錯處理由呼叫 spamd 的指令行進行控制。設定為 0 或 1。 |
0 |
|
指定 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」 |
|
執行 spamd 的系統名稱。 |
localhost |
|
控制 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_n 和 spamfilterX_action_n 控制對 SpamAssassin 結果字串執行的動作。可以使用 spamfilterX_string_action 控制對判定結果字串執行的動作。 |
0 |
|
指定 spamd 偵聽內送請求時所在的連接埠號碼。 |
783 |
|
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 伺服器建立連線時所使用的使用者名稱 (字串)。 |
"" |
指定用於 MODE 0 的判定結果字串。 |
“” |
處理完郵件後,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! 字串。
除了說明如何部署 SAVSE 外,本小節還說明有關部署其他支援 ICAP 的防垃圾郵件/防病毒程式的資訊。本節包含以下小節:
SAVSE 是 TCP/IP 伺服器應用程式和提供病毒掃描服務的通訊應用程式程式設計介面 (API)。它是專門為保護通過或儲存於網路基礎架構裝置的通訊流而設計的,它會偵測並保護系統免受所有主要檔案類型 (包括行動碼和壓縮檔案格式) 中的病毒、蠕蟲和特洛伊木馬的影響。請參閱 Symantec website 以取得詳細資訊
目前版本的 Messaging Server 僅支援 SAVSE 掃描功能。不支援修復或刪除功能。
這是 Symantec 單獨授權的產品。
僅支援掃描模式,不支援 SAVSE 配置中的掃描並修復或掃描並刪除模式。
SAVSE 或其他支援 ICAP 的伺服器可在自身的獨立系統上執行,或與 Messaging Server 在同一系統上執行 (在單一系統部署中),或者與 MTA 在同一系統上執行 (在兩層部署中)。如果在 MTA 與郵件儲存之間使用本機郵件傳送協定 (LMTP),則必須從 MTA 呼叫篩選,而不可從郵件儲存呼叫篩選。如果在 MTA 與郵件儲存之間使用 SMTP,則可以從任意一方呼叫篩選,並可以在任一系統或獨立的協力廠商系統上執行篩選。
若要使用執行 SAVSE 的多台伺服器,則必須在其前端使用負載平衡器。僅使用一個位址來為 SpamAssassin 配置 MTA。
安裝和配置 SAVSE。請參閱 Symantec 軟體文件,以取得有關安裝與配置的資訊。另請參閱SAVSE 選項。
載入和配置 SAVSE 用戶端程式庫。這包括將用戶端程式庫 libicap.so 和配置檔案 (必須建立此檔案) 指定至 MTA。請參閱載入與配置垃圾郵件篩選軟體用戶端程式庫。
指定要進行病毒篩選的郵件。可以依使用者、網域或通道篩選郵件。請參閱指定要篩選的郵件。
指定要對垃圾郵件執行的動作。可以將病毒捨棄、歸檔至資料夾、在主旨行進行標記等等。請參閱指定要在垃圾郵件上執行的動作
依需要設定其他篩選器配置參數。請參閱表 14–2指定要在垃圾郵件上執行的動作
以下範例可測試到達本機郵件儲存的郵件並捨棄帶有附加病毒的郵件。前三個步驟可以任何次序執行。
建立 SAVSE 配置檔案。
此檔案的名稱和位置在下一步驟中指定。此處使用的名稱為 SAVSE.opt。此檔案的範例顯示如下:
host=127.0.0.1 port=1344 mode=0 verdict=virus debug=1 |
host 和 port 指定執行 SAVSE 程式的系統之名稱以及 SAVSE 程式偵聽內送請求時所在的連接埠號碼 (對 SAVSE 來說,預設值為 1344)。mode=0 指定如果偵測到郵件中包含病毒,則將傳回由 verdict 指定的字串 (此處為 virus)。debug=1 開啟除錯處理。請參閱SAVSE 選項,以取得有關 ICAP 配置參數的說明。
建立 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 指定對垃圾郵件執行篩選動作。此值可指定捨棄帶有病毒的郵件。由於這是預設值,所以無需指定,除非要變更此值。
指定要篩選的郵件。
若要篩選進入本機郵件儲存的所有郵件,請將 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 |
重新編譯配置並重新啟動伺服器。僅 MTA 需要重新啟動。無需執行 stop-msg。
# imsimta cnbuild # imsimta restart |
確定 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 選項檔案確實是一個較通用的 ICAP 選項檔案。其名稱和位置由 option.dat 中的 spamfilterX_config_file 設定。它由形式為 option=value 的行組成。必需的一個選項為 HOST。它必須設定為執行 ICAP 篩選伺服器的系統之名稱。必須設定此選項,即使 ICAP 伺服器在本地主機上執行。下面顯示了此選項檔案。
表 14–6 ICAP 選項
選項 |
說明 |
預設 |
---|---|---|
啟用或停用 ICAP 介面模組的除錯輸出。0 或 1。 |
0 |
|
指定 ICAP 結果的前綴。SAVSE 結果字串如下: Virus-Test: False Virus-Test: True; W32.Mydoom.A@mm.enc 此選項提供了變更結果之 Virus-Test: 部分的方法。請注意,如果指定空的 field 值,則會移除「:」。 |
Virus-test |
|
執行 ICAP 篩選伺服器的系統之名稱 |
localhost |
|
控制 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_n 和 spamfilterX_action_n 來控制對 ICAP 結果字串執行的動作。您可以使用 spamfilterX_string_action 控制對 verdict 字串執行的動作。 |
0 |
|
指定執行 ICAP 伺服器時所在的連接埠號碼。 |
1344 |
|
字串。指定中間 SOCKS 伺服器的名稱。如果已指定此選項,則可透過指定的 SOCKS 伺服器間接地建立 ICAP 連線。 |
"" |
|
整數。指定中間 SOCKS 伺服器執行時所在的埠。 |
1080 |
|
字串。指定透過 SOCKS 伺服器建立連線時所使用的密碼。是否需要使用者名稱密碼視 SOCKS 伺服器的配置而定。 |
"" |
|
字串。指定透過 SOCKS 伺服器建立連線時所使用的使用者名稱。 |
"" |
|
指定用於 MODE 0 和 3 的判定結果字串。 |
"" |
處理郵件後,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 還提供對數個篩選功能延伸的支援,這些功能延伸包括 addheader、addtag、spamtest 和 spamadjust。在將包含 SpamAssassin 分值的標頭增加至垃圾郵件和將 SpamAssassin 結果字串增加至主旨行中對 addheader 和 addtag 進行了說明。
這些延伸可讓管理員設定不同的臨界值以及設定置換 SpamAssassin 判定結果的安全名單。甚至可以將兩者合併,以設定不同的臨界值,具體視特定郵件的傳送者而定。spamadjust 為非標準動作。spamtest 在 ftp://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 開始。允許簽署的數字值,才能降低和提高目前分值。沒有針對 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;} |