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

控制遞送狀態通知郵件

傳送傳送 狀態通知或狀態通知是電子郵件狀態,由 MTA 傳送至寄件者,並選擇性地傳送至 Postmaster。Messaging Server 可讓您自訂通知郵件的內容和語言。還可以為每種類型的傳送狀態 (例如,FAILEDBOUNCEDTIMEDOUT 等) 建立不同的郵件。此外,您可以為來自特定通道的郵件建立狀態通知。

依預設,狀態通知儲存在 msg_svr_base/config/locale/C 目錄 (由 msg_svr_base /config/imta_tailor 檔案中的 IMTA_LANG 設定指定) 中。檔案名稱如下:

return_bounced.txtreturn_delivered.txt return_header.optreturn_timedout.txtreturn_deferred.txtreturn_failed.txtreturn_prefix.txtreturn_delayed.txtreturn_forwarded.txtreturn_suffix.txt

*.txt 檔案的郵件文字應限制為每行 78 個字元。請注意,不應變更這些檔案,因為在升級為目前版本的 Messaging Server 後會覆寫它們。如果要修改這些檔案,並將它們用做唯一一組通知郵件範本檔案 (return_*.txt),請將這些檔案複製到新目錄中,並在其中編輯它們。然後,將 imta_tailor 檔案中的 IMTA_LANG 選項設定為指向包含這些範本的新目錄。如果想擁有多組通知檔案 (例如,每個語言一組),則將需要設定 NOTIFICATION_LANGUAGE 對映表。

建構和修改狀態通知

單一通知郵件自一組檔案 (三個) 中建構︰ return_prefix.txt + return_ActionStatus .txt + return_suffix.txt

若要自訂或本土化通知,應為每個語言環境和/或自訂建立一組完整的 return_*.txt 檔案,並將其儲存在單獨的目錄中。例如,您可以將法語通知檔案儲存在一個目錄中,將西班牙語通知檔案儲存在另一個目錄中,並將用於特殊垃圾電子郵件通道的通知儲存在第三個目錄中。


備註 –

本版次中包含法語、德語和西班牙語的範例檔案。您可以修改這些檔案以滿足特定需要。

對於雙位元組語言 (如日語),請確定使用日語建構您的文字之後,像查看 ASCII 一樣檢視該文字,以檢查 % 字元。如果有非預期的 % 字元,請使用 %% 取代它們。


狀態通知郵件集的格式和結構描述如下。

  1. return_prefix.txt 提供適當的標頭文字以及內文的介紹資料。美語的預設語言環境如下:


    Content-type: text/plain; charset=us-asci
    Content-language: EN-US
    
    This report relates to a message you sent with the following
    header fields: %H

    非美國 ASCII 狀態通知郵件應相應地變更 charset 參數和 Content-Language 標頭值 (例如,對於法語本土化檔案,值應為 ISO-8859-1fr)。%H 是表 10–9 中定義的標頭替換序列。

  2. return_<ActionStatus >.txt 包含狀態特定的文字。ActionStatus 指郵件的 MTA 狀態類型。例如,return_failed.txt 的預設文字為:

    Your message cannot be delivered to the following recipients:%R

    return_bounced.txt 的預設文字為︰

    Your message is being returned. It was forced to return bythe postmaster.

    The recipient list for this message was:%R

  3. return_suffix.txt 包含結束文字。依預設,此檔案為空白。

表 10–9 通知郵件替換序列

替換 

定義 

%H 

延伸為郵件的標頭。 

%C 

延伸為已形成佇列的郵件單位數目1

%L 

延伸為傳回郵件前,郵件在佇列中剩餘的單位數目1

%F 

延伸為郵件可在佇列中停留的單位數目1

%S [%s] 

延伸至字母 S 或 s (如果先前延伸的數值不等於一)。範例:依據郵件形成佇列的天數,可將「%C day%s」延伸為「1 天」或「2 天」。 

%U [%u] 

延伸為使用中的時間單位小時 [hour] 或天 [day]。範例:依據郵件形成佇列的天數或小時數,以及 MTA 選項 RETURN_UNITS 的值,可將「%C %U%s」延伸為「2 天」或「1 小時」。如果已設定 RETURN_UNITS=1 (小時),並且您的站點使用本土化狀態通知郵件,則需要編輯 return_delayed.txtreturn_timedout.txt,並將所有語言 (英語除外) 中的字「天」取代為「小時」。對於法語,用 heure(s) 取代 jour(s)。對於德語,用 Stunde(n) 取代 Tag(e)。對於西班牙語,使用 hora 取代 d?a

%R 

延伸為郵件的收件者清單。 

%% 

% (請注意,無論為何種字元集,均將為替換序列逐位元組地掃描文字。如果使用雙位元組字元集,請檢查是否存在非預期的 % 符號。) 

1 單位由 MTA 選項檔案中的 RETURN_UNITS 選項定義,可以是小時或天 (預設)。

自訂和本土化傳送狀態通知郵件

遞送狀態通知郵件可以被本土化,以便將郵件傳回給使用不同語言的不同使用者。例如,可將法語通知傳回給喜好設定為法語的使用者。

本土化或自訂狀態通知郵件由兩個步驟組成:

  1. 建立一組本土化/自訂 return_*.txt 郵件檔案,並將每組檔案儲存在單獨的目錄中。這在建構和修改狀態通知中加以說明

  2. 設定 NOTIFICATION_LANGUAGE 對映表。

NOTIFICATION_LANGUAGE 對映表 (位於 msg_svr_base/config/mappings) 指定一組本土化或自訂的通知郵件檔案,以視產生的郵件 (導致通知被傳送的郵件) 屬性而使用 (例如︰語言、國家/地區、網域或位址)。

剖析原始寄件者的郵件以確定狀態通知類型、來源通道、喜好的語言、傳回位址及第一收件者。視表格的建構方式而定,將依據以上的一個或多個屬性來選取一組通知檔案。

NOTIFICATION_LANGUAGE 對映表的格式如下。由於印刷排版原因,範例項目行換行。實際項目應顯示在一個實體行上。


NOTIFICATION_LANGUAGE

 dsn-type-list|source-channel|preferred-language|return-address \
|first-recipient $Idirectory-spec

NOTIFICATION_LANGUAGE
 
! Preferred-language: header value specified
!
    *|*|fr|*|*     $I/lc_messages/table/notify_french/
    *|*|es|*|*     $IIMTA_TABLE/notify_spanish/
    *|*|en|*|*     $I/imta/lang/
!
! If no Preferred-language value, then select notification based on the
! country code in the domain name. EX: PF=French Polynesia; BO=Bolivia
!
    *|*|*|*.fr|*   $I/imta/table/notify_french/
    *|*|*|*.fx|*   $I/imta/table/notify_french/
    *|*|*|*.pf|*   $I/imta/table/notify_french/
    *|*|*|*.tf|*   $I/imta/table/notify_french/
    *|*|*|*.ar|*   $I/imta/table/notify_spanish/
    *|*|*|*.bo|*   $I/imta/table/notify_spanish/
    *|*|*|*.cl|*   $I/imta/table/notify_spanish/
    *|*|*|*.co|*   $I/imta/table/notify_spanish/
    *|*|*|*.cr|*   $I/imta/table/notify_spanish/
    *|*|*|*.cu|*   $I/imta/table/notify_spanish/
    *|*|*|*.ec|*   $I/imta/table/notify_spanish/
    *|*|*|*.es|*   $I/imta/table/notify_spanish/
    *|*|*|*.gp|*   $I/imta/table/notify_spanish/
    *|*|*|*.gt|*   $I/imta/table/notify_spanish/
    *|*|*|*.gy|*   $I/imta/table/notify_spanish/
    *|*|*|*.mx|*   $I/imta/table/notify_spanish/
    *|*|*|*.ni|*   $I/imta/table/notify_spanish/
    *|*|*|*.pa|*   $I/imta/table/notify_spanish/
    *|*|*|*.ve|*   $I/imta/table/notify_spanish/
                  

備註 –

安裝時將提供一個預設 mappings.locale 檔案,此檔案將包含在 mappings 檔案中以啟用通知語言對映。若要停用通知語言對映,請註釋以下包含行:

! <IMTA_TABLE:mappings.locale

(請閱讀檔案中的註釋並修改它以滿足您的需要。)


產生的通知之國際化

兩個選項檔案可同時用於傳送狀態和郵件處理通知。它們旨在使產生的通知之國際化方式更為靈活。如下所示:


IMTA_LANG:return_option.dat (DSN)IMTA_LANG:disposition_option.dat (MDN)

這些檔案可用的選項之說明位於表 10–10 中。

表 10–10 遞送狀態和郵件處理通知選項

選項 

說明 

DAY (DSN)

設定 RETURN_UNITS=0 (預設) 時,要插入以替換 %U%u 的文字。請注意,%U%u 之間沒有區別 (與預設大小寫不同,其中英語「Day」或「day」分別進行替換)。

DIAGNOSTIC_CODE (DSN)

置換用於建構 DSN 第一部分之收件者特定區段的「Diagnostic code:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。

HOUR (DSN)

設定 RETURN_UNITS=1 時,要插入以替換 %U%u 的文字。請注意,%U%u 之間沒有區別 (與預設大小寫不同,其中英語「Hour」或「hour」分別進行替換)。

n.n.n (DSN)

建構 DSN 的收件者特定部分時,系統將進行檢查,以查看是否存在其名稱匹配收件者特定數值狀態的選項。如果有匹配,會將相應文字插入 DSN。此外,如果上述指定的 REASON 選項產生零長度結果,則不插入 REASON 欄位。

ORIGINAL_ADDRESS (DSN)

置換用於建構 DSN 第一部分之收件者特定區段的「Original address:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 

REASON (DSN)

置換用於 DSN 第一部分之收件者特定區段的建構中之「Reason:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。

RECIPIENT_ADDRESS (DSN)

置換用於建構 DSN 第一部分的收件者特定區段的「Recipient address:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 

RETURN_PERSONAL (DSN and MDN)

置換要與 From: 欄位結合使用的個人名稱欄位。此欄位應是 RFC 2047 編碼的。如果未指定 RETURN_PERSONAL MTA 選項,則使用由該選項設定的值。

SUBJECT (DSN 和 MDN)

置換 Subject: 欄位。僅在通知未提供自身主旨欄位時使用該值。此欄位應是 RFC 2047 編碼的。如果未使用此選項並且通知也未提供主旨,則將建構適當的主旨。 

TEXT_CHARSET (MDN)

用於轉換 MDN 的第一部分和主旨的字元集文字。預設為不執行任何轉換。 

其他狀態通知郵件功能

設定狀態通知郵件的必要程序在先前的小節中有所說明。以下各節描述其他功能。

封鎖大型郵件的內容傳回

通常,當郵件被退回或阻斷時,該郵件的內容會傳回至寄件者和通知郵件中的本機網域 Postmaster。如果完整地傳回大量的大型郵件,則可能使資源負載過重。若要阻斷超過一定大小的郵件內容傳回,請設定 MTA 選項檔案中的 CONTENT_RETURN_BLOCK_LIMIT 選項。

從狀態通知郵件包含的標頭中移除非美國 ASCII 字元

網際網路郵件標頭的原始格式不允許包含非美國 ASCII 字元。如果在郵件標頭中使用非美國 ASCII 字元,則將使用 RFC 2047 中說明的「MIME 標頭編碼」對這些字元進行編碼。因此,電子郵件中文的「主旨」行將實際顯示為:

Subject: =?big5?Q?=A4j=AB=AC=A8=B1=AD=B1=B0=D3=F5=A5X=AF=B2?=

顯示標頭時由電子郵件用戶端負責移除編碼。

由於 %H 範本將標頭複製到通知郵件的內文,因此已編碼的標頭文字將正常顯示。但是,如果主旨中的字元集 (此例中為「big5」) 匹配 return_prefix.txt 中的 Content-Type 標頭字元集參數中的字元集,則 Messaging Server 將移除編碼。如果不匹配,Messaging Server 將保留此編碼不變。

設定通知郵件遞送間隔時間

關鍵字:noticesnonurgentnoticesnormalnoticesurgentnotices

無法遞送的郵件將在給定的通道佇列中保留一段指定時間,然後再傳回至寄件者。此外,在 Messaging Server 嘗試遞送時,會將一系列狀態/警告訊息傳回給寄件者。可以使用 noticesnonurgentnoticesnormalnoticesurgentnotices 關鍵字指定郵件之間的時間和間隔時間。範例:

notices 1 2 3

對於所有郵件,將在 1 到 2 天後傳送暫態失敗狀態通知郵件。如果 3 天後仍沒有遞送郵件,則該郵件將傳回給其創建者。

urgentnotices 2,4,6,8

對於緊急郵件,將在 2 天、4 天和 6 天後傳送暫態失敗通知郵件。如果 8 天後仍沒有遞送郵件,則該郵件將傳回給其創建者。

請注意,MTA 選項檔案中的 RETURN_UNITS 選項可讓您指定單位 (小時 [1] 或天 [0])。預設為天 (0)。如果設定 RETURN_UNITS=1,則需要將傳回工作排程為每小時執行一次以及每小時獲取一次通知。每小時執行一次傳回工作時,它還會每小時更新一次 mail.log* 檔案。若要防止每小時更新 mail.log 檔案,請在 imta.tailor 檔案中設定 IMTA_RETURN_SPLIT_PERIOD 調校檔案選項為 24。傳回工作排程由 local.schedule return_job configutil 參數控制。

如果未指定 notices 關鍵字,預設將使用本機 l 通道的 notices 設定。如果未對本機通道進行設定,則預設將使用 notices 3, 6, 9, 12

在狀態通知郵件中包含已變更的位址

關鍵字:includefinalsuppressfinaluseintermediate

MTA 產生通知郵件 (退回郵件、傳送接收郵件等) 時,可能同時存在可用於 MTA 的收件人位址的「原始」格式和已變更的「最終」格式。MTA 會始終將原始格式 (假設存在) 包含在通知郵件中,因為這是通知郵件的收件者 (通知郵件所關心的原始郵件寄件者) 最可能識別的格式。

includefinalsuppressfinal 通道關鍵字控制 MTA 是否還包含最終格式的位址。抑制包含最終格式的位址可能適用於要對外界「隱藏」其內部電子信箱名稱的網站。此類網站可能僅會將原始「外部」格式的位址包含在狀態通知郵件中。includefinal 為預設,包含收件者位址的最終格式。如果原始位址存在,suppressfinal 會使 MTA 抑制狀態通知郵件中的最終位址格式。

useintermediate 關鍵字使用在清單延伸之後,但在使用者電子信箱名稱產生之前產生的中間格式。如果該資訊不可用,則使用最終格式。

對 Postmaster 傳送、封鎖和指定狀態通知郵件

依預設,除非傳回錯誤,且空白 Errors-to: 標頭行或空白訊息封 From: 位址完全抑制警告,否則失敗副本和警告狀態通知郵件會傳送至 Postmaster。 以下小節以及表 10–11 中所說明的一些通道關鍵字,可更精確地控制傳送至 Postmaster 的通知郵件。

傳回失敗郵件

關鍵字:sendpostnosendpostcopysendposterrsendpost

通道程式可能無法傳送郵件,原因為長期服務失敗或位址無效。發生這種情況時,MTA 通道程式會將郵件傳回給寄件者,並附帶郵件未遞送的原因說明。可選擇將所有失敗的郵件副本傳送至本機 Postmaster。這對監視郵件失敗十分有用,但可能會導致 Postmaster 必須處理過多的通訊。(請參閱表 10–11。)

警告郵件

關鍵字:warnpostnowarnpostcopywarnposterrwarnpost

除傳回郵件之外,MTA 還可以傳送未遞送郵件的詳細警告。這通常是由於 notices 通道關鍵字的設定而引起的逾時導致,雖然在某些情況下,通道程式可以在傳送嘗試失敗後產生警告郵件。警告郵件包含故障和傳送嘗試持續時間的說明。在大多數情況下,它們還包含問題郵件的標頭和前幾行。

還可以將所有警告郵件的副本傳送給本地 Postmaster (可選擇)。這對監視各個佇列的狀態可能十分有用,雖然它可能會導致 Postmaster 處理大量的通訊。關鍵字 warnpostcopywarnposterrwarnpostnowarnpost 用於控制向 Postmaster 傳送警告郵件。(請參閱表 10–11。)

空白訊息封傳回位址

關鍵字:returnenvelope

returnenvelope 關鍵字使用轉譯為一組位元旗標的單一整數值。位元 0 (值 = 1) 控制由 MTA 產生的傳回通知是使用空白訊息封位址,還是本地 Postmaster 的位址。設定該位元將強制使用本地 Postmaster 位址;清除該位元將強制使用空白位址。


備註 –

RFC 1123 強制使用空白位址。但是,某些系統無法正確處理空白訊息封 From: 位址,但可能又需要使用此選項。


位元 1 (值 = 2) 控制 MTA 是否使用本機 Postmaster 位址替代所有空白訊息封位址。此選項適用於不符合 RFC 821、RFC 822 或 RFC 1123 的不相容系統。

位元 2 (值 = 4) 禁止使用語法上無效的傳回位址。

位元 3 (值 = 8) 與 mailfromdnsverify 關鍵字相同。

Postmaster 返回的郵件內容

關鍵字:postheadonlypostheadbody

通道程式或定期郵件傳回工作將郵件傳回給 Postmaster 和原始寄件者時,Postmaster 副本可以是整個郵件,也可以僅是標頭。將 Postmaster 副本限制為標頭,可以增加使用者郵件的保密級別。但是,它本身並不保證郵件的安全性;Postmaster 和系統管理員通常可以使用 root 系統權限讀取郵件的內容 (如果他們選擇這麼做)。(請參閱表 10–11。)

設定每個通道的 Postmaster 位址

關鍵字:aliaspostmasterreturnaddressnoreturnaddressreturnpersonalnoreturnpersonal

依預設,Postmaster 的傳回位址 (MTA 建構退回郵件或狀態通知郵件時所使用的位址) 為 postmaster@local-host,其中,local-host 為正式的本地主機名稱 (本機通道上的名稱),Postmaster 的個人名稱為「MTA e-Mail Interconnect」。選取 Postmaster 位址時應小心 — 非法的選取可能會導致快速的郵件迴圈,並產生大量錯誤訊息。

RETURN_ADDRESSRETURN_PERSONAL 選項可用於設定 MTA 系統的預設 Postmaster 位址和個人名稱。或者,如果需要控制每個通道,可以使用 returnaddressreturnpersonal 通道關鍵字。returnaddressreturnpersonal 均使用必需的引數分別指定 Postmaster 位址和 Postmaster 個人名稱。noreturnaddressnoreturnpersonal 為預設,表示應使用預設值。這兩個預設是經由 RETURN_ADDRESSRETURN_PERSONAL 選項,或一般預設值 (如果未設定這些選項) 建立的。

如果將 aliaspostmaster 關鍵字置於通道上,則按正式通道名稱傳送給使用者名稱 postmaster (小寫、大寫或大小寫混合) 的所有郵件將重新導向至 postmaster@local-host,其中,local-host 是正式的本地主機名稱 (本機通道上的名稱)。請注意,網際網路標準要求 DNS 中接受郵件的任何網域均需具有接收郵件的有效 Postmaster 帳號。因此,在需要集中 Postmaster 的責任,而不是為單獨的網域設定單獨的 Postmaster 帳號時,該關鍵字將十分有用。亦即由於 returnaddress 可以控制 MTA 從 Postmaster 產生通知郵件時所使用的 Postmaster 傳回位址,aliaspostmaster 將影響 MTA 對傳送至 Postmaster 的郵件的處理。

