了解收取及重新顯示目錄

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2009-10-14

依預設,收取和重新顯示目錄會存在於執行安裝有 Hub Transport server role 或 Edge Transport server role 的 Microsoft Exchange Server 2010 每台電腦。您複製到收取或重新顯示目錄中,格式正確的電子郵件檔案會提交以供傳遞。[收取] 目錄可供系統管理員用來進行郵件流程測試,也可供必須建立與提交其郵件的應用程式使用。[重新顯示] 目錄會接收來自外部閘道伺服器的郵件,也可用來重新提交系統管理員從 Exchange 2010 伺服器的佇列匯出的郵件。

尋找與收取和重新顯示目錄相關的管理工作?請參閱 管理連接器

目錄

電子郵件檔的結構

收取目錄如何處理郵件

重新顯示目錄處理郵件的方式

收取及重新顯示目錄的安全性考量

收取及重新顯示目錄的權限

電子郵件檔的結構

標準 SMTP 電子郵件由「郵件信封」和郵件內容組成。郵件信封包含傳輸及傳遞郵件所需的資訊。郵件內容包含統稱為 (「郵件標頭」) 的郵件標頭欄位和郵件內容。RFC 2821 會說明郵件信封,而 RFC 2822 會說明郵件標頭。

當寄件者撰寫電子郵件並提交傳遞時,郵件會包含遵循 SMTP 標準所需的基本資訊,例如寄件者、收件者、郵件撰寫的日期和時間、選用的主旨行,以及選用的郵件內文。這些資訊包含在郵件本身,依照定義也在郵件標頭裡。

寄件者的郵件伺服器會使用郵件標頭中找到的寄件者和收件者資訊來產生郵件的郵件信封,並將郵件透過網際網路傳送至收件者的郵件伺服器。收件者絕對看不到郵件信封,因為郵件信封是在郵件傳輸過程中產生,實際上不是郵件的一部分。

在郵件傳輸過程中相關的每個伺服器,可能會在郵件標頭中插入與伺服器在傳遞郵件時所扮演角色相關的郵件標頭欄位,或是其他應用程式特有的郵件標頭欄位。當收件者使用電子郵件用戶端開啟郵件時,電子郵件用戶端會顯示郵件標頭中較相關的部份資訊,例如寄件者、收件者、主旨以及郵件內文。

回到頁首

收取目錄如何處理郵件

依照下列步驟來處理已複製至收取目錄且格式正確的 .eml 郵件檔,以進行提交:

  1. 每五秒鐘檢查一次收取目錄是否有新郵件檔案。您無法修改此輪詢間隔。您可以使用 Set-TransportServer Cmdlet 的 PickupDirectoryMaxMessagesPerMinute 參數,調整處理郵件檔的速率。預設值是每分鐘 100 封郵件。無法開啟的檔案會留在收取目錄中,並在下次輪詢時重新評估。

  2. 會檢查對收取目錄之郵件檔案所設的限制,例如標頭大小上限及收件者人數上限。依照預設,標頭大小上限為 64 KB,收件者人數上限為 100。您可以使用 Set-TransportServer 指令程式來變更這些限制。

  3. 將檔案從 <filename>.eml 重新命名為 <filename>.tmp。如果已有 <filename>.tmp 檔案存在,則檔案會更名為 <filename><datetime>.tmp。如果檔案更名失敗,會產生事件記錄錯誤,然後收取程序會繼續處理下個檔案。

  4. 將 .tmp 檔成功轉換為電子郵件後,會對 .tmp 檔發出 [關閉時刪除] 命令。.tmp 檔案看似留在收取目錄中,但無法開啟該檔案。

  5. 郵件順利置入佇列等待傳遞後,會發出「關閉」命令,而 .tmp 檔案則從收取目錄刪除。如果刪除失敗,會產生事件記錄錯誤。如果在收取目錄中有 .tmp 檔案時,Microsoft Exchange Transport 服務重新啟動了,則所有 .tmp 檔都會更名為 .eml 檔案,並重新處理。這可能會導致重複傳遞郵件。

收取目錄中的郵件檔案需求

