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

Sun logo
Sun Java System Messaging Server 6 2004Q2 管理指南 

第 14 章
整合防垃圾郵件和防毒程式

本章描述如何使用 Messaging Server 提供的軟體掛勾來整合與配置 Brightmail 和 SpamAssassin 防垃圾郵件/防毒程式。


在本章中,對防垃圾郵件功能的參照也可在適用時用於防毒功能。Brightmail 提供防垃圾郵件功能和防毒功能。SpamAssassin 僅提供防垃圾郵件功能。


在 Messaging Server 看來,大多數防垃圾郵件解決方案幾乎在做相同的事情。Messaging Server 將郵件副本傳送給防垃圾郵件軟體,該軟體分析郵件並傳回垃圾郵件的判定結果而不是垃圾郵件。(SpamAssassin 還會將判定結果與垃圾郵件分值一同傳回,該分值是郵件可能為垃圾郵件的比率數。)Messaging Server 讀取該判定結果,並使用篩選程序檔採取某種動作。本章描述 Messaging Server 所提供的掛勾,以便使用這些商業防垃圾郵件程式及配置範例。

本章分為以下小節:


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

就協力廠商防垃圾郵件程式的部署和配置而言,僅需要為數不多的管理員決定。這些決定如下:


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


指定要過濾的郵件

Messaging Server 提供一些方法以指定應過濾的郵件。可將系統配置為依使用者、網域或通道過濾郵件。本節包含以下小節:

指定使用者級別的過濾

可以指定得到垃圾郵件過濾的使用者。是否將防垃圾郵件或防毒過濾作為優惠服務提供給 ISP 客戶就是此類用法的一個範例。指定使用者級別的過濾之一般步驟如下:

  1. 使用 option.dat 檔案中的 LDAP_OPTIN 指定針對指定使用者啟動垃圾郵件過濾器處理的 LDAP 屬性:
  2. LDAP_OPTIN=mailAntiUBEService

  3. 在使用者項目中設定 mailAntiUBEService,以得到垃圾郵件過濾。
  4. mailAntiUBEService 的值將視伺服器而定。對於 Brightmail,有效值為 spam (過濾垃圾郵件) 與 virus (過濾病毒)。對於 SpamAssassin,該值可以為任何字串,但建議使用 spam 以確保明確性。用作多值屬性時 (Brightmail),每個值均需要單獨的屬性值項目。例如:

    mailAntiUBEService:垃圾郵件
    mailAntiUBEService:virus

範例

此範例假設正在使用 Brightmail,還假設在 option.dat 檔案中將 LDAP_OPTIN 設定為 mailAntiUBEService。使用者 Otis Fanning 在其使用者項目中將 mailAntiUBEService 屬性設定為 spamvirus。其郵件將會進行垃圾郵件和病毒過濾。程式碼範例 14-3 顯示 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:電子信箱

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

mailAntiUBEService:virus

mailAntiUBEService:spam

如果使用的是 SpamAssassin,則項目應相同,但不會有 mailAntiUBEService:virus。請參閱本章中描述協力廠商軟體的小節,以取得更多範例和詳細資訊。

指定網域級別的過濾

可以指定得到垃圾郵件過濾的網域。是否將防垃圾郵件或防毒過濾作為優惠服務提供給 ISP 網域客戶就是使用此功能的一個範例。指定網域級別的過濾之一般步驟如下:

  1. 使用 option.dat 檔案中的 LDAP_OPTIN 指定針對指定網域啟動垃圾郵件過濾器處理的 LDAP 屬性。
  2. LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService

  3. 在網域項目中設定 mailAntiUBEService,以得到垃圾郵件過濾。
  4. mailAntiUBEService 的有效值視伺服器而定。對於 Brightmail,有效值為 spam (過濾垃圾郵件) 與 virus (過濾病毒)。對於 SpamAssassin,該值可以為任何字串,但建議使用 spam 以確保明確性。用作多值屬性時 (Brightmail),每個值均需要單獨的屬性值項目。例如:

    mailAntiUBEService:垃圾郵件
    mailAntiUBEService:virus

網域級別的過濾範例

此範例假設正在使用 Brightmail,還假設在 option.dat 檔案中將 LDAP_DOMAIN_ATTR_OPTIN 設定為 mailAntiUBEService。在 Sun LDAP Schema 1 之 DC 樹的 sesta.com 網域項目中,將 mailAntiUBEService 屬性設定為 spamvirus。對於 Sun LDAP Schema 2,您亦應在網域項目中設定 mailAntiUBEService,以得到垃圾郵件過濾。

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

程式碼範例 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

mailAntiUBEService:spam

mailAntiUBEService:virus

如果使用的是 SpamAssassin,則項目應相同,但不會有 mailAntiUBEService:virus。請參閱本章中描述特定協力廠商軟體的小節,以取得更多範例和詳細資訊。

指定通道級別的過濾

依使用者或網域指定垃圾郵件過濾是明顯的條件,但依通道指定過濾則不太明顯。依來源或目標通道指定過濾的原因在於為垃圾郵件過濾提供更大的靈活性和顆粒性。

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

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

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

表格 14-1 垃圾郵件過濾器的 MTA 通道關鍵字

通道關鍵字

描述

destinationspamfilteroptin

指定即使使用者或網域未透過 LDAP_OPTIN LDAP 屬性指定那些服務,目標為此通道的所有郵件仍會得到過濾。此關鍵字後接過濾器參數。可用的參數視過濾程式而定。例如,Brightmail 的參數為 spamvirusspam,virus。SpamAssassin 的參數為 spam


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

ims-ms destinationspamfilteroptin spam,virus. . .

sourcespamfilteroptin

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

通道級別的過濾範例

範例 1。使用 Brightmail 對所有郵件進行垃圾郵件和病毒過濾,這些郵件從 MTA 中繼至稱為 siroemail 的後端郵件儲存。設定重寫規則,以經由稱為 tcp_siroemail 的 MTA 通道傳送這些郵件:

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

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

範例 2。過濾經由您的 MTA 的所有送進的郵件:

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

範例 3。過濾經由您的 MTA 的所有外送 (至網際網路) 郵件:

tcp_local smtp mx single_sys remotehost inner switchchannel \
identnonelimited subdirs 20 maxjobs 7 pool SMTP_POOL \
maytlsserver maysaslserver saslswitchchannel tcp_auth \
destinationspamfilteroptin 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 \
sourcespamfilteroptin spam destinationspamfilteroptin spam
tcp-daemon

範例 5。過濾其 mailAntiUBEService 屬性目標為本地郵件儲存的使用者或網域郵件:

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

範例 6。在雙層系統中過濾目標為本地郵件儲存的所有郵件,而不使用針對使用者的選擇加入:

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

範例 7。使用 Brightmail 對所有送進的和外送郵件進行垃圾郵件和病毒過濾:

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

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

如前所述,防垃圾郵件程式分析郵件並向 Messaging Server 傳回郵件是否為垃圾郵件的判定結果。然後,Messaging Server 會在郵件上採取動作。防垃圾郵件程式通常向 MTA 傳回字串或空值,表示該郵件為垃圾郵件。某些程式還傳回垃圾郵件分值 ─ 評價郵件為垃圾郵件之可能性的數字。此分值可用作動作序列的一部分。

動作藉由篩選郵件過濾語言來指定。可能的篩選動作有捨棄郵件、歸檔至資料夾、增加標頭以及增加標記至主旨行等。帶有 if-then-else 描述的複雜篩選程序檔亦有可能。請參閱 RFC 3028,以取得完整的篩選語法。

篩選程序檔藉由表格 14-2 中描述的 MTA 垃圾郵件過濾器選項來指定。主要的垃圾郵件過濾器動作選項為 Spamfilter_null_action (指定當空值作為垃圾郵件判定結果值傳回時要執行的篩選規則) 和 Spamfilter_null_action (指定當字串作為垃圾郵件判定結果傳回時要執行的篩選規則)。這兩個值均必須儲存在 option.dat 中。

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

spamfilter_null_action=data:,require "fileinto"; fileinto "SPAM_CAN」;

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

spamfilter_string_action=data:,require "fileinto"; fileinto "SPAM_CAN」;

範例 2。此選項行將垃圾郵件與字串判定結果一同歸檔至一個檔案,該檔案根據傳回至 MTA 的判定結果字串而命名 (此為 $U 所執行的作業)。即,如果傳回的判定結果字串為 spam,則將該郵件儲存在稱為 spam 的檔案中。

spamfilter_null_action=data:,require "fileinto"; fileinto "$U」;

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

spamfilter_string_action=data:,discard

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

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

範例 5。下面一行將字串 [PROBABLE SPAM] 增加至垃圾郵件的主旨行。

spamfilter_string_action=data:,addtag 「[PROBABLE SPAM]」;

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

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

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

範例 7。這些配對選項捨棄傳回的判定結果字串為 remove 的垃圾郵件。請參閱垃圾郵件過濾器的特定小節,以取得有關如何指定垃圾郵件判定結果字串的說明。

spamfilter_verdict_0=kill
spamfilter_action_0
=data:,discard

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

適用於 SpamAssassin 的 MTA 選項

描述

Spamfilter_config_file

SpamAssassin 配置檔案的完整檔案路徑和名稱。
預設:無

Spamfilter_library

SpamAssassin 共用程式庫的完整檔案路徑和名稱。
預設:無

Spamfilter_optional

控制過濾程式庫報告的某些故障是否作為暫時性故障處理或被忽略。預設值 0 指定垃圾郵件過濾問題將會導致暫時性處理故障。將值變更為 1 會導致在某些 (但可能並非所有) 過濾程式庫發生故障的情況下,垃圾郵件過濾器處理被略過。(尤其是,如果系統阻塞而未在程式庫程式碼中傳回,則 MTA 的一些部分也可能阻塞。)

預設: 0

LDAP_optin

LDAP 屬性的名稱,用於針對每個使用者啟動 SpamAssassin。它應為 inetMailUser 物件類別中的屬性。如果沒有預先定義的屬性,請使用 mailAntiUBEService

此屬性本身 (例如:mailAntiUBEService) 可以有多個值且大小寫相符。對於 SpamAssassin,它的值應為小寫的 spam

預設:無

LDAP_domain_attr_optin

LDAP 屬性的名稱,用於針對每個網域啟動 SpamAssassin。適用於目標網域。除了屬於物件類別 mailDomain 以外,其餘與上述 LDAP_optin 相同。

預設:無

Spamfilter_null_optin

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

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

Spamfilter_null_action

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

Spamfilter_string_action

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

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

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

spamfilter_verdict_n

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

spamfilter_verdict_0=reject
spamfilter_action_0=data:,require "reject"; reject "Rejected by spam filter";

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

預設:無

spamfilter_action_n

請參閱 spamfilter_verdict_n。

預設:無

spamfilter_final

某些過濾程式庫可基於收信人位址執行一組動作。spamfilter_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 將會累積。此預設可確保站點安全策略在轉寄時有效;而其他設定則無法確保這一點。)


使用 Brightmail

Brightmail Inc. 是一家為電子郵件伺服器提供防垃圾郵件與防毒軟體解決方案的公司。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 為具有以下配置:

使用通道或 LDAP 屬性,在 Messaging Server 中啟用 Brightmail 過濾功能。系統上的這種過濾方式是附加的。即由關鍵字與屬性組合而成。

