Sun Java System Messaging Server 6.3 管理指南

第 17 章 休假自動郵件回覆

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

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

本章包含以下各節:

17.1 休假自動回覆簡介

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


備註 –

自動回覆郵件的字元集已變更為 UTF-8。


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

17.2 配置自動回覆

遞送位址可透過一組式樣產生。所用式樣取決於為 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 屬性建立休假篩選程序檔。自動回覆規則的字首字元可以是「!」、「#」、「^」和「*」。

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

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

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

字首字元 

定義 

!

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

#

允許在轉送上進行處理。 

^

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

@

從不同的郵件標頭欄位以及與訊息封 From: 位址相關的 LDAP 項目,擷取喜好的語言資訊。為使此資訊能適時提供使用,在執行自動回覆時,郵件必須透過重新處理通道進行傳送。若要執行此動作,可在 autoreply 遞送選項中加上 @ 旗標。請注意,增加通道躍點會加重郵件處理的負擔。

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

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

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。如需 NFS 裝載的重要資訊,請參閱12.8.2.3 使用 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 的基礎上建立。此外,用於確定休假檔案路徑的位址現在儲存於使用者郵件屬性中﹔先前則是目前的收件者位址。


17.3 休假自動回覆運作原理

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

  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 共用一般檔案系統上的一組檔案。

17.4 休假自動回覆屬性

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

MTA 可在多種具有不同語言標記的 LDAP 屬性與屬性值之間選擇,並判斷所應使用的正確值。實際上的語言標記會與訊息封寄件者位址的相關喜好語言資訊進行比對。目前以此方式處理的屬性只有 LDAP_AUTOREPLY_SUBJECT (通常為 mailAutoReplySubject)、LDAP_AUTOREPLY_TEXT (通常為 mailAutoReplyText)、LDAP_AUTOREPLY_TEXT_INT (通常為 mailAutoReplyTextInternal)、LDAP_SPARE_4LDAP_SPARE_5LDAP_PREFIX_TEXTLDAP_SUFFIX_TEXT

依預期,每個屬性值均應有不同的語言標記值。若不同的值具有相同的標記值,基本上將會隨機選擇這些值。

17.5 其他自動回覆作業和問題

本小節描述配置小節中未說明的自動回覆作業和問題。

17.5.1 針對已從非 Sun 郵件伺服器自動轉寄的電子郵件傳送自動回覆訊息

當 MTA 收到從非 Sun 系統自動轉寄的訊息時,會發生自動回覆問題。例如,如果用戶有一個 sesta.com 家用帳號,而用戶設定該帳號自動將訊息轉寄至 siroe.com 的工作帳號,而且如果 siroe.com 使用 Messaging Server,而該使用者設定帳號自動回覆休假訊息,則 Messaging Server 會在傳送休假訊息時發生問題。

發生問題的原因是,sesta.com 郵件伺服器將訊息封位址 user@sesta.com 變更為 user@siroe.com ,但是未變更標頭,仍然維持 user@sesta.com。當 MTA 接收訊息時,只會檢視標頭位址。它會嘗試比對此位址和 LDAP 使用者目錄中的位址。如果它找到比對的結果是其他人已設定自動回覆,則會傳送休假訊息。由於沒有與 user@sesta.com 相符的 LDAP 位址,因此不會傳送休假訊息。問題在於實際位址出現在訊息封,而未出現在標頭。

由於進行自動轉寄的遠端系統所識別的收件者位址未對應於本機系統的使用者,因此需要收件者設定本機系統能夠辨識這些位址,以便在必要時傳送休假回覆。

篩選 vacation 動作的 :addresses 引數提供這項功能。它可接受對應於收件者的位址清單,以進行這項檢查。由 MTA 選項 LDAP_AUTOREPLY_ADDRESSES 定義的屬性可在使用者的 LDAP 項目中指定這些位址。

若要針對已從非 Sun 郵件伺服器自動轉寄的訊息提供自動回覆功能,使用者或管理員可將轉寄這些訊息的電子郵件位址設定為 LDAP_AUTOREPLY_ADDRESSES 定義的屬性。