使用管道跟踪诊断传输代理问题

 

适用于: Exchange Server 2007 SP1, Exchange Server 2007

上一次修改主题: 2007-02-12

管道跟踪是 Microsoft Exchange Server 2007 中的一种诊断功能,它允许当电子邮件遇到注册在传输管道中的简单邮件传输协议 (SMTP) 事件上的传输代理时,捕获有关电子邮件的诊断信息。Exchange 在邮件快照文件中捕获有关每个传输代理对传输管道中的邮件应用的更改的详细信息。如果配置了传输规则,则 Exchange Server 还将记录每个传输规则针对这些邮件所采取的任何操作。

按组织中的服务器对管道跟踪进行配置,并且可以在安装了集线器传输服务器角色或边缘传输服务器角色的计算机上启用管道跟踪。

启用管道跟踪并使用管道跟踪日志文件的默认位置时,将会创建 C:\Program Files\Microsoft\Exchange Server\TransportRoles\Logs\PipelineTracing。该目录包含 MessageSnapshots 目录和 RulesTracking 目录。

实施管道跟踪

管道跟踪只记录从特定发件人的 SMTP 电子邮件地址发送的邮件。发件人的 SMTP 地址可以是 Exchange 组织内部或外部的邮箱。在启用管道跟踪之前,必须先为管道跟踪指定发件人 SMTP 地址。可以通过在 Set-TransportServer cmdlet 中使用 PipelineTracingSenderAddress 参数来为管道跟踪配置发件人 SMTP 地址。

在为管道跟踪配置了的发件人 SMTP 地址之后,可以按需要修改管道跟踪日志文件的位置。必须将管道跟踪日志文件放置在本地计算机上。不可以使用通用命名约定 (UNC) 文件路径或映射驱动器。

Caution警告:
管道跟踪将复制从发件人的电子邮件地址发送的电子邮件的完整内容。为了避免错误地暴露机密信息,必须在管道跟踪日志文件的位置上设置适当的安全权限。
Caution警告:
不要长时间启用管道跟踪。管道跟踪创建的详细日志文件会迅速堆积。启用管道跟踪时,要始终监视可用磁盘空间。

可以通过在 Set-TransportServer cmdlet 中使用 PipelineTracingPath 参数来配置管道跟踪日志文件的位置。有关详细信息,请参阅 Set-TransportServer

有关如何启用管道跟踪和配置管道跟踪的发件人地址的详细信息,请参阅 如何启用管道跟踪

邮件快照文件

邮件快照文件捕获传输代理对邮件进行的准确更改(如果有)。通过检查邮件快照文件的内容,可以确定传输代理是否已将更改应用于预期的传输管道中的邮件。如果您正在排除故障,则应该确定哪个传输代理有错误。然后,可以针对该代理集中进行故障排除以解决问题。问题解决后,可以再次查看邮件快照文件,以验证解决方案是否成功。

启用管道跟踪时,Exchange 将在 MessageSnapshots 目录中为每个流经传输管道的邮件创建一个目录。每个目录都是由运行 Microsoft Exchange 的计算机使用分配给该邮件的 GUID 作为目录名创建的。如果在多台 Exchange 服务器上启用了管道跟踪,则将为每台 Exchange 服务器上的邮件分配不同的 GUID。

在每个邮件目录中,Exchange 将创建多个具有 .eml 扩展名的邮件快照文件。这些邮件快照文件包含邮件在遇到每个事件和传输代理时的内容。

Exchange 将创建在下列四个事件上注册的代理的邮件快照。

  • OnEndofData

  • OnEndOfHeaders

  • OnSubmittedMessage

  • OnRoutedMessage

如果某个事件上注册了传输代理,则 Exchange 将在邮件遇到任何传输代理之前创建邮件的邮件快照。这样就提供了邮件遇到在该事件上注册的传输代理之前邮件的副本。然后,将为邮件遇到的每个传输代理创建新的邮件快照,而无论传输代理是否修改了邮件的内容。但是,如果某个事件上没有注册任何代理,则 Exchange 不会为该事件创建任何邮件快照。

例如,如果 OnEndofData 事件上注册了三个代理,但只有两个传输代理修改了邮件,则将创建四个邮件快照。第一个邮件快照在邮件遇到 OnEndofData 事件(在该事件上注册的传输代理进行任何修改之前)时将捕获该邮件。然后,将为每个传输代理创建一个邮件快照,而无论传输代理是否修改了邮件。

以下列表是可以在边缘传输服务器角色的默认安装中创建的文件的示例:

  • Original.eml 该文件包含在电子邮件遇到任何事件或传输代理之前,电子邮件原始的未经修改的内容。如果任何事件上没有配置任何传输代理,则将仅创建该文件。

  • SmtpReceive0001.eml 至 SmtpReceive0009.eml 这些文件包含当电子邮件遇到 OnEndofDataOnEndOfHeaders 事件以及在传输管道 SMTP 接收部分中的这些事件上注册的传输代理时的内容。

  • Routing0001.eml 和 Routing0002.eml 这些文件包含当电子邮件遇到传输 OnSubmittedMessageOnRoutedMessage 事件以及在传输管道分类部分中的这些事件上注册的传输代理时的内容。

可以使用文本编辑器,如记事本,打开邮件快照文件。

每个邮件快照文件以一些头开始,这些头被添加至邮件内容,并列出与邮件快照文件有关的传输代理和 SMTP 事件。这些头以 X-CreatedBy: MessageSnapshot-Begin injected headers 开始,并以 X-EndOfInjectedXHeaders: MessageSnapshot-End injected headers 结束。在每个邮件快照文件中,每个后续传输代理将替换这些头。下面是添加到由 OnEndOfHeaders 事件上的连接筛选器代理处理的电子邮件的头的示例:

X-CreatedBy: MessageSnapshot-Begin injected headers
X-MessageSnapshot-UTC-Time: 2006-07-31T23:18:55.972Z
X-MessageSnapshot-Protocol-Id: 08C87FF14CCC969C;2006-07-31T23:18:53.408Z;1
X-MessageSnapshot-Source: OnEndOfHeaders,Connection Filtering Agent
X-Sender: david@nwtraders.com
X-Receiver: chris@contoso.com
X-EndOfInjectedXHeaders: MessageSnapshot-End injected headers

在邮件快照文件头的下面是邮件的内容,包括所有原始邮件头。如果传输代理修改了邮件的内容,则更改将合并到邮件内容中。传输代理处理邮件时,每个传输代理所作的更改都将应用于邮件内容。如果某个传输代理未对邮件内容进行任何更改,则该代理创建的邮件快照将与上一传输代理创建的邮件快照相同。

阅读规则跟踪文件

规则跟踪文件捕获当每个传输规则应用于遇到集线器传输服务器上的传输规则代理或边缘传输服务器上的边缘规则代理的邮件时,每个传输规则的结果。由规则跟踪文件捕获的结果将表明某个传输规则是否对邮件执行了操作。如果该传输规则执行了操作,则规则跟踪文件将表明执行了什么操作。规则跟踪文件包含下列逗号分隔值 (CSV) 格式的字段:

  • 日期/时间 该字段以协调世界时 (UTC) 或 Zulu 时间表示运行传输规则的日期和时间。

  • 邮件 ID 该字段表示位于邮件头中的 MessageID: 字段的值。该值在邮件生存期内是常量,可以与邮件跟踪日志一起使用,以跟踪邮件通过 Exchange 组织的路径。

  • 规则名称 该字段表示对邮件运行的传输规则的名称。

  • 详细信息 该字段表示应用于邮件的传输规则操作的值。如果在单个传输规则操作上设置了多个值,则用分号 (;) 分隔这些值。如果传输规则没有应用于邮件,则将插入字符串 条件评估为假。已跳过规则。已插入

  • 操作 该字段表示应用于邮件的传输规则操作。如果传输规则没有应用于邮件,则将插入字符串 NoAction

  • 发件人地址 该字段表示邮件发件人的 SMTP 地址。

  • 收件人地址 该字段表示邮件的一个或多个收件人的 SMTP 地址。如果传输规则操作所应用到的邮件将发送给与传输规则条件匹配的多个收件人,则用分号 (;) 分隔收件人。

应用于邮件的每个传输规则操作将写入规则跟踪文件中的不同行上。例如,如果传输规则具有三个操作,则会将每个传输规则操作的结果写入规则跟踪文件中的不同行上。

如果电子邮件中包含多个收件人,但并非所有收件人均满足所有传输规则条件,则会将不满足传输规则条件的收件人分离出,并写入不同的行。

详细信息

有关 Exchange 2007 中的传输管道、传输代理和邮件跟踪日志的详细信息,请参阅下列主题: