對於自動產生的電子郵件回應 (自動回覆),尤其是休假郵件,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 中的預設自動回覆規則可在為使用者提供服務的郵件伺服器上產生自動回覆。如果您要在後端儲存系統上評估休假郵件,則無需進行任何配置。這是預設運作方式。
如果要在轉送 (而不是後端儲存系統) 上評估休假以增強效能,請編輯 option.dat 檔案,並將字元 # 置於 DELIVERY_OPTIONS 中的自動回覆規則之前。
使用編輯器開啟 option.dat 檔案。
增加或變更 DELIVERY_OPTIONS 選項,使現有的自動回覆規則類似於:
#*^!autoreply=$M+$D@bitbucket
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 的基礎上建立。此外,用於確定休假檔案路徑的位址現在儲存於使用者郵件屬性中﹔先前則是目前的收件者位址。
當呼叫時休假動作按如下方式工作:
Sun Java System Messaging Server 進行檢查以確保休假動作由使用者層級 (而不是系統層級) 的篩選程序檔執行。如果在系統級別的程序檔中使用休假,將出現錯誤。
核取「無休假通知」內部旗標。如果已設定該旗標,處理將終止且不傳送任何休假通知。
然後檢查郵件的傳回位址。如果為空白處理將終止且不傳送任何休假通知。
MTA 進行檢查以查看 :addresses 標記引數中指定的使用者位址或任何其他位址是否出現在目前郵件的 [To:]、[Cc:]、[Resent-to:] 或 [Resent-cc:] 標頭欄位中。如果在所有標頭欄位中均找不到位址,則處理將終止且不傳送任何休假通知。
Messaging Server 會建構一個 :subject 引數和原因字串的雜湊。系統將針對先前休假回覆的每個使用者記錄來核取該字串以及目前郵件的傳回位址。如果回覆已在 :days 引數允許的時間內傳送,則處理將終止且不傳送任何回覆。
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 目錄屬性集是:
別名處理作業可記錄此屬性中指定的個人名稱資訊,並將使用此資訊為產生的所有 MDN 或休假回覆建構 From: 產生的任何 MDN 或休假回覆的欄位。請謹慎使用此屬性以免洩漏個人資訊。
休假的開始日期和時間。該數值的格式為 YYYYMMDDHHMMSSZ。該值被標準化為 GMT。僅當目前時間在該屬性指定的時間之後,才會產生自動回覆。如果該屬性遺漏,則不會強制開始日期。透過將 LDAP_START_DATE MTA 選項設定為其他屬性名稱,可以指示 MTA 查找此資訊的其他屬性。
該屬性將由產生篩選程序檔的代碼讀取並檢查。如果目前日期在休假開始日期之前,休假處理將中斷。目前,由於篩選沒有日期/時間測試和比較工具,因此該屬性無法由程序檔自身處理。
休假的結束日期和時間。該數值的格式為 YYYYMMDDHHMMSSZ。該值被標準化為 GMT。僅當目前時間在該屬性指定的時間之前,才會產生自動回覆。如果該屬性遺漏,則不會強制結束日期。透過將 LDAP_END_DATE MTA 選項設定為其他屬性名稱,可以指示 MTA 查找此資訊的其他屬性。
該屬性將由產生篩選程序檔的代碼讀取並檢查。如果目前日期在休假結束日期之後,休假處理將中斷。目前,由於篩選沒有日期/時間測試和比較工具,因此該屬性無法由程序檔自身處理。
指定使用者郵件帳號的自動回覆模式。該屬性的有效值為:
echo - 建立一個多重文件,可回應原始郵件文字以及增加的 mailAutoReplyText 或 mailAutoReplyTextInternal 文字。
reply - 根據 mailAutoReplyText 或 mailAutoReplyTextInternal 的指定將單一部分的回覆傳送至原始寄件者。
這些模式將作為休假動作的非標準 :echo 和 :reply 引數出現在篩選程序檔中。echo 將產生一個「已處理」郵件處理通知 (MDN),該通知會將原始郵件做為傳回的內容包含進來。reply 將產生僅包含回覆文字的純回覆。非法值將不會顯示為休假動作的任何引數,並且這將產生僅包含原始郵件標頭的 MDN。另請注意,選取回應的自動回覆模式會導致自動回覆每封郵件,而不管前一封回覆的傳送時間有多近。
透過將 LDAP_AUTOREPLY_MODE MTA 選項設定為其他屬性名稱,可以指示 MTA 使用此資訊的其他屬性。
mailAutoReplySubject
指定要在自動回覆中使用的主旨欄位的內容。這必須是 UTF-8 字串。該值將做為休假動作的 :subject 引數進行傳送。透過將 LDAP_AUTOREPLY_SUBJECT MTA 選項設定為其他屬性名稱,可以指示 MTA 使用此資訊的其他屬性。
請注意,由於篩選目前沒有執行某些替換的功能,因此現在無法實作使用 $SUBJECT 將原始郵件插入標頭中。
傳送至除收件者網域中的使用者以外的所有寄件者的自動回覆文字。如果未指定,外部使用者將不會收到休假郵件。透過將 LDAP_AUTOREPLY_SUBJECT MTA 選項設定為其他屬性名稱,可以指示 MTA 使用此資訊的其他屬性。
從收件者網域傳送給寄件者的自動回覆文字。如果未指定,則內部使用者將收到自動回覆文字郵件。透過將 LDAP_AUTOREPLY_TEXT_INT MTA 選項設定為其他屬性名稱,可以指示 MTA 使用此資訊的其他屬性。
MTA 會將 mailAutoReplyText 或 mailAutoReplyTextInternal 屬性值做為原因字串傳送至休假動作。
向任何給定的郵件寄件者連續自動回覆的持續時間以小時為單位。僅當 mailAutoReplyMode=reply 時才可使用。如果值為 0,則每次收到郵件時,都將傳回一封回覆。 該值將被轉換為休假動作的非標準 :hours 引數。(通常,篩選休假動作僅支援用於此目的的 :days 引數,不允許使用 0 值。)
如果該屬性未在使用者項目上顯示,系統將從 AUTOREPLY_TIMEOUT_DEFAULT MTA 選項獲取一個預設逾時。透過設定 LDAP_AUTOREPLY_TIMEOUT MTA 選項,可以指示 MTA 使用此資訊的其他屬性。