了解 Exchange 日誌記錄問題

 

上次修改主題的時間: 2011-09-23

因為商務通訊會受到持續成長的政府法規 (如沙氏法案 (Sarbanes-Oxley Act of 2002)) 影響,所以許多組織都必須增加對電子資料之日誌記錄的使用。

為了解決此需要,Microsoft Exchange Server 5.5 及更新版本的 Exchange 包含某種形式的訊息日誌記錄。

在其最基本形式中,日誌記錄的作用是製作透過特定伺服器移動之每個訊息的複本,然後將那些複本傳送至不同信箱以進行儲存。可用的日誌記錄類型,取決於所使用的 Exchange 版本。

Exchange Server 2003 SP1 日誌記錄概觀

從 Microsoft Exchange Server 2003 Service Pack 1 (SP1) 開始,訊息日誌記錄可以使用下列三種格式其中之一:

  • 只限郵件的日誌記錄:將原始電子郵件訊息的複本與 P2 標頭資訊一起傳送至日誌信箱。這不包括密件副本資訊,或是展開群組之後的通訊群組成員。
  • BCC 日誌記錄:與只限郵件的日誌記錄類似,差異在於它還會擷取密件副本資訊。
  • 信封日誌記錄:擷取所有信封 (P1) 標頭資訊。這包括密件副本收件者,以及展開的通訊群組成員資格。日誌報告會以附件形式與原始郵件一起傳送至日誌信箱。

啟用日誌記錄

在想要日誌記錄之使用者信箱的資料庫上啟用日誌記錄。若要啟用日誌記錄,請設定日誌收件者以儲存日誌記載的郵件,然後設定信箱儲存區的 msExchMessageJournalRecipient 屬性。

若要設定 msExchMessageJournalRecipient 屬性,請遵循下列步驟:

  1. 啟動 Active Directory 服務介面 (ADSI) 編輯器工具。若要這麼做,請依序按一下 [開始] 及 [執行],輸入 adsiedit.msc,然後按一下 [確定]。
  2. 展開 [Configuration] 容器底下的下列路徑:
    • CN=Configuration [<domainController>.contoso.com]
    • CN=Services
    • CN=Microsoft Exchange
    • CN=<OrganizationName>
    • CN=Administrative Groups
    • CN=<AdministrativeGroupName>
    • CN=Servers
    • CN=<ServerName>
    • CN=InformationStore
    • CN=<StorageGroupName>
  3. 在詳細資料窗格中,於 [CN=Mailbox Store (<ServerName>)] 上按一下滑鼠右鍵,然後按一下 [內容]。
  4. 在 [屬性編輯器] 索引標籤上,按一下 [屬性] 清單中的 [msExchMessageJournalRecipient],然後按一下 [編輯]。
  5. 在 [值] 方塊中,輸入想要使用之日誌收件者信箱的辨別名稱 (DN),然後按一下 [確定]。例如,輸入 CN=Journal User,OU=ServiceAccts,DC=contoso,DC=com
  6. 按一下 [確定] 關閉 [CN=Mailbox Store (<ServerName>) 內容] 對話方塊,然後結束 ADSI 編輯器工具。

在您設定此屬性之後,所有傳送給使用者以及接收自儲存區使用者的郵件,都會將日誌記錄至指定的日誌收件者。根據啟用的日誌記錄類型,日誌收件者會接收到原始郵件或日誌報告的複本。

note附註:
因為 BCC 日誌記錄及只限郵件的日誌記錄較不常使用,所以本主題著重在信封日誌記錄。

信封日誌記錄

將 msExchOrganizationContainer 物件上的 heuristics 屬性設為 512,以啟用信封日誌記錄。

您可以手動或使用 Exejcfg 公用程式來設定此屬性。若要手動設定 heuristics 屬性,請遵循下列步驟:

  1. 啟動 [ADSI 編輯器] 工具。若要這麼做,請依序按一下 [開始] 及 [執行],輸入 adsiedit.msc,然後按一下 [確定]。
  2. 展開 [Configuration] 容器底下的下列路徑:
    • CN=Configuration [<domainController>.contoso.com]
    • CN=Services
    • CN=Microsoft Exchange
    • CN=<OrganizationName>
  3. 在瀏覽窗格中,於 [CN=<OrganizationName>] 上按一下滑鼠右鍵,然後按一下 [內容]。
  4. 在 [屬性編輯器] 索引標籤上,按一下 [屬性] 清單中的 [heuristics],然後按一下 [編輯]。
  5. 在 [值] 方塊中,輸入 512,然後按一下 [確定]。
note附註:
如果您稍後想要停用信封日誌記錄,請在 [值] 方塊中輸入 0
  1. 按一下 [確定] 關閉 [CN=<OrganizationName> 內容] 對話方塊,然後結束 ADSI 編輯器工具。

若要使用 Exejcfg 工具設定 heuristics 屬性,請遵循下列步驟:

  1. 從下列位置下載 Exejcfg.exe 工具:Microsoft Exchange Server 電子郵件日誌記錄進階設定

  2. 擷取 Exejcfg.exe 工具,然後執行下列命令設定 heuristics 屬性:

    exejcfg -e
    
note附註:
若要檢視 Exejcfg 命令列選項清單,請輸入 exejcfg.exe /?

信封日誌記錄會同時產生日誌報告與所附加的電子郵件訊息。報告會包含 [收件者]、[副本] 及 [密件副本] 欄位中所指定的收件者清單。此外,報告還會包含已展開通訊群組的成員 (對組織而言為本機)。

使用 EXCH50 二進位大型物件 (BLOB),在 Exchange 2003 伺服器之間傳送日誌報告。此 BLOB 是 ESMTP 的專屬延伸。特別的是,日誌報告是透過設為 ExJournalData 的 PR_CONTENT_IDENTIFIER 屬性所傳送。

Exchange Server 2007 日誌記錄概觀

Exchange 2007 日誌記錄與舊版 Exchange 的程序稍有不同。Exchange 2007 只使用信封日誌記錄。此外,Exchange 2007 還支援下列兩種類型的信封日誌記錄:

  • 標準日誌記錄:這與在 Exchange 2003 中實作信封日誌記錄相同。
  • 高階日誌記錄:這允許日誌記錄更為精細且更具彈性。高階日誌記錄可讓系統管理員根據通訊群組成員資格,或是根據每位收件者或每位寄件者來執行日誌記錄。

不論使用何種日誌記錄類型,Exchange 2007 都會建立相同的日誌報告,並使用在 Hub Transport Server 上執行的日誌代理程式開始日誌記錄。如需相關資訊,請參閱 White Paper: Exchange 2007 Transport Journaling白皮書。

Exchange 2003 與 Exchange 2007 中之日誌記錄之間的主要差異,在於日誌報告的建立位置。

在 Exchange 2003 中,是在主控日誌收件者信箱之伺服器的儲存區中建立日誌報告。雖然日誌報告的初始設定及中繼資料,是在傳送伺服器上建立,但是在它未到達日誌收件者郵件資料庫之前,都不會形成實際日誌報告。這是不應該在 Exchange 2003 中直接將日誌記錄至連絡人的主要原因。而是應該將日誌報告傳送至 Exchange 信箱,然後設定伺服器端 Outlook 規則,將日誌報告轉寄給連絡人。

在 Exchange 2007 中,儲存區驅動程式會與內容轉換功能一起移至 Hub Transport server role。因此,會在傳輸元件中完整建立日誌報告。而報告不需要其他轉換。這可讓系統管理員直接將日誌記錄至連絡人。

與舊版 Exchange 不同,Exchange 2007 不會使用 EXCH50 BLOB 來傳播日誌資訊。而是 Exchange 2007 使用 X-Header 資訊傳播日誌資訊。特別的是,Exchange 2007 使用 "X-Microsoft-Exchange-ProcessedByJournaling" 標頭表示日誌代理程式已處理郵件。除非收件者清單變更,否則不需要重新對郵件進行日誌記錄。這有助於避免日誌記錄項目重複。此外,Exchange 2007 還會新增 "X-MS-Exchange-Organization-Journal-Report" 標頭,將郵件識別為日誌報告。此標頭防止對日誌報告進行日誌記錄。

在 Exchange 2007 中,所有日誌記錄都是由日誌代理程式在 Hub Transport Server 上進行處理。日誌代理程式是在傳輸管線的 OnSubmitted 及 OnRouted 事件期間觸發。此行為有助於保證郵件逼真度。例如,如果另一個代理程式修改收件者清單或導致展開通訊群組清單,或是已設定替代收件者,便會在日誌報告中擷取變更。

Exchange 2007 SP1

Exchange 2007 SP1 包括已日誌記錄之郵件的新旗標。這是 MustDeliver 旗標。它在 X-Header 中顯示如下。

X-MS-Exchange-Organization-Transport-Properties:MustDeliver=True;

此旗標指出 Exchange 不得產生日誌報告的未傳遞回報 (NDR)。如果日誌收件者信箱無法使用,或某個其他問題導致無法傳遞日誌報告,則在 Exchange 可以傳遞郵件或系統管理員手動移除郵件之前,日誌郵件都會以重試狀態保留在提交佇列中。

影響混合式 Exchange 2003 與 Exchange 2007 日誌記錄的已知問題

下列各節說明可能會在 Exchange 2007 或 Exchange 2003 中發生的日誌記錄問題。

缺少日誌報告

Exchange 2003 會在與日誌收件者信箱相同的儲存區中建立完整日誌報告。不過,Exchange 2007 會在傳輸元件中建立完整格式的日誌報告。在執行 Hub Transport role 的伺服器上觸發日誌代理程式時,會建立這份報告。

因為有這些差異,所以如果日誌信箱已放在 Exchange 2007 伺服器上,則下列種類的郵件不會包含日誌報告:

  • 源自 Exchange 2003 伺服器的郵件
  • 讓 Exchange 2003 伺服器做為從網際網路到組織之第一個進入點的郵件。

在這些情況下,日誌信箱只會包含沒有日誌報告的原始郵件複本,而且會缺少下列資訊:

  • 密件副本收件者
  • 展開的通訊群組成員資格
  • 標頭資料

因此,建議您在混合模式組織的 Exchange 2003 伺服器上尋找日誌信箱。

日誌報告在郵件源自 Exchange 2007 時重複

Exchange 2007 使用 X-Microsoft-Exchange-ProcessedByJournaling 組織 X-Header,指出傳輸中的日誌報告。Exchange 2007 會執行下列動作以提供與 Exchange 2003 的交互操作性:Exchange 2007 Hub Transport Server 決定下一個躍點是 Exchange 2003 伺服器時,Exchange 2007 會將 X-Header 升級至 Exchange 2003 伺服器可以解譯的 EXCH50 BLOB。

請考慮在日誌郵件於到達 Exchange 2003 日誌信箱之前通過兩部以上的 Hub Transport Server 時,可能會發生下列情況。

  • Hub Transport Server A 決定下一個躍點是 Exchange 2007 Hub Transport Server 時,Server A 不會建立日誌郵件的 EXCH50 BLOB。
  • 郵件到達 Hub Transport Server B 時,Server B 可辨識 X-Microsoft-Exchange-ProcessedByJournaling X-Header。因為尚未變更收件者清單,所以未觸發日誌代理程式,而且郵件會傳遞至 Exchange 2003 伺服器。
  • 因為 Exchange 2003 無法辨識 X-Microsoft-Exchange-ProcessedByJournaling X-Header,所以 Exchange 2003 會將電子郵件訊息處理為需要日誌記錄的郵件。

在此情況下,會建立重複的日誌報告。

若要解決此問題,您可以在信箱伺服器上設定 MailboxServersSubmissionOverrideList 屬性。若要這樣做,請將屬性設定成指向位於路由群組連接器的 Exchange 2007 Bridgehead 伺服器,以橋接至組織的 Exchange 2003 部分。

Caution請注意:
這項變更會建立特定信箱伺服器的單一失敗點。原因是如果原始伺服器變成無法使用,則信箱伺服器不會容錯移轉至另一部 Hub Transport Server。而且,此因應措施只適用於路由群組連接器存在於與 Exchange 2003 信箱伺服器相同的 Active Directory 網站時。因此,建議您不要使用此因應措施。而是建議您設定封存解決方案以處理重複的日誌報告。

Exchange 2003 日誌報告保留於提交佇列中 (已在更新彙總套件 7 中修正)

記錄 Exchange 2003 郵件的日誌時,P2 標頭會與郵件的原始寄件者相同。此行為在 Exchange 2007 中已變更。在 Exchange 2007 中,日誌報告的 P2 標頭會設為「Microsoft Exchange 代表 (原始寄件者)」。此外,Microsoft Exchange 會視為權限寄件者。此狀態可讓它略過大小限制及連接器限制。不過,因為 Exchange 2003 日誌報告源自原始郵件寄件者,所以這類報告享有的權限與 Exchange 2007 日誌報告所享有的權限不同。

將日誌郵件從 Exchange 2003 傳送至 Exchange 2007 時,郵件會進行從摘要傳輸中立封裝格式 (S-TNEF) 到 TNEF 格式的內容轉換。TNEF 是 Base64 編碼。它所建立的郵件會比原始郵件多百分之 33。此行為是針對日誌郵件,而不是針對原始郵件。

如果新編碼的日誌郵件超出組織郵件大小限制,便會發生下列行為:

  • 郵件會到達 Exchange 2007 伺服器,而且會立即放入佇列中以進行傳遞。
  • 郵件超出組織郵件大小限制,因此不會進行傳遞。
  • 郵件是日誌郵件,因此不會產生 NDR。
  • 電子郵件訊息在系統管理員手動移除之前,都會保留在提交佇列中。
    note附註:
    此問題已在 Exchange 2007 更新彙總套件 7 中修正。

Exchange 2007 日誌報告的原始郵件中缺少標頭

如果郵件源自 Exchange 2007,並將日誌記錄至 Exchange 2003 信箱,則附加至日誌郵件的原始郵件可能會缺少其 P2 標頭資訊。

因為標頭存在於日誌報告電子郵件訊息中,所以此問題可能不重要。此外,當您使用 IMAP 或 POP3 存取日誌記錄的郵件時,可以看到 MIME 標頭。

Microsoft Exchange 寄件者鎖定

下列 Exchange 2007 日誌記錄白皮書建議您限制日誌信箱,只接受來自權限 Microsoft Exchange 寄件者的郵件:

White Paper: Exchange 2007 Transport Journaling

如果您在混合式 Exchange 2003 與 Exchange 2007 組織中使用此指導,則 Exchange 2003 日誌報告還是會在卡在提交佇列中。此行為的發生原因,是 Exchange 2003 將日誌報告的 P2 標頭設為與原始寄件者的 P2 標頭相同。

一般 Exchange 日誌記錄考量

下列問題適用於純 Exchange 2007 環境以及混合式 Exchange 2003 與 Exchange 2007 日誌記錄環境。

設定 JournalingReportNDRTo 未作用 (已在更新彙總套件 8 中修正)

可能是從 MSExchangeTransport 元件記錄事件識別碼 9213。此事件包括下列描述。

無法將內部郵件識別碼為 <#######> 的非可過期郵件分類。此郵件可能是日誌報告或其他系統郵件。在採取系統管理動作來解決錯誤之前,該郵件會一直留在佇列中。其他郵件也可能會發生此錯誤。若要進一步診斷錯誤,請使用佇列檢視器或郵件流程疑難排解員。

此行為的發生原因是 Exchange 2007 SP1 會將 MUSTDELIVER 屬性新增至日誌郵件。

當您使用 Get-TransportConfig 指令程式檢視傳輸設定物件時,會設定 JournalingReportNDRTo 屬性 (如下列範例所示)。

Get-TransportConfig

ClearCategories :True

GenerateCopyOfDSNFor : {5.4.8, 5.4.6, 5.4.4, 5.2.4, 5.2.0, 5.1.4}

InternalSMTPServers : {}

JournalingReportNdrTo :Alt.Journalmbx@contoso.local

透過有效的電子郵件地址填入 JournalingReportNdrTo 屬性時,Exchange 會將該地址新增至日誌郵件的傳回路徑。這樣可讓 Exchange 在原始日誌信箱無法使用時,同時傳送 NDR 與已附加至 SMTP 位址的日誌報告。在 Exchange 2007 SP1 更新彙總套件 8 之前的 Exchange 版本中,此功能無法作用。在這些舊版的 Exchange 中,郵件會保留在提交佇列中。若要解決此問題,請安裝 Exchange 2007 的最新更新彙總套件。

原始郵件未附加至日誌報告

已達 Exchange 2003 日誌伺服器的匿名具名屬性限制時,日誌報告未附加原始郵件。在此情況下,可以在 Outlook 中看到迴紋針圖示。不過,沒有附加的郵件。

若要解決此問題,您可以提高具名屬性配額限制。如果您達到具名屬性的新限制上限,則必須建立新的資料庫,然後將日誌信箱移至新的資料庫。如需如何提高具名屬性限制的相關資訊,請參閱如何設定 Exchange 2007 資料庫的具名內容和複本識別碼配額

若要減少發生具名屬性消耗問題的可能性,請安裝 Exchange 2007 的最新 Service Pack 或更新彙總套件。

內容轉換問題

Exchange 2007 日誌記錄可以直接將日誌記錄至連絡人。不過,此功能可能會產生內容轉換所造成的問題。如果郵件會讓 S-TNEF 到純文字或 HTML 的內容轉換失效,則日誌報告也會保留在提交佇列中。

若要解決此問題,可以設定 TransportConfig 物件的 JournalingReportNDRTo 屬性。或是,如果封存產品處理 TNEF,可以強制連絡人使用 MAPI RTF 格式 (將 mAPIRecipient 屬性設為 True) 略過內容轉換。

將日誌報告複本轉寄給外部 SMTP 位址

您可以將日誌報告複本轉寄給外部 SMTP 位址。若要這樣做,請遵循下列步驟:

  1. 建立 Active Directory 連絡人以代表外部 SMTP 位址。
  2. 將連絡人新增至日誌信箱。針對 Exchange 2007 信箱,檢視信箱 [內容] 對話方塊。按一下 [郵件流程設定] 索引標籤,然後按一下 [傳送選項]。
    note附註:
    如果您使用 Outlook 規則轉寄日誌郵件,或修改 Active Directory 中轉寄日誌郵件的內容,則郵件可能會保留在提交佇列中。

常見日誌記錄問題

問題:為何在下列情況接收到重複的報告: Exchange 2007 日誌記錄的使用者將電子郵件訊息傳送至已設定 Exchange 2007 擴充伺服器的通訊群組

**回答:**日誌代理程式會在 OnSubmittedOnRouted 事件時引發。郵件周遊第一部 Hub Transport Server (非擴充伺服器),便會引發日誌代理程式。這樣會建立第一個日誌郵件。如果將原始郵件轉寄至擴充伺服器以進行擴充,便會建立第二份日誌報告。此行為的發生原因,是通訊群組擴充會導致收件者清單變更。

問題:如果 Exchange 2003 Exchange 2007 日誌記錄的使用者會作為非日誌記錄的使用者來傳送 (使用 SendAs 擴充權限),則沒有日誌報告。

A **:**這是預期行為。SendAs 功能是擴充的 Active Directory 權限。它不是資訊儲存庫權限 (如 SendOnBehalfOf)。如果您是以另一位使用者的身分傳送,則是模擬另一個帳戶。從 Exchange 觀點而言,您是另一位使用者。如果另一位使用者的 homeMDB 屬性未設為日誌記錄的儲存區,或另一位使用者不屬於任何日誌規則,則不會記錄郵件的日誌。

相關資訊

如需相關資訊,請參閱下列 Exchange 2007 資源:

白皮書:Exchange 2007 Transport 日誌記錄

https://technet.microsoft.com/en-us/library/bb738122.aspx

Exchange 2007 中其他功能強大的日誌記錄

https://technet.microsoft.com/en-us/magazine/2006.12.journaling.aspx

Exchange 2007 中的日誌記錄概觀

https://msExchangeteam.com/archive/2007/06/22/444296.aspx

了解 Exchange 2003 與 Exchange 2010 混合環境中的日誌記錄

https://technet.microsoft.com/en-us/library/aa997918.aspx

若要確保您目前閱讀的是最新資訊,並尋找其他的 Exchange Server 2007 說明文件,請造訪 Exchange Server 技術資源中心.