傳送傳送 狀態通知或狀態通知是電子郵件狀態,由 MTA 傳送至寄件者,並選擇性地傳送至 Postmaster。Messaging Server 可讓您自訂通知郵件的內容和語言。還可以為每種類型的傳送狀態 (例如,FAILED、BOUNCED 或 TIMEDOUT 等) 建立不同的郵件。此外,您可以為來自特定通道的郵件建立狀態通知。
依預設,狀態通知儲存在 msg_svr_base/config/locale/C 目錄 (由 msg_svr_base /config/imta_tailor 檔案中的 IMTA_LANG 設定指定) 中。檔案名稱如下:
return_bounced.txt、return_delivered.txt return_header.opt、return_timedout.txt、return_deferred.txt、return_failed.txt、return_prefix.txt、return_delayed.txt、return_forwarded.txt 和 return_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 一樣檢視該文字,以檢查 % 字元。如果有非預期的 % 字元,請使用 %% 取代它們。
狀態通知郵件集的格式和結構描述如下。
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-1 和 fr)。%H 是表 10–9 中定義的標頭替換序列。
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
return_suffix.txt 包含結束文字。依預設,此檔案為空白。
替換 |
定義 |
---|---|
%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.txt 和 return_timedout.txt,並將所有語言 (英語除外) 中的字「天」取代為「小時」。對於法語,用 heure(s) 取代 jour(s)。對於德語,用 Stunde(n) 取代 Tag(e)。對於西班牙語,使用 hora 取代 d?a |
%R |
延伸為郵件的收件者清單。 |
%% |
% (請注意,無論為何種字元集,均將為替換序列逐位元組地掃描文字。如果使用雙位元組字元集,請檢查是否存在非預期的 % 符號。) |
1 單位由 MTA 選項檔案中的 RETURN_UNITS 選項定義,可以是小時或天 (預設)。 |
遞送狀態通知郵件可以被本土化,以便將郵件傳回給使用不同語言的不同使用者。例如,可將法語通知傳回給喜好設定為法語的使用者。
本土化或自訂狀態通知郵件由兩個步驟組成:
建立一組本土化/自訂 return_*.txt 郵件檔案,並將每組檔案儲存在單獨的目錄中。這在建構和修改狀態通知中加以說明
設定 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 |
dsn-type-list 是以逗號分隔的傳送狀態通知類型清單。如果指定多個類型,它們必須以逗號分隔且不留空格 (空格將終止對映表項目的式樣)。這些類型如下:
failed - 一般的永久性失敗郵件 (例如,沒有該使用者)。使用 return_failed.txt 檔案。
bounced - 與手動「退回」結合使用的通知郵件。由 Postmaster 完成。使用 return_bounced.txt 檔案。
timedout - MTA 無法在允許的傳送時間內傳送郵件。郵件將被傳回。使用 return_timedout.txt 檔案。
delayed - MTA 無法傳送郵件,但將繼續嘗試傳送它。使用 return_delayed.txt 檔案。
deferred - 類似於「延遲的」的未傳送通知,但沒有指出 MTA 將繼續嘗試傳送的時間。使用 return_deferred.txt 檔案。
forwarded - 為此郵件請求了傳送收據,但該郵件現在已轉寄至不支援此類收據的系統。使用 return_forwarded.txt 檔案。
source-channel 是產生通知郵件的通道,亦即郵件目前形成佇列的通道。例如,ims-ms 用於郵件儲存的傳送佇列,tcp_local 用於外寄 SMTP 佇列等。
preferred-language 是正在處理的郵件 (為其產生通知的郵件) 所使用的語言。此資訊的來源首先是 accept_language 欄位。如果不存在 Preferred-language: 標頭欄位,則使用 X-Accept-Language: 標頭欄位。如需標準語言代碼值的清單,請參閱檔案 msg_svr_base/config/languages.txt
如果此欄位不為空,則成為為 Preferred-language: 或 X-Accept-language: 標頭行指定的郵件寄件者。因此,您可能會在此欄位中發現無意義的字元。
return-address 是來源郵件的訊息封 From: 位址。這是要向其傳送通知郵件的訊息封位址,因此也是要使用語言的指示符號。
first-recipient 是原始郵件定址的訊息封 To: 位址 (第一個,如果郵件無法傳送至多個收件者)。例如,在通知「您的郵件無法傳送至 dan@siroe.com」中,dan@siroe.com 是報告的訊息封 To:。
directory-spec 是包含要使用的 return_*.txt 檔案的目錄 (如果對映表測試匹配)。請注意,$I 必須位於目錄規格之前。
例如,在目錄 /lc_messages/table/notify_french/ 中儲存法語通知檔案 (return_*.txt),以及在目錄 /lc_messages/table/notify_spanish/ 的 return_*.txt 檔案中儲存西班牙語通知檔案的網站,可能會使用以下表格。請注意,每個項目必須以一個或多個空格開頭,並且項目之間不能有空白行。
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」分別進行替換)。 |
置換用於建構 DSN 第一部分之收件者特定區段的「Diagnostic code:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 |
|
HOUR (DSN) |
設定 RETURN_UNITS=1 時,要插入以替換 %U 或 %u 的文字。請注意,%U 和 %u 之間沒有區別 (與預設大小寫不同,其中英語「Hour」或「hour」分別進行替換)。 |
n.n.n (DSN) |
建構 DSN 的收件者特定部分時,系統將進行檢查,以查看是否存在其名稱匹配收件者特定數值狀態的選項。如果有匹配,會將相應文字插入 DSN。此外,如果上述指定的 REASON 選項產生零長度結果,則不插入 REASON 欄位。 |
置換用於建構 DSN 第一部分之收件者特定區段的「Original address:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 |
|
REASON (DSN) |
置換用於 DSN 第一部分之收件者特定區段的建構中之「Reason:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 |
置換用於建構 DSN 第一部分的收件者特定區段的「Recipient address:」文字。指定此欄位的字元集應與 DSN 第一部分中使用的字元集相同。 |
|
置換要與 From: 欄位結合使用的個人名稱欄位。此欄位應是 RFC 2047 編碼的。如果未指定 RETURN_PERSONAL MTA 選項,則使用由該選項設定的值。 |
|
SUBJECT (DSN 和 MDN) |
置換 Subject: 欄位。僅在通知未提供自身主旨欄位時使用該值。此欄位應是 RFC 2047 編碼的。如果未使用此選項並且通知也未提供主旨,則將建構適當的主旨。 |
用於轉換 MDN 的第一部分和主旨的字元集文字。預設為不執行任何轉換。 |
設定狀態通知郵件的必要程序在先前的小節中有所說明。以下各節描述其他功能。
通常,當郵件被退回或阻斷時,該郵件的內容會傳回至寄件者和通知郵件中的本機網域 Postmaster。如果完整地傳回大量的大型郵件,則可能使資源負載過重。若要阻斷超過一定大小的郵件內容傳回,請設定 MTA 選項檔案中的 CONTENT_RETURN_BLOCK_LIMIT 選項。
網際網路郵件標頭的原始格式不允許包含非美國 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 將保留此編碼不變。
關鍵字:notices、nonurgentnotices、normalnotices、urgentnotices
無法遞送的郵件將在給定的通道佇列中保留一段指定時間,然後再傳回至寄件者。此外,在 Messaging Server 嘗試遞送時,會將一系列狀態/警告訊息傳回給寄件者。可以使用 notices、nonurgentnotices、normalnotices 或 urgentnotices 關鍵字指定郵件之間的時間和間隔時間。範例:
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。
關鍵字:includefinal、suppressfinal 和 useintermediate
MTA 產生通知郵件 (退回郵件、傳送接收郵件等) 時,可能同時存在可用於 MTA 的收件人位址的「原始」格式和已變更的「最終」格式。MTA 會始終將原始格式 (假設存在) 包含在通知郵件中,因為這是通知郵件的收件者 (通知郵件所關心的原始郵件寄件者) 最可能識別的格式。
includefinal 和 suppressfinal 通道關鍵字控制 MTA 是否還包含最終格式的位址。抑制包含最終格式的位址可能適用於要對外界「隱藏」其內部電子信箱名稱的網站。此類網站可能僅會將原始「外部」格式的位址包含在狀態通知郵件中。includefinal 為預設,包含收件者位址的最終格式。如果原始位址存在,suppressfinal 會使 MTA 抑制狀態通知郵件中的最終位址格式。
useintermediate 關鍵字使用在清單延伸之後,但在使用者電子信箱名稱產生之前產生的中間格式。如果該資訊不可用,則使用最終格式。
依預設,除非傳回錯誤,且空白 Errors-to: 標頭行或空白訊息封 From: 位址完全抑制警告,否則失敗副本和警告狀態通知郵件會傳送至 Postmaster。 以下小節以及表 10–11 中所說明的一些通道關鍵字,可更精確地控制傳送至 Postmaster 的通知郵件。
關鍵字:sendpost、nosendpost、copysendpost、errsendpost
通道程式可能無法傳送郵件,原因為長期服務失敗或位址無效。發生這種情況時,MTA 通道程式會將郵件傳回給寄件者,並附帶郵件未遞送的原因說明。可選擇將所有失敗的郵件副本傳送至本機 Postmaster。這對監視郵件失敗十分有用,但可能會導致 Postmaster 必須處理過多的通訊。(請參閱表 10–11。)
關鍵字:warnpost、nowarnpost、copywarnpost、errwarnpost
除傳回郵件之外,MTA 還可以傳送未遞送郵件的詳細警告。這通常是由於 notices 通道關鍵字的設定而引起的逾時導致,雖然在某些情況下,通道程式可以在傳送嘗試失敗後產生警告郵件。警告郵件包含故障和傳送嘗試持續時間的說明。在大多數情況下,它們還包含問題郵件的標頭和前幾行。
還可以將所有警告郵件的副本傳送給本地 Postmaster (可選擇)。這對監視各個佇列的狀態可能十分有用,雖然它可能會導致 Postmaster 處理大量的通訊。關鍵字 warnpost、copywarnpost、errwarnpost 和 nowarnpost 用於控制向 Postmaster 傳送警告郵件。(請參閱表 10–11。)
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 和原始寄件者時,Postmaster 副本可以是整個郵件,也可以僅是標頭。將 Postmaster 副本限制為標頭,可以增加使用者郵件的保密級別。但是,它本身並不保證郵件的安全性;Postmaster 和系統管理員通常可以使用 root 系統權限讀取郵件的內容 (如果他們選擇這麼做)。(請參閱表 10–11。)
關鍵字:aliaspostmaster、returnaddress、noreturnaddress、returnpersonal、noreturnpersonal
依預設,Postmaster 的傳回位址 (MTA 建構退回郵件或狀態通知郵件時所使用的位址) 為 postmaster@local-host,其中,local-host 為正式的本地主機名稱 (本機通道上的名稱),Postmaster 的個人名稱為「MTA e-Mail Interconnect」。選取 Postmaster 位址時應小心 — 非法的選取可能會導致快速的郵件迴圈,並產生大量錯誤訊息。
RETURN_ADDRESS 和 RETURN_PERSONAL 選項可用於設定 MTA 系統的預設 Postmaster 位址和個人名稱。或者,如果需要控制每個通道,可以使用 returnaddress 和 returnpersonal 通道關鍵字。returnaddress 和 returnpersonal 均使用必需的引數分別指定 Postmaster 位址和 Postmaster 個人名稱。noreturnaddress 和 noreturnpersonal 為預設,表示應使用預設值。這兩個預設是經由 RETURN_ADDRESS 和 RETURN_PERSONAL 選項,或一般預設值 (如果未設定這些選項) 建立的。
如果將 aliaspostmaster 關鍵字置於通道上,則按正式通道名稱傳送給使用者名稱 postmaster (小寫、大寫或大小寫混合) 的所有郵件將重新導向至 postmaster@local-host,其中,local-host 是正式的本地主機名稱 (本機通道上的名稱)。請注意,網際網路標準要求 DNS 中接受郵件的任何網域均需具有接收郵件的有效 Postmaster 帳號。因此,在需要集中 Postmaster 的責任,而不是為單獨的網域設定單獨的 Postmaster 帳號時,該關鍵字將十分有用。亦即由於 returnaddress 可以控制 MTA 從 Postmaster 產生通知郵件時所使用的 Postmaster 傳回位址,aliaspostmaster 將影響 MTA 對傳送至 Postmaster 的郵件的處理。
表 10–11 用於將通知郵件傳送至 Postmaster 和寄件者的關鍵字