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

第 16 章 休假自動郵件回覆

對於自動產生的電子郵件回應 (自動回覆),尤其是休假郵件,MTA 使用郵件處理通知 (MDN) 和篩選程序檔程式語言。MDN 是 MTA 傳送給寄件者和/或 Postmaster 以報告有關郵件傳送處理情況的電子郵件。MDN 還稱為讀取收據、確認、收據通知或遞送收據。篩選是一種用於建立郵件篩選器的簡單程序檔語言。與 Messaging Server 5.x 不同的是,使用的字元集是 UTF-8 而不是 ISO-2022-JP。

本節描述休假自動回覆機制。在大多數情況下沒有必要修改預設配置,但如果您想要配置您的系統以便在轉送器而非後端郵件儲存中執行休假處理作業,又另當別論。

本章包含以下各節:

休假自動回覆簡介

休假篩選程序檔可從各種 LDAP 休假屬性自動產生 (請參閱休假自動回覆屬性)。還可以明確指定它們這樣更為靈活。追蹤休假的基本機制是記錄將回覆傳送至各個寄件者的時間的一組檔案每個預期收件者一份。


備註 –

休假訊息的字元集已變更為 UTF-8。


依預設,MTA 在後端儲存系統中評估休假。但是,由於 MTA 轉送不能執行與後端儲存同樣多的工作,為了提昇效能,您可以讓 MTA 在郵件轉送器 (而不是後端儲存) 上評估休假。但是,使用此功能可能會導致休假回應傳送出去的次數多於預期次數,這是因為不同的轉送將處理不同的郵件。如果不想讓休假郵件傳送出去的次數多於預期次數,您可以在轉送之間共用檔案追蹤。如果您無法接受這種方法,則可以始終在後端儲存系統上評估休假。

配置自動回覆

遞送位址可透過一組式樣產生。所用式樣取決於為 mailDeliveryOption 屬性定義的值。系統會為每個有效的 mailDeliveryOption 產生一個傳送位址。式樣由 MTA 選項 DELIVERY_OPTIONS (在 option.dat 檔案中定義) 定義。option.dat 檔案中 DELIVERY_OPTIONS 的預設自動回覆規則是:

*^!autoreply=$M+$D@bitbucket

MTA 將在自動回覆 DELIVERY_OPTION MTA 選項上標註「^」。這可讓 MTA 檢查休假日期。如果目前日期在休假日期內,則處理會繼續並且 MTA 會在自動回覆 DELIVERY_OPTION 上標註「!」。然後,MTA 將根據使用者項目上的各種自動回覆 LDAP 屬性建立休假篩選程序檔。自動回覆規則的字首字元可以是「!」、「#」、「^」和「*」。

可以在電子信箱傳送選項上使用「!」旗標。這將無條件地啟動產生的休假程序檔。但是,這樣可以透過單獨的傳送選項啟動自動回覆機器,以便由「^」旗標進一步限制。檢查此階段的日期比使用篩選邏輯更加有效。

表 16–1 第一欄顯示用於自動回覆規則的字首字元,第二欄顯示這些字首字元的定義。

表 16–1 用於 DELIVERY_OPTIONS 中的自動回覆規則的字首字元

字首字元 

定義 

!

啟動產生的自動回覆篩選程序檔。 

#

允許在轉送上進行處理。 

^

僅在休假日期指出該選項應被評估時才對該選項進行評估。 

*

規則僅適用於使用者。 

自動回覆規則本身指定提交到通道的位址。一旦產生自動回覆,將認為郵件是透過此方法遞送的,但是 MTA 機器需要遞送位址。遞送至 Bitbucket 通道的所有郵件將被捨棄。

配置後端儲存系統上的自動回覆

DELIVERY_OPTIONS 中的預設自動回覆規則可在為使用者提供服務的郵件伺服器上產生自動回覆。如果您要在後端儲存系統上評估休假郵件,則無需進行任何配置。這是預設運作方式。

Procedure在轉送上配置自動回覆

如果要在轉送 (而不是後端儲存系統) 上評估休假以增強效能,請編輯 option.dat 檔案,並將字元 # 置於 DELIVERY_OPTIONS 中的自動回覆規則之前。

步驟
  1. 使用編輯器開啟 option.dat 檔案。

  2. 增加或變更 DELIVERY_OPTIONS 選項,使現有的自動回覆規則類似於:

    #*^!autoreply=$M+$D@bitbucket

    預設 DELIVERY_OPTIONS 選項類似於:

    DELIVERY_OPTIONS=*mailbox=$M%$\$2I$_+$2S@ims-ms-daemon, \
     &members=*, \
     *native=$M@native-daemon, \
     /hold=@hold-daemon:$A, \
     *unix=$M@native-daemon, \
     &file=+$F@native-daemon, \
     &@members_offline=* \
     ,program=$M%$P@pipe-daemon, \
     #forward=**, \
     *^!autoreply=$M+$D@bitbucket

    這允許在轉送上進行處理。如果讓 MTA 在轉送上執行自動回覆則每個轉送均可獨立記錄特定通信者最近是否傳送離開郵件或此資訊可在轉送之間共用。前一種情況比較簡單,特別是在將離開郵件傳送多少次都無關緊要的情況下。如果您要嚴格限制離開郵件頻率規則的應用,則此資訊必須在轉送之間共用。若要在轉送之間共用資訊,檔案應裝載有 NFS。

    這些檔案的位置由 VACATION_TEMPLATE選項控制。此選項 (在 option.dat 中) 應設定為 /<path>/%A,其中 <path> 是各種轉送機器間共用目錄的路徑。範本必須是 file:URL,並且可以使用 $U 替換使用者名稱。預設設定為:

    VACATION_TEMPLATE=file:///opt/SUNWmsgsr/data/vacation/$3I/$1U/$2U/$U.vac

    請參閱表 9–6,以取得中介字元說明。


    備註 –

    現在休假檔案範本擁有對 UID 的存取權,可讓至休假檔案的路徑在使用者 UID 的基礎上建立。此外,用於確定休假檔案路徑的位址現在儲存於使用者郵件屬性中﹔先前則是目前的收件者位址。


休假自動回覆運作原理

當呼叫時休假動作按如下方式工作:

  1. Sun Java System Messaging Server 進行檢查以確保休假動作由使用者層級 (而不是系統層級) 的篩選程序檔執行。如果在系統級別的程序檔中使用休假,將出現錯誤。

  2. 核取「無休假通知」內部旗標。如果已設定該旗標,處理將終止且不傳送任何休假通知。

  3. 然後檢查郵件的傳回位址。如果為空白處理將終止且不傳送任何休假通知。

  4. MTA 進行檢查以查看 :addresses 標記引數中指定的使用者位址或任何其他位址是否出現在目前郵件的 [To:]、[Cc:]、[Resent-to:] 或 [Resent-cc:] 標頭欄位中。如果在所有標頭欄位中均找不到位址,則處理將終止且不傳送任何休假通知。

  5. Messaging Server 會建構一個 :subject 引數和原因字串的雜湊。系統將針對先前休假回覆的每個使用者記錄來核取該字串以及目前郵件的傳回位址。如果回覆已在 :days 引數允許的時間內傳送,則處理將終止且不傳送任何回覆。

  6. Messaging Server 從 :subject 引數、原因字串以及 :mime 引數建構休假通知。此回覆郵件的兩種基本格式可能是:

    • RFC 2298 中指定格式的郵件處理通知,其中第一部分包含原因文字。

    • 單一部分文字回覆。(此格式僅用於支援「回覆」自動回覆模式屬性設定。)

請注意,透過 Messenger Express 配置休假郵件時,mailautoreplymode 會自動設定為 reply

依預設,系統將清除「無休假通知」旗標。可透過使用非標準的 novacation 動作由系統層級的篩選程序檔設定該旗標。novacation 篩選動作僅允許在系統層級的篩選程序檔中使用。如果在使用者級別的程序檔中使用該動作,將產生錯誤。可以使用此動作在休假回覆上實作站點範圍的限制,如鎖定對包含子字串「MAILER-DAEMON」的位址的回覆。

每個使用者一個回覆的資訊儲存在一組純文字檔案中,每個本機使用者一份。這些檔案的位置和命名方案是由 VACATION_TEMPLATE MTA 選項的設定指定的。該選項應設定為 file: URL

對這些檔案的維護是自動進行的,由 VACATION_CLEANUP 整數 MTA 選項設定控制。每次開啟其中一個檔案時,系統將計算目前時間的值 (以秒為單位)。如果結果為零,系統將掃描此檔案,並移除所有過期的項目。該選項的預設值是 200,這表示執行清除傳送的機會為 1/200。

用於讀取和寫入這些純文字檔案的機器應設計為可以在 NFS 上正確作業。這可讓多個 MTA 共用一般檔案系統上的一組檔案。

休假自動回覆屬性

休假動作使用的使用者 LDAP 目錄屬性集是: