Sun Java System Messaging Server 6.3 管理指南

14.4.5 SpamAssassin 配置範例

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


備註 –

這些範例使用了一些選項和關鍵字。請參閱12.12.5 垃圾郵件篩選器關鍵字表 14–1


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–3

  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. 指定要篩選的郵件。

    若要篩選進入本機郵件儲存的所有郵件,請將 destinationspamfilter Xoptin 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–3 中的 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 常駐程式。

    請參閱14.4.5 SpamAssassin 配置範例

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

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

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

請注意,將 USE_CHECK 設定為 0 可傳回與判定結果字串 (請參閱14.4.7 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]」。因為在14.4.5 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 常駐程式。

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

Procedure根據 SpamAssassin 分值篩選郵件

此範例顯示如何根據 SpamAssassin 分值篩選郵件。使用 spamadjustspamtest 篩選器動作。在此範例中,會將包含 SpamAssassin 分值的標頭增加至所有郵件。SpamAssassin 軟體管理員可使用此標頭調校 SpamAssassin,以改善垃圾郵件的偵測。如果郵件的 SpamAssassin 分值介於 5 到 10,會將此郵件篩選至使用者帳號內的 spam 資料夾。如果郵件的 SpamAssassin 分值大於 10,則會捨棄該郵件。請注意,SpamAssassin 預設會將具有 5 以上的分值之郵件視為垃圾郵件。

  1. 指定要篩選的郵件。

    這在將垃圾郵件歸檔至單獨的資料夾步驟 3 中有說明。

  2. 建立 SpamAssassin 配置檔案。

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


    debug=1
    host=127.0.0.1 
    port=783 
    mode=2 
    field=  

    hostport 指定執行 spamd 的系統名稱和 spamd 偵聽內送請求時所在的連接埠。mode=2 指定不管分值,一律傳回 SpamAssassin 結果字串。field= 指定 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:, require ["addheader","spamtest"]; \
    spamadjust "$U"; addheader "Spam-test: $U"

    與前面的範例相同,前三行指定 SpamAssassin 配置檔案、共用程式庫以及因共用程式庫發生失敗時繼續 MTA 作業。最後兩行指定 SpamAssassin 分值應擷取自 spamtest 作業中使用的 SpamAssassin ($U) 之傳回字串,而垃圾郵件分值標頭應增加至所有郵件 (例如 Spam-test: True; 7.3/5.0)

  4. 建立通道層級的篩選器,以根據垃圾郵件分值處理電子郵件。

    請參閱建立通道層級的篩選器。將下列規則增加至檔案:


    require ["spamtest","relational","comparator-i;ascii-numeric","fileinto"];
    if spamtest :value "ge" :comparator "i;ascii-numeric" "10" {discard;}
    elsif spamtest :value "ge" :comparator "i;ascii-numeric" "5" {fileinto "spam";}
    else {keep;}

    第二行會在 SpamAssassin 分值大於或等於 10 時,捨棄垃圾郵件;第三行會在分值大於或等於 5 時,將電子郵件歸檔至使用者的「spam」資料夾;最後一行 else {keep;} 則會保留接收到分值小於 5 的所有郵件。

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

    請參閱將垃圾郵件歸檔至單獨的資料夾中的最後一個步驟。