表 10–11 用於將通知郵件傳送至 Postmaster 和寄件者的關鍵字

關鍵字 

說明 

傳回的郵件內容

指定通知的位址

notices

指定傳送通知和傳回郵件之前所消耗的時間。 

nonurgentnotices

指定為非緊急郵件傳送通知和傳回郵件之前所消耗的時間。 

normalnotices

指定為一般優先級郵件傳送通知和傳回郵件之前所消耗的時間。 

urgentnotices

指定為緊急郵件傳送通知和傳回郵件之前所消耗的時間。 

傳回的郵件

如何處理傳回郵件的失敗通知。

sendpost

啟用將所有失敗郵件的副本傳送至 postmaster 的功能。 

copysendpost

將失敗通知的副本傳送給 Postmaster (除非失敗郵件的創建者位址為空),此時,Postmaster 將收到所有失敗郵件的副本 (退回郵件或通知郵件除外)。 

errsendpost

僅當無法將失敗通知傳回給創建者時,才將其副本傳送給 postmaster。如果指定了 nosendpost,則不會向 Postmaster 傳送失敗郵件。

nosendpost

停用將所有失敗郵件的副本傳送至 postmaster 的功能。 

警告郵件

如何處理警告郵件。

warnpost

啟用將警告郵件的副本傳送至 postmaster 的功能。預設為將警告副本傳送至 Postmaster (除非使用空白 Warnings-to: 標頭或空白訊息封 From: 位址完全抑制警告)。

copywarnpost

除非未遞送郵件的創建者位址為空,否則將警告郵件的副本傳送至 postmaster。 

errwarnpost

僅當無法將警告通知傳回給創建者時,才將警告郵件的副本傳送給 postmaster。 

nowarnpost

停用將警告郵件的副本傳送至 postmaster 的功能。 

傳回的郵件內容

指定向 Postmaster 傳送整個郵件,還是僅傳送標頭。

postheadonly

僅將標頭傳回給 postmaster。將 Postmaster 副本限制為標頭,可以增加使用者郵件的保密級別。但是,這並不能保證郵件的安全性,因為 Postmaster 和系統管理員可以使用 root 系統權限讀取郵件的內容 (如果他們選擇這麼做)。

postheadbody

傳回郵件的標頭和內容。 

傳回的郵件內容

指定通知的位址

includefinal

在遞送通知中包含最終格式的位址 (收件者位址)。 

returnenvelope

控制空白訊息封傳回位址的使用。returnenvelope 關鍵字使用轉譯為一組位元旗標的單一整數值。

位元 0 (值 = 1) 控制由 MTA 產生的傳回通知是使用空白訊息封位址,還是本地 Postmaster 的位址。設定該位元將強制使用本地 Postmaster 位址;清除該位元將強制使用空白位址。 

位元 1 (值 = 2) 控制 MTA 是否使用本機 Postmaster 位址替代所有空白訊息封位址。此選項適用於不符合 RFC 821、RFC 822 或 RFC 1123 的不相容系統。

位元 2 (值 = 4) 禁止使用語法上無效的傳回位址。 

位元 3 (值 = 8) 與 mailfromdnsverify 關鍵字相同。

suppressfinal

抑制通知郵件中的最終位址格式,如果通知郵件中存在原始位址格式。 

useintermediate

使用在清單延伸之後但在使用者電子信箱名稱產生之前產生的中間格式。如果該資訊不可用,則使用最終格式。 

傳回的郵件內容

指定通知的位址

aliaspostmaster

按法定通道名稱傳送給使用者名稱 (postmaster) 的郵件被重新導向至 postmaster@local-host,其中 local-host 是本地主機名稱 (本地通道上的名稱)。 

returnaddress

指定本地 postmaster 的傳回位址。 

noreturnaddress

使用 RETURN_ADDRESS 選項值做為 Postmaster 位址名稱。

returnpersonal

設定本地 postmaster 的個人名稱。 

noreturnpersonal

使用 RETURN_PERSONAL 選項值做為 Postmaster 個人名稱。