管理重新顯示目錄

 

適用版本: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上次修改主題的時間: 2007-02-22

依預設,在有安裝 Hub Transport server role 或 Edge Transport server role 的每台 Microsoft Exchange Server 2007 電腦上,都會有重新顯示目錄。複製到重新顯示目錄的正確格式化電子郵件訊息檔案會提交以進行傳遞。重新顯示目錄會接收來自外部閘道伺服器的郵件,並重新提交系統管理員從 Exchange 2007 伺服器的佇列中匯出的郵件。

您可以針對所有重新顯示目錄的組態工作使用 Set-TransportServer 指令程式。此指令程式可以用來進行下列重新顯示目錄的組態變更:

  • 啟用或停用重新顯示目錄。

  • 指定重新顯示目錄的位置。

  • 指定每分鐘用來處理郵件中之郵件檔的最大速率。

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

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

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

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

  3. 將 .tmp 檔成功轉換為電子郵件後,會對 .tmp 檔發出「關閉時刪除」(delete on close) 命令。.tmp 檔看似仍存在於重新顯示目錄中,但沒有人能夠開啟該檔案。

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

電子郵件檔的結構

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

當寄件者撰寫電子郵件並提交傳遞時,郵件會包含遵循 SMTP 標準所需的基本資訊,例如寄件者、收件者、郵件撰寫的日期和時間、選用的主旨行,以及選用的郵件內文。這些資訊包含在郵件本身,依照定義也在郵件標頭裡。寄件者的郵件伺服器會使用郵件標頭中的寄件者和收件者資訊來產生郵件的郵件信封,然後將郵件傳輸至網際網路上以進行傳遞。收件者絕對看不到郵件信封,因為郵件信封是在郵件傳輸過程中產生,實際上不是郵件的一部分。參與傳輸郵件的每一台伺服器,可能在郵件標頭中插入與傳送時的伺服器角色有關的郵件標頭欄位,或其他應用程式特定的郵件標頭欄位。當收件者使用電子郵件用戶端開啟郵件時,電子郵件用戶端會顯示郵件標頭中的比較有關係的資訊,例如寄件者、收件者及主旨。

可以解釋郵件信封和郵件標頭之間關係的最佳範例,就是在大公司中寄送傳統郵件的過程。假設您寫了一封正式的商業信函,信函頂端附上貴公司的地址與收件者的地址。然後您將這封信交給公司的收發室。收發室人員根據您信函中的收件者資訊建立信封,將您的信函放入信封並封口,然後將這封信投入郵筒。郵局根據信封上的地址,將這封信送到收件者的公司。收件者公司的收發室人員收到信以後,根據信封判斷收件者、開啟信封,然後將信函放進收件者的個人信箱。收件者從其個人信箱取出信函後,從信函開頭處的敬致詞資訊中,就可以得知這封信是您寫給他 (她) 的。

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

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

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

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

  • 郵件檔必須是符合基本 SMTP 郵件格式的文字檔。支援多用途網際網路郵件延伸標準 (MIME) 郵件標頭欄位及內容。

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

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

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

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

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

    X-Sender: <bob@fabrikam.com> BODY=7bit RET=HDRS ENVID=12345ABCD auth=<someAuth>
    
    note附註:
    這些參數是傳送伺服器通常會產生的郵件信封值。在匯出的郵件檔中也可以看到類似的參數。
    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
    
    note附註:
    這些參數是傳送伺服器通常會產生的郵件信封值。在匯出的郵件檔中也可以看到類似的參數。這些參數與 RFC 1891 所述的傳遞狀態通知 (DSN) 有關。NOTIFY= 可具有值 NEVERDELAYFAILUREORcpt= 則是用來保留郵件的原始收件者。

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

  • X-CreatedBy: 如果此 X-Header 存在,則不可為空白。如果 X-CreatedBy: 欄位不存在,則會加上 Unspecified 這個值。此欄位的值通常是 MSExchange12,但也可能包含在傳送連接器上設定的非 SMTP 位址空間類型,例如 Notes。此郵件標頭欄位是作為標頭防火牆功能。

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

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

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

  • X-LegacyExch50:   用來保留 Exchange Server 2003 產生的自訂內容 (如果 Exchange 2003 伺服器存在的話)。

  • X-Source: 如果未指定此 X-Header 的值,則會使用 Replay 這個值。佇列檢視器在 [MessageSourceName] 欄位下使用此 X-Header。此 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@contoso.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@contoso.com> BODY=7bit ENVID=12345ABCD auth=<someAuth>
To: mary@contoso.com
From: bob@contoso.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>

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

  • Message-ID: 如果此郵件標頭欄位遺失或空白,重新顯示目錄會使用 <GUID>@<defaultdomain> 格式來加入 Message-ID: 郵件標頭欄位。

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

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

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

重新顯示目錄的安全問題

Exchange Server 2003 使用單一的收取目錄來建立與提交文字郵件檔。Exchange 2007 則將此功能分割為獨立的收取目錄以及重新顯示目錄。收取目錄是供使用者或應用程式手動建立新郵件檔使用。重新顯示目錄則是用來重新提交匯出的 Exchange 電子郵件以及接收來自非 SMTP 連接器的郵件。此項責任分工可將適當的安全性套用至某個目錄,而不影響另一個目錄的功能。

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

  • 提交郵件時,在接收連接器上設定的任何安全性檢查 (例如反垃圾郵件、防毒、寄件者篩選或收件者篩選動作) 都不會在透過收取目錄及重新顯示目錄提交的郵件上執行。

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

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

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

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

將收取目錄及重新顯示目錄分離開來,表示您可以對每個目錄套用不同的安全性等級。重新顯示目錄應套用較嚴密的安全性,因為重新顯示目錄具有額外的安全性風險。若為必須產生及提交新郵件的使用者或應用程式,可將收取目錄的存取權授與它們,它們不需要存取重新顯示目錄。

重新顯示目錄的權限

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

  • 系統管理員:完全控制

  • 系統:完全控制

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

依預設,Microsoft Exchange Transport 服務會使用網路服務使用者帳戶的安全性認證來管理重新顯示目錄的位置及權限。因此,網路服務帳戶需要具備重新顯示目錄的上述權限才能開啟 .eml 檔、將其重新命名為 .tmp 及進行刪除,或是在郵件被分類為錯誤郵件時將其重新命名為 .bad。

您可以使用 Set-TransportServer 指令程式的 ReplayDirectoryPath 參數,移動重新顯示目錄的位置。能否成功變更重新顯示目錄的位置,視您授與網路服務帳戶存取新重新顯示目錄的權限,以及新的重新顯示目錄是否已存在而定。如果新的重新顯示目錄尚未存在,而且網路服務帳戶具有在新位置建立資料夾及套用權限所需的權限,便能建立新的重新顯示目錄,也能將正確的權限套用至新目錄。如果新的重新顯示目錄已存在,則不會檢查現有資料夾權限。所以,當您以 Set-TransportServer 指令程式的 ReplayDirectoryPath 參數移動了重新顯示目錄時,一定要確認新的重新顯示目錄是否存在,以及新目錄是否套用了正確的權限。如果您對重新顯示目錄進行的變更未順利完成,您可以先建立新的重新顯示目錄、對它套用正確的權限,再使用 Set-TransportServer 指令程式的 ReplayDirectoryPath 參數。

相關資訊

如需相關資訊,請參閱下列主題: