Sun Java System Messaging Server 6.3 管理指南

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 常駐程式

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