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

Procedure使用者層級篩選器除錯

步驟
  1. 若要使 fileinto 篩選正常運行,請在 imta.cnf 檔案中檢查 ims-ms 通道是否如下進行了標記:

    fileinto $u+$s@$d

  2. 從使用者的 LDAP 項目中獲得使用者層級的篩選器。

    使用者層級的篩選器儲存在其 MailSieveRuleSource 屬性下的 LDAP 項目中。若要使用 ldapsearch 指令擷取使用者層級篩選器,請記住它們是以 base64 編碼的,因此需要使用 -Bo 切換對輸出進行解碼。


    ./ldapsearch -D "cn=directory manager" -w password -b 
    "o=alcatraz.sesta.com,o=isp" -Bo uid=test

    如下說明的 imsimta test -rewrite 指令也將自動對它們進行解碼。

  3. 驗證 MTA 是否可以查看使用者篩選器。

    發出指令:

    # imsimta test -rewrite -filter -debug user@sesta.com

    這將輸出您在上一步中擷取的使用者之篩選器。如果您未看到篩選器,則需要查出 LDAP 項目沒有將其傳回的原因。如果 imsimta test -rewrite 輸出顯示篩選器,則您會瞭解到 MTA 正在查看的使用者篩選器。下一步是使用 imsimta test -expression 指令測試篩選器的解譯。

  4. 使用 imsimta test -exp 對使用者的篩選器進行除錯。以下資訊是必需的:

    1. mailSieveRuleSource 屬性中的使用者篩選程式語言敘述。請參閱以上步驟。

    2. 用於觸發篩選器的 rfc2822 郵件。

    3. 要求篩選器對郵件進行的操作之描述。

  5. 建立文字檔案 (例如:temp.filter),該檔案包含基於使用者 mailSieveRuleSource: values 的篩選程式語言敘述。範例:

    require "fileinto";
    if anyof(header :contains
    ["To","Cc","Bcc","Resent-to","Resent-cc", 
       "Resent-bcc"] "commsqa"){ 
       fileinto "QMSG";
    }

    期望結果:如果 commsqa 是此郵件的收件者,則將該郵件歸檔至名為 QMSG 的資料夾。

  6. 建立名為 test.msg 的文字檔,該檔案包含使用者提供的 rfc2822 郵件檔案內容。

    可以使用使用者郵件儲存區域中的 .msg 檔案,或建立名為 test_rfc2822.msg 的包含使用者提供的 rfc2822 郵件檔案內容的文字檔。

  7. 使用 imsimta test -exp 指令:


    # imsimta test -exp -mm -block -input=temp.filter -message=test_rfc2822.msg
    
  8. 檢查輸出。

    imsimta test -exp 指令的最後幾行將顯示篩選解譯的結果。如下所示:


    Sieve Result: [] 
    或者: 
    Sieve Result: [action]
    

    其中,action 是指將篩選器套用到此郵件之後執行的動作。

    如果符合篩選器的條件,您將看到某些作為結果顯示的動作。如果不符合,則篩選結果為空白,可能是篩選器出現邏輯錯誤或 .msg 檔案不包含符合的資訊。如果有任何其他錯誤,則是篩選程序檔檔案出現語法錯誤,您需要為其除錯。

    如需有關輸出的更多詳細資訊,請參閱imsimta test -exp 輸出

  9. 如果篩選器在語法上有效,並且結果是正確的,則下一步是檢查 tcp_local_slave.log 除錯記錄檔。

    您測試的郵件檔案可能與傳送的郵件檔案不完全相同。查看接收內容的唯一方法是檢查 tcp_local_slave.log 檔案。此記錄將明確顯示正在傳送至 MTA 的郵件,以及篩選器如何套用於該郵件。

    如需有關獲得 tcp_local_slave.log 除錯檔案的更多資訊,請參閱除錯關鍵字中的 slave_debug 關鍵字。