複製到收取目錄的郵件檔案必須符合下列需求才能成功傳遞:

  • 郵件檔必須是符合基本 SMTP 郵件格式的文字檔。支援 MIME 郵件標頭欄位和內容。

  • 郵件檔案的副檔名必須為 .eml。

  • 在郵件標頭中,Sender 或 From 郵件標頭欄位中必須至少要有一個電子郵件地址。如果單一電子郵件地址同時存在於 Sender 和 From 欄位中,則會使用 欄位中的電子郵件地址作為郵件信封中的郵件建立者。

  • Sender 欄位中只能有一個電子郵件地址存在。不允許多個電子郵件地址。如果 From 欄位中只有一個電子郵件地址存在,則寄件者欄位是選用的。

  • 在 From 欄位中允許多個電子郵件地址,但是單一個電子郵件地址也必須存在於 Sender 欄位中。這樣便會使用 Sender 欄位中的地址作為郵件信封中的郵件建立者。

  • [收件者]、[副本] 或 [密件副本] 欄位中,必須有至少一個電子郵件地址。

  • 郵件標頭與郵件內文之間必須有一行空白行。

以下是純文字郵件的範例,該郵件使用收取目錄可接受的格式。

To: mary@contoso.com
From: bob@fabrikam.com
Subject: Message subject

This is the body of the message.

收取目錄郵件檔中也支援 MIME 內容。MIME 定義了廣泛的郵件內容,其中包括無法以 7 位元 ASCII 文字呈現的語言、HTML 以及其他多媒體內容。MIME 的完整描述及其需求不在本主題的討論範圍內。以下是簡易 MIME 郵件的範例,該郵件使用收取目錄可接受的格式。

To: mary@contoso.com
From: bob@fabrikam.com
Subject: Message subject
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<HTML><BODY>
<TABLE>
<TR><TD>cell 1</TD><TD>cell 2</TD></TR>
<TR><TD>cell 3</TD><TD>cell 4</TD></TR>
</TABLE>

</BODY></HTML>

在收取目錄的郵件檔中修改郵件標頭

收取目錄會從郵件標頭移除以下任何的郵件標頭欄位:

  • Received

  • Resent-*

  • Bcc

    注意事項附註:
    在郵件標頭中的選用 [密件副本] 郵件標頭欄位中,所發現的任何電子郵件地址都會正確處理。在 Bcc 收件者提升為不可見的郵件信封收件者之後,他們會從信封標頭移除,以保護其身分。如果郵件只包含 Bcc 收件者,則會在郵件標頭的 To 欄位中新增[Undisclosed Recipients]值。

收取目錄會在郵件提交程序中,新增自己的 Received 標頭欄位到郵件中。Received 標頭欄位將以下列格式套用:

Received: from localhost by Pickup with Microsoft SMTP Server id <ExchangeServerVersion><datetime>

收取目錄會修改下列郵件標頭欄位 (如果遺失或格式錯誤的話):

  • 訊息識別碼 如果 [訊息識別碼] 欄位遺失或空白,收取目錄會使用 <GUID>@<defaultdomain> 格式來新增 [訊息識別碼] 欄位。

  • 日期   如果 Date 欄位遺失或格式錯誤,收取目錄會新增收取目錄處理郵件時的日期和時間。

收取目錄郵件處理的失敗

複製到收取目錄的郵件檔案可能不會成功置入佇列等待傳遞。以下是可能發生的郵件提交失敗種類:

  • 傳遞失敗   格式正確的郵件檔案加上收取目錄無法成功提交傳遞的有效寄件者,會產生未傳遞回報 (NDR)。格式錯誤的內容或收取目錄郵件限制違規也可能導致收取目錄產生 NDR。當收取目錄處理郵件期間產生 NDR 時,原始的郵件檔案會附加到 NDR 郵件,而郵件檔案會從收取目錄刪除。

    注意事項附註:
    由收取目錄提交、格式正確的郵件可能稍後會經歷傳遞失敗並與 NDR 一起送回給寄件者。這種失敗可能是由於與收取目錄無關的傳輸問題所導致,例如郵件伺服器失敗,或是郵件傳遞路徑上的路由失敗。
  • 錯誤郵件   被分類為 錯誤郵件的郵件會有嚴重的問題,導致收取目錄無法提交郵件以便傳遞。其他導致錯誤郵件的狀況例如郵件格式正確,但收件者無效,且由於寄件者無效,而無法傳送 NDR 郵件給寄件者。

    被判定為錯誤郵件的郵件檔案會留在收取目錄中,並從 <filename>.eml 更名為 <filename>.bad。如果 <filename>.bad 檔已經存在,則會將檔案重新命名為 <filename><datetime>.bad。如果錯誤郵件存在於收取目錄中,會產生事件記錄錯誤,但相同的錯誤郵件不會產生重複的事件記錄錯誤。

    注意事項附註:
    在您將郵件檔案複製到收取目錄以進行傳遞之前,請務必在不同的位置中進行撰寫與儲存。收取目錄會每五秒鐘檢查是否有新郵件。因此,如果您試圖在收取目錄中撰寫並儲存郵件檔案,則收取目錄可能會在您撰寫完畢之前便嘗試處理郵件檔案。

回到頁首

重新顯示目錄處理郵件的方式

依照下列步驟來處理已複製至重新顯示目錄且格式正確的 .eml 郵件檔,以進行提交:

  1. 每隔 5 秒鐘檢查重新顯示目錄上是否有新郵件。您無法修改此輪詢間隔。您可以使用 Set-TransportServer Cmdlet 的 PickupDirectoryMaxMessagesPerMinute 參數,調整處理郵件檔的速率。預設值是每分鐘 100 封郵件。無法開啟的檔案會留在重新顯示目錄中,並於下次輪詢時再次評估它們。

  2. 將檔案從 <filename>.eml 重新命名為 <filename>.tmp。如果 *<filename>.*tmp 檔已經存在,則將檔案重新命名為 <filename><datetime>.tmp。如果重新命名檔案的作業失敗,則會產生事件記錄錯誤,而重新顯示程序會繼續處理下一個檔案。

  3. 將 .tmp 檔成功轉換為電子郵件後,會對 .tmp 檔發出 [關閉時刪除] 命令。.tmp 檔案看似留在重新顯示目錄中,但無法開啟該檔案。

  4. 將郵件成功排入佇列以等候傳遞之後,會發出**「關閉」**(close) 命令,.tmp 檔便會從重新顯示目錄中刪除。如果刪除失敗,會產生事件記錄錯誤。如果 Microsoft Exchange Transport 服務重新啟動時重新顯示目錄中還有 .tmp 檔,則所有 .tmp 檔都會重新命名為 .eml 檔然後重新處理。這可能會導致重複傳遞郵件。

重新顯示目錄中之郵件檔的需求

重新顯示目錄用來重新提交已匯出的 Exchange 郵件,以及接收來自外部閘道伺服器的郵件。這些郵件都已針對重新顯示目錄加以格式化。系統管理員或其他應用程式不需使用重新顯示目錄來撰寫及提交新郵件。若要建立及提交新郵件檔,應使用收取目錄。

重新顯示目錄郵件使用大量的 X-Header。X-Header 是使用者定義的非正式郵件標頭欄位,存在郵件標頭中。RFC 2822 並未特別提及 X-Header,但以「X-」開頭的未定義郵件標頭欄位已普遍成為在郵件中加入非正式郵件標頭欄位的方式。重新顯示目錄中的郵件檔所用的 Exchange 2010 專用 X-Header,實際上可設定通常出現在郵件信封中的傳遞資訊。當您使用重新顯示目錄處理從另一個 Exchange 伺服器匯出的郵件時,需要使用這個功能來保留原始郵件資訊。

複製至重新顯示目錄的郵件檔必須符合下列需求,才能順利傳遞:

  • 郵件檔必須是符合基本 SMTP 郵件格式的文字檔。支援 MIME 郵件標頭欄位和內容。

  • 郵件檔案的副檔名必須為 .eml。

  • X-Header 必須放在所有標準標頭欄位之前。

  • 標頭欄位與郵件內文之間必須有一行空白行。

重新顯示目錄中的郵件需要下列清單描述的 X-Header:

  • X-Sender 此 X-Header 會取代一般 SMTP 郵件中的 [寄件者] 郵件標頭欄位需求。必須具備一個 X-Sender 欄位,其中包含一個電子郵件地址。重新顯示目錄會忽略 From 郵件標頭欄位 (如果存在),但收件者的電子郵件用戶端仍會將 From 郵件標頭欄位的值顯示為郵件的寄件者。下列範例顯示 X-Sender 欄位中通常會有的其他參數:

    X-Sender: <bob@fabrikam.com> BODY=7bit RET=HDRS ENVID=12345ABCD auth=<someAuth>
    
    注意事項附註:
    這些參數是傳送伺服器通常會產生的郵件信封值。在匯出的郵件檔中也可以看到類似的參數。
    RET 會指定若郵件未能傳遞時,應將整封郵件或只將標頭傳回給寄件者。RET 可以有 HDRSFULL 的值。 ENVID 是郵件信封識別碼。BODY 會指定郵件的文字編碼。auth 會指定通訊伺服器的驗證機制,如 RFC 2554 中所述。
  • X-Receiver   此 X-Header 取代一般 SMTP 郵件中的 To 郵件標頭欄位需求。至少必須具備一個 X-Receiver 欄位,其中包含一個電子郵件地址。多位收件者可使用多個 X-Receiver 欄位。重新顯示目錄會忽略 To 郵件標頭欄位 (如果存在),但收件者的電子郵件用戶端仍會將 To 郵件標頭欄位的值顯示為郵件的收件者。X-Receiver 欄位中可能存在其他可選參數,如下範例所示:

    X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
    
    注意事項附註:
    這些參數是傳送伺服器通常會產生的郵件信封值。在匯出的郵件檔中也可以看到類似的參數。這些參數與傳遞狀態通知 (DSN) 郵件有關,如 RFC 1891 中所述。
    NOTIFY 可以有 NEVERDELAYFAILURE 的值。ORcpt 會保留原始郵件收件者。

重新顯示目錄中的郵件檔可以選用下列清單描述的 X-Header。

  • X-CreatedBy   用於標頭防火牆功能。如果此 X-Header 存在,則不可為空白。如果 X-CreatedBy 欄位不存在,它會新增 Unspecified 的值。此欄位的值通常是 MSExchange14,但也可能包含在傳送連接器上設定的非 SMTP 位址空間類型,例如 Notes

  • X-EndOfInjectedXHeaders  存在大小以位元組為單位的所有 X-Header。此 X-Header 可作為標記,指出標準郵件標頭欄位開始前的最後一個 X-Header。

  • X-ExtendedMessageProps   郵件的延伸郵件內容。

  • X-HeloDomain   初始 SMTP 通訊協定交談期間所呈現的 HELO/EHLO 網域字串。

  • X-LegacyExch50   用來保留如果 Exchange 2003 伺服器存在時,Exchange Server 2003 所產生的自訂內容。

  • X-SourceMessageSourceName 欄下方的佇列檢視器使用。如果未指定此 X-Header 的值,則會使用 Replay 這個值。此 X-Header 的其他可能值為 Smtp Receive ConnectorSmtp Send Connector

  • X-SourceIPAddress   傳送伺服器的 IP 位址。若未指定 IP 位址,則此欄位為 0.0.0.0。

以下是純文字郵件的範例,該郵件使用重新顯示目錄可接受的格式。

X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
X-Sender: <bob@fabrikam.com> BODY=7bit ENVID=12345AB auth=<someAuth>
Subject: Optional message subject

This is the body of the message.

重新顯示目錄郵件檔也支援 MIME 內容。MIME 定義了廣泛的郵件內容,其中包括無法以 7 位元 ASCII 文字呈現的語言、HTML 以及其他多媒體內容。MIME 的完整描述及其需求不在本主題的討論範圍內。以下是簡易 MIME 郵件的範例,該郵件使用重新顯示目錄可接受的格式。

X-Receiver: <mary@contoso.com> NOTIFY=NEVER ORcpt=mary@contoso.com
X-Sender: <bob@fabrikam.com> BODY=7bit ENVID=12345ABCD auth=<someAuth>
To: mary@contoso.com
From: bob@fabrikam.com
Subject: Optional message subject
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

<HTML><BODY>
<TABLE>
<TR><TD>cell 1</TD><TD>cell 2</TD></TR>
<TR><TD>cell 3</TD><TD>cell 4</TD></TR>
</TABLE>

</BODY></HTML>

在重新顯示目錄的郵件檔中修改郵件標頭

重新顯示目錄會刪除郵件檔中的 Bcc 郵件標頭欄位。

在提交郵件過程中,重新顯示目錄會將本身的 Received 郵件標頭欄位加入郵件中。Received 郵件標頭欄位會以下列格式套用。

Received: from <ReceivingServerName> by Replay with <ExchangeServerVersion><DateTime>

重新顯示目錄會在郵件標頭中修改下列郵件標頭欄位:

  • 訊息識別碼 如果此訊息標頭欄位遺失或空白,重新顯示目錄會使用 <GUID>@<defaultdomain> 格式來新增 [訊息識別碼] 訊息標頭欄位。

  • 日期   如果此郵件標頭欄位遺失或格式錯誤,重新顯示目錄會以重新顯示目錄處理郵件的日期和時間來加入 Date 郵件標頭欄位。

重新顯示目錄郵件處理程序中的失敗

將郵件檔轉換為電子郵件時若發生任何問題,都會導致重新顯示目錄將該郵件視為無法傳遞 (錯誤郵件)。錯誤郵件檔都有嚴重的問題,例如遺失寄件者、遺失收件者或格式有問題。經判斷為錯誤郵件的郵件檔會留在重新顯示目錄中,並從 <filename>.eml 重新命名為 <filename>.bad。如果 <filename>.bad 檔已經存在,則會將檔案重新命名為 <filename><datetime>.bad。如果重新顯示目錄中存在錯誤郵件,便會產生事件記錄錯誤,不過相同的錯誤郵件不會產生重複的事件記錄錯誤。

回到頁首

收取及重新顯示目錄的安全性考量

下列清單描述收取目錄及重新顯示目錄常用的安全性考量:

  • 任何設定於接收連接器的安全檢查,例如反垃圾郵件、防毒、寄件者過濾,或是收件者過濾動作,都不會針對透過收取目錄或重新顯示目錄提交的郵件執行。

  • 遭入侵的收取目錄或重新顯示目錄可作為開放式轉送來運作。這會引發使用其他伺服器將郵件的真正來源遮罩起來,再重新提交或「轉送」郵件的行為。

下列清單描述適用於重新顯示目錄的安全性考量:

  • 重新顯示目錄使用的 X-Header 允許手動建立郵件信封。[X-Sender] 與 [X-Receiver] 欄位中的資訊,可能會與電子郵件用戶端顯示的 [收件者] 或 [寄件者] 郵件標頭欄位完全不同。這種仿造寄件者及網域的行為通常稱為「詐騙」(Spoofing)。「冒名郵件」(Spoofed mail) 是一封電子郵件,其寄件地址經過修改,看起來好像來自郵件真正寄件者以外的寄件者。

  • 如果 [X-CreatedBy] 欄位的值是 MSExchange14,則目的地會視為可信任,就不會套用標頭防火牆。標頭防火牆是 Exchange 採用的一種安全方法,當郵件是在受信任的 Exchange 2010 伺服器之間傳輸時會保留 X-Header 標頭;當郵件是傳輸到 Exchange 組織外部的不受信任目的地時則會移除有暴露疑慮的 X-Header 標頭。這些 X-Header 可以用來在已授權 Exchange 2010 伺服器之間共用 Exchange 2010 資訊,例如垃圾郵件信賴等級 (SCL)、郵件簽章或加密。所以,將此項資訊暴露給未授權來源,可能會造成潛在的安全性風險。

重新顯示目錄應套用較嚴密的安全性,因為重新顯示目錄具有額外的安全性風險。可以授予必須產生並提交郵件的使用者或應用程式對收取目錄的存取,但是他們不應該要求對重新顯示目錄的存取。

所有 Hub Transport Server 與 Edge Transport Server 上預設都會啟用收取目錄和重新顯示目錄。若組織中的特定 Hub Transport Server 或 Edge Transport Server 不需要收取目錄或重新顯示目錄,可以停用該伺服器上的收取目錄或重新顯示目錄。如需相關資訊,請參閱下列主題:

回到頁首

收取及重新顯示目錄的權限

收取和重新顯示目錄需要下列權限:

  • 系統管理員:完整控制

  • 系統:完整控制

  • 網路服務:讀取、寫入和刪除子資料夾及檔案

依預設,Microsoft Exchange Transport 服務使用網路服務使用者帳戶的安全認證來管理收取和重新顯示目錄的位置和權限。網路服務帳戶需要對收取目錄擁有這些權限,才能夠開啟 .eml 檔案、更名成 .tmp 並刪除,或是在郵件分類為錯誤郵件時更名成 .bad。

您可以使用 Set-TransportServer 指令程式的 PickupDirectoryPathReplayDirectoryPath 參數,來移動這些目錄的位置。成功變更收取目錄的位置,取決於在新的目錄位置授與網路服務帳戶的權限,以及新的目錄是否已存在。如果目錄不存在,而網路服務帳戶具有在新位置建立資料夾與套用權限所需的權限,便會將正確的權限套用至該目錄。如果新目錄已經存在,則不會檢查現有資料夾的權限。所以,當您以 Set-TransportServer 指令程式的 PickupDirectoryPathReplayDirectoryPath 參數移動目錄位置時,請務必要確認新目錄是否存在,以及新目錄是否套用了正確的權限。

回到頁首

 © 2010 Microsoft Corporation. 著作權所有,並保留一切權利。