針對目標或來源通道上的使用者啟動 Brightmail 處理

  1. 安裝與配置 Brightmail 伺服器。
  2. 若要在系統上安裝 Brightmail,請洽詢 Brightmail 代表。

  3. 設定 Brightmail 程式庫與配置檔案參數,方法是將以下兩個 MTA 選項加入 options.dat 檔案:
  4. spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. 在 MTA 選項檔案 (表格 14-2) 和 Brightmail 配置檔案 (表格 14-3) 中指定所需的 Brightmail 選項。
  6. 指定 Brightmail 處理執行時所在的通道和電子郵件方向 (來源或目標)。
  7. 在通道區段上設定關鍵字 sourcespamfilteroptindestinationspamfilteroptin (請參閱指定通道級別的過濾MTA 配置檔案)。

    sourcespamfilteroptin 指定來自該通道的每封郵件都由 Brightmail 軟體進行處理。

    destinationspamfilteroptin 指定發往該通道的每封郵件都由 Brightmail 軟體進行處理。

    這些屬性的有效值如下:

    spam - 過濾垃圾郵件
    virus - 過濾病毒
    spam,virus - 過濾垃圾郵件和病毒

範例

範例 1。對來自送進的 MTA 中繼並發往稱為 siroe 的特定後端郵件儲存的郵件進行垃圾郵件和病毒過濾。郵件將通過稱為 tcp_siroemail 的 MTA 通道:

範例 2。Brightmail 對來自 tcp_local 通道並通過您的 MTA 的所有送進的郵件進行垃圾郵件過濾:

針對選取的使用者啟動 Brightmail 處理

  1. 安裝與配置 Brightmail 軟體。
  2. 若要在系統上安裝 Brightmail,請洽詢 Brightmail 代表。

  3. 設定 Brightmail 程式庫與配置檔案參數。
  4. options.dat 檔案中使用以下兩個 MTA 選項:

    spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. 在 MTA 選項檔案 (表格 14-2) 和 Brightmail 配置檔案 (表格 14-3) 中指定所需的 Brightmail 選項。
  6. 指定將用於針對指定使用者啟動 Brightmail 處理的 LDAP 屬性。
  7. option.dat 檔案中設定 LDAP_OPTIN=mailAntiUBEService。可以指定 mailAntiUBEService 以外的 LDAP 屬性,但建議使用此名稱。

  8. 在使用者項目中設定 LDAP 屬性 mailAntiUBEService,以得到 Brightmail 處理。
  9. mailAntiUBEService 的有效值為 spam (過濾垃圾郵件) 與 virus (過濾病毒)。

範例

假定 option.dat 檔案中的 LDAP_OPTIN 設定為 mailAntiUBEService。如果使用者 Otis Fanning 的使用者項目中的 mailAntiUBEService 屬性設定為 spamvirus,則該使用者的郵件會由 Brightmail 進行垃圾郵件和病毒過濾。程式碼範例 14-3 顯示 Otis Fanning 之已啟用 Brightmail 的使用者項目。

程式碼範例 14-3 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:電子信箱

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

mailAntiUBEService:virus

mailAntiUBEService:spam

針對系統上選取的網域啟動 Brightmail 處理

  1. 安裝與配置 Brightmail 軟體。
  2. 若要在系統上安裝 Brightmail,請洽詢 Brightmail 代表。

  3. 設定 Brightmail 程式庫與配置檔案參數。
  4. options.dat 檔案中設定以下兩個 MTA 選項:

    spamfilter_Library=path_and_filename_of_libbmiclient.so
    spamfilter_config_file=path_and_filename_of_brightmail_config_file

  5. 在 MTA 選項檔案 (表格 14-2) 和 Brightmail 配置檔案 (表格 14-3) 中指定所需的 Brightmail 選項。
  6. 指定將用於針對指定網域啟動 Brightmail 處理的 LDAP 屬性。
  7. option.dat 檔案中設定 LDAP_DOMAIN_ATTR_OPTIN=mailAntiUBEService。可以指定不同的 LDAP 屬性名稱,但建議使用此名稱以保持 Messaging Server 綱目一致。

  8. 在網域項目 (位於 DC 樹中) 中設定 LDAP 屬性 mailAntiUBEService,使其電子郵件將得到 Brightmail 處理。
  9. mailAntiUBEService 的有效值為 spam (過濾垃圾郵件) 與 virus (過濾病毒)。

範例

假定 option.dat 檔案中的 LDAP_DOMAIN_ATTR_OPTIN 設定為 mailAntiUBEService。DC 樹中 example.com 網域項目中的 mailAntiUBEService 屬性設定為 spamvirus程式碼範例 14-4 顯示已啟用 Brightmail 的網域項目。

程式碼範例 14-4 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

mailAntiUBEService:spam

mailAntiUBEService:virus

Brightmail 部署方案範例

本節論述數種常用 Brightmail 部署方案。在每種情況下,您都將執行標準 Brightmail 配置程序,如安裝 Brightmail 和指定程式庫與配置檔案 (請參閱前面各小節)。本小節描述以下部署方案:

針對本機送進的郵件進行 Brightmail 處理

您可能希望配置系統,以便針對所有本機遞送的郵件進行垃圾郵件與病毒過濾。若要針對進入本地郵件儲存的所有郵件 (即進入 imta.cnf 中的 ims-ms 通道的所有郵件) 設定 Brightmail 處理,請將 destinationspamfilteroptin 關鍵字增加至 ims-ms 通道定義。範例:

ims-ms defragment subdirs 20 backoff 「pt5m」 「pt10」 「pt30」 「pt1h」 \
「pt2h」 「pt4h」 maxjobs 1 pool IMS_POOL fileinto $U+$S@$D filter \
ssrd:$A ims-ms-daemon
destinationspamfilteroptin spam,virus
ims-ms-daemon

針對自網際網路送進的郵件進行 Brightmail 處理

您可能希望配置系統,以便針對所有來自網際網路的郵件進行垃圾郵件過濾。若要針對所有來自網際網路的送進的郵件設定 Brightmail 處理,請將 sourcespamfilteroptin 關鍵字增加至 tcp-local 通道定義。範例:

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


Brightmail 允許您捨棄垃圾郵件或將其儲存至指定垃圾郵件資料夾。如果指定垃圾郵件資料夾的功能不適用於接收系統,則垃圾郵件資料夾的位址語法對於該系統毫無意義。


針對外送至網際網路的郵件進行 Brightmail 處理

您可能希望配置系統,以便針對所有發往網際網路的郵件進行垃圾郵件過濾。若要針對所有外送至網際網路的郵件設定 Brightmail 處理,請將 destinationspamfilteroptin 關鍵字增加至外送 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 \
destinationspamfilteroptin spam
tcp-daemon

針對進入特定後端郵件儲存主機的郵件進行 Brightmail 處理

若要配置系統,以便針對所有進入特定後端郵件儲存主機的郵件進行病毒與垃圾郵件過濾,請執行以下步驟:

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

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

增加標頭至垃圾郵件

您可以在垃圾郵件中新增任意標頭。若要在 Brightmail 軟體攔截的郵件中新增標頭 spam-result:,以表示該郵件為垃圾郵件,請在 option.dat 中加入以下內容:

spamfilter_string_action=data:,require ["addheader" "spamtest"];addheader "spam-result:Brightmail says this is spam";

僅可以自訂 "spamtest"]; 後的文字。

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 伺服器。Sun Java System Messaging Server 中提供的模組稱為 libspamass.so


在舊版 Messaging Server 中,選項名稱和通道關鍵字包含 brightmail 一字,例如,sourcebrightmail 或 brightmail_library。雖然舊名稱仍然有效以確保向下相容性,但現在已使用更一般的 spamfilter 替代 brightmail 一字。


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 傳回。SpamAssassin 並不修改郵件本身。即,必須由篩選程序檔來執行選項 (如增加標頭和修改主旨行)。

SpamAssassin 需求與用法注意事項

在何處執行 SpamAssassin?

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

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

配置 SpamAssassin

本小節描述如何在 Messaging Server 上配置 SpamAssassin。假設已安裝 Perl 5.6 或更高版本以及 SpamAssassin。配置 SpamAssassin 包括兩項作業:

    可以為整個系統、通道、使用者或網域過濾郵件。

    您可能要傳回垃圾郵件、將其刪除、將其歸檔至單獨的資料夾,或藉由新標頭或 Subject 行為垃圾郵件加標記。

指定 SpamAssassin 要過濾的郵件

配置 SpamAssassin 的第一部分是指定要過濾的郵件。可依如下方法指定要過濾的郵件:

過濾投遞至本地郵件儲存的所有郵件

您可能想配置系統,以便由 SpamAssassin 過濾投遞至本地的所有郵件。若要過濾投遞至本地郵件儲存的送進的郵件,請將 destinationspamfilteroptin spam 增加至 ims-ms 通道。例如:

ims-ms defragment subdirs 20 backoff 「pt5m」 「pt10」 「pt30」 「pt1h」 \
「pt2h」 「pt4h」 maxjobs 1 pool IMS_POOL fileinto $U+$S@$D filter \
ssrd:$A ims-ms-daemon
destinationspamfilteroptin spam
ims-ms-daemon

過濾來自網際網路的所有郵件

若要過濾從網際網路進入系統的所有郵件,請將 sourcespamfilteroptin 關鍵字增加至 tcp-local 通道定義。例如:

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

過濾發往網際網路的所有郵件

若要過濾從您的系統發往網際網路的所有郵件,請將 destinationspamfilteroptin 關鍵字增加至外送 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 \
destinationspamfilteroptin spam
tcp-daemon

過濾投遞至特定郵件儲存的郵件

若要配置系統,以便針對所有進入後端郵件儲存主機的郵件進行垃圾郵件過濾,請執行以下步驟:

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

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

過濾投遞至特定使用者或網域的郵件

若要為使用者或網域過濾郵件,請將以下屬性-值對增加至使用者和網域 LDAP 項目:

mailAntiUBEService:spam

還要在 option.dat 檔案中指定相應的 LDAP_optin 值。對於使用者級別的過濾,請增加以下內容:

LDAP_optin=mailantiUBEservice

對於網域級別的過濾,請增加以下內容:

LDAP_domain_attr_optin=mailAntiUBEService

以此方法啟動 SpamAssassin 時,無需將 destinationspamfilter 增加至通道定義。屬性名稱的大小寫不須相符。


MailAntiUBEService 需要字串值以啟用過濾。值 spam 用於確保一致性和明確性。某些部署可能要求所有項目具有相同的屬性集,並且每個屬性具有相同的值。在此類部署中,所有項目均啟用 spam 過濾。然而,您可以將 MTA 選項 SPAMFILTER_NULL_OPTIN 設定為一個字串,該字串如果被設定為 MailAntiUBEService 的值,則會停用過濾。


指定如何處理垃圾郵件

配置 SpamAssassin 的第二部分是決定如何處理垃圾郵件。垃圾郵件可被捨棄、拒絕、歸檔或使用標頭進行標記。此作業由篩選程序檔控制,該程序檔由 MTA 選項 spamfilter_null_actionspamfilter_string_action 指定。此外,SpamAssassin 選項 modeverdictfield 可用於指定資料夾名稱與標頭標記等。此內容在以下各節中有詳細描述。


篩選是可用於為電子郵件建立過濾器的電腦語言。本小節中顯示的範例可用於建立您自己的自訂篩選程序檔。請查閱線上篩選規格,以取得完整的語法資訊。您可以從 http://www.cyrusoft.com/sieve/ 快速獲取。


SpamAssassin 配置範例

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

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

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

  1. 指定要過濾的郵件。
  2. 若要過濾進入本地郵件儲存的所有郵件,請將 destinationspamfilteroptin 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 destinationspamfilteroptin spam
    ims-ms-daemon

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

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

    hostport 指定執行 spamd 之系統的名稱,以及 spamd 偵聽送進的請求的埠。mode=0 指定如果郵件被判定為垃圾郵件,則傳回由 verdict 指定的字串 (此範例中指定為 spam 一字)。debug=1 指定在 SpamAssassin 程式庫中啟動除錯。

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

    ! for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,require "fileinto"; fileinto "$U;

  6. spamfilter_config_files 指定 SpamAssassin 配置檔案。

    spamfilter_library 指定 SpamAssassin 共用程式庫。

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

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

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

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

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

捨棄垃圾郵件

若要捨棄垃圾郵件而不是將其歸檔至資料夾,請執行將垃圾郵件歸檔至單獨的資料夾中所述的步驟 1步驟 2,但在 option.dat 中變更 Spamfilter_string_action 選項,如下所示:

! for Spamassassin
spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
spamfilter_optional=1
spamfilter_string_action=data:,discard;

執行此作業後,重新編譯配置並重新啟動伺服器。(請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 4。)

將簡單標頭增加至垃圾郵件

此範例將標頭 Spam-test:spam 增加至確定為垃圾郵件的每封郵件。請使用與將垃圾郵件歸檔至單獨的資料夾步驟 1步驟 2 中所述相同的說明,但在 option.dat 中增加 Spamfilter_string_action,如下所示:

! for Spamassassin
spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
spamfilter_optional=1
spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test:$U";

上面列出的前三個選項指定 SpamAssassin 配置檔案 (spamfilter_config_file)、SpamAssassin 共用程式庫 (spamfilter_library) 以及因共用程式庫 (spamfilter_optional=1) 發生故障時繼續 MTA 作業。下一行指定將 Spam-test:spam 格式的標頭增加至郵件:

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

data:,require ["addheader"];addheader 是將標頭增加至郵件的篩選語法。

"Spam-test:$U" 是標頭字串。其中「Spam-test:」是文字列,$U 指定 SpamAssassin 傳回的字串值。(由 spammassassin.opt 中的 verdict 選項指定,在此範例中為 spam。)

執行此作業後,重新編譯配置並重新啟動伺服器。(請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 4。)

將包含 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. 指定要過濾的郵件。此步驟在將垃圾郵件歸檔至單獨的資料夾步驟 1 中有描述。
  2. 建立 SpamAssassin 配置檔案。
  3. 此檔案的名稱和位置在步驟 3 中指定。spamassassin.opt 是個很好的名稱。此檔案包含以下行:

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

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

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

    !for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,require ["addheader"];addheader "Spam-test:$U";

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

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

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

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

  8. 啟動 spamd 常駐程式。請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 5

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

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

主旨:[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. 指定要過濾的郵件。請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 1
  2. 建立 SpamAssassin 配置檔案。
  3. 此檔案的名稱和位置在步驟 3 中指定。spamassassin.opt 是個很好的名稱。此檔案包含以下行:

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

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

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

    !for Spamassassin
    spamfilter_config_file=/opt/SUNWmsgsr/config/spamassassin.opt
    spamfilter_library=/opt/SUNWmsgsr/lib/libspamass.so
    spamfilter_optional=1
    spamfilter_string_action=data:,addtag 「[SPAM detected:$U]」;

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

    spamfilter_string_action=data:,addtag 「[SPAM detected $U]」;

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

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

    您還可以一同使用 addheaderaddtag

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

    以收到如下郵件:

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

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

    Subject:[SPAM True ; 91.3 / 5.0] Viagra again!
    Spamscore:True ; 91.3 / 5.0

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

  8. 啟動 spamd 常駐程式。請參閱將垃圾郵件歸檔至單獨的資料夾中的步驟 5

支援篩選延伸 spamtest 與 spamadjust

Messaging Server 提供對 spamtestspamadjust 的支援,它們可用於 SpamAssassin。在 ftp://ftp.isi.edu/in-notes/rfc3685.txt 中描述了 spamtestspamadjust 為非標準動作。這些延伸可讓管理員設定不同的臨界值,以及設定置換 SpamAssassin 判定結果的白名單。根據特定郵件的寄件者,甚至可以將二者合併以產生不同的臨界值。

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 配合使用,如下所示:

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

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

 

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

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

 

spamfilter_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;}                                                   \

測試 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

此外,如果在 options.dat 中設定了 spamfilter_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:連線被拒絕
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 選項



上一個      目錄      索引      下一個     


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