搜索邮件跟踪日志

 

适用于: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上一次修改主题: 2015-03-09

本主题介绍如何使用 Exchange 管理控制台或 Exchange 命令行管理程序搜索邮件跟踪日志。

邮件跟踪日志是一个详细日志,其中记录了安装了集线器传输服务器角色、邮箱服务器角色或边缘传输服务器角色的 Microsoft Exchange Server 2010 计算机接收和发送的所有邮件的传输活动。安装了客户端访问服务器角色或统一消息服务器角色的 Exchange 服务器没有邮件跟踪日志。可以使用邮件跟踪日志进行邮件取证、邮件流分析、报告和故障排除。

可以使用 Exchange 命令行管理程序 中的 Get-MessageTrackingLog cmdlet 以及 Exchange 管理控制台工具箱中的邮件跟踪工具,根据特定的搜索条件来搜索邮件跟踪日志中的条目。

开始之前

您必须先获得权限,然后才能执行此过程。若要查看所需的权限,请参阅“传输权限”主题中的“邮件跟踪”条目。

有关管理 Exchange 2010 所需的权限、角色委派以及权利的详细信息,请参阅 了解权限

如果在集线器传输服务器或邮箱服务器上搜索邮件跟踪日志,则将无法在边缘传输服务器上访问邮件跟踪日志。如果要搜索边缘传输服务器上的邮件跟踪日志,必须直接从边缘传输服务器上运行 Get-MessageTrackingLog cmdlet 或邮件跟踪工具。

邮件跟踪日志的搜索取决于 Microsoft Exchange 传输日志搜索服务。如果禁用或停止此服务,则将无法搜索邮件跟踪日志文件。但是,停止此服务不会影响 Exchange 的其他功能。

重要重要说明:
不能从运行 Microsoft Exchange 的服务器复制邮件跟踪日志,再使用 Get-MessageTrackingLog cmdlet 或邮件跟踪工具搜索复制的日志。而且,如果保存现有的邮件跟踪日志,一旦邮件跟踪日志文件的日期时间戳发生更改,便会破坏 Exchange 用于搜索邮件跟踪日志的查询逻辑。

邮件跟踪日志搜索条件

尽管每个邮件跟踪日志条目都可以使用许多数据字段,但并不是每个字段都可用作搜索筛选器。此外,Exchange 命令行管理程序 可以更加灵活地进行搜索,因为有许多搜索筛选器可与 Get-MessageTrackingLog cmdlet 一起使用。

Get-MessageTrackingLog Cmdlet 的常用搜索筛选器

以下列表中描述的搜索筛选器可在 Exchange 命令行管理程序 中与 Get-MessageTrackingLog cmdlet 一起使用:

注释注意:
不支持使用包含部分值或多个值的搜索筛选器,除非另行说明。
  • Recipients   此搜索筛选器使用 recipient-address 字段。必须输入收件人的完整电子邮件地址。通过使用逗号作为分隔符,可以指定多个收件人值。单个邮件中包括的多个单独收件人可通过使用单个邮件跟踪日志条目记录。未展开的通讯组收件人则通过使用通讯组的 SMTP 电子邮件地址记录。

  • Sender   此搜索筛选器使用 sender 字段。必须输入发件人的完整电子邮件地址。sender 字段包含 Sender: 头字段中指定的发件人电子邮件地址;如果 From: 不存在,则包含 Sender: 头字段中指定的发件人电子邮件地址。

  • Server   此搜索筛选器指定包含要搜索的邮件跟踪日志的 Exchange 服务器。可以使用下列任意值描述该服务器:

    • 名称

    • 完全限定的域名 (FQDN)

    • 可分辨名称 (DN)

    • 旧版 Exchange DN

    • GUID

  • EventID   此搜索筛选器使用 event-id 字段。在邮件跟踪工具中,从下拉列表中选择 EventID 的值。在 Get-MessageTrackingLog cmdlet 中,以文本形式输入 EventID 的值。但是,该值必须与可能的 EventID 值之一完全匹配。EventID 是分配给每个邮件跟踪日志条目的事件分类。可用值如下:

    • BADMAIL

    • DEFER

    • DELIVER

    • DSN

    • EXPAND

    • FAIL

    • POISONMESSAGE

    • RECEIVE

    • REDIRECT

    • RESOLVE

    • SEND

    • SUBMIT

    • TRANSFER

  • MessageID   此搜索筛选器使用 message-id 字段。MessageID 是 Message-ID: 头字段的值。如果 Message-ID: 头字段不存在或为空,则分配任意值。此值在邮件生存期内保持不变。

  • InternalMessageID   此搜索筛选器使用 internal-message-id 字段。InternalMessageID 是一个由当前正在处理邮件的 Exchange 服务器分配的邮件标识符整数。

  • Subject   此参数在 Get-MessageTrackingLog cmdlet 中,参数名为 MessageSubject。此搜索筛选器使用 message-subject 字段。支持部分值。它是 Subject: 头字段中指定的邮件主题。在集线器传输服务器和边缘传输服务器上,对邮件主题的跟踪由 Set-TransportServer cmdlet 中的 MessageTrackingLogSubjectLoggingEnabled 参数控制;在邮箱服务器上,则由 Set-MailboxServer cmdlet 控制。默认情况下,会启用邮件主题日志记录。通过将MessageTrackingLogSubjectLoggingEnabled 参数值设置为 $False,可以禁用邮件主题日志记录。

  • Reference   此搜索筛选器使用 reference 字段。此字段包含特定事件类型的其他信息。对于 DSN 事件,reference 字段包含引发 DSN 的邮件的 MessageID:。对于 SEND 事件,reference 字段包含任何 DSN 邮件的 MessageID:。对于 TRANSFER 事件,reference 字段包含被分叉的邮件的 MessageID:

  • Start   此搜索筛选器使用 date-time 字段来查找在指定的结束日期-时间启动的邮件跟踪条目。可以使用此筛选器本身在指定的日期-时间后检索所有邮件跟踪日志条目,也可以将其用作 End 参数的下限。

  • End   此搜索筛选器使用 date-time 字段来查找在指定的结束日期/时间(不包括此日期-时间)之前发生的邮件跟踪条目。可以使用此筛选器本身来检索在指定的日期-时间之前发生的所有邮件跟踪日志条目,也可以将其用作 Start 参数的上限。

注释注意:
邮件跟踪日志中的 date-time 字段以协调世界时 (UTC) 格式存储信息。但是,您应该使用用于执行搜索的计算机上的区域日期-时间格式输入日期-时间搜索条件。邮件跟踪日志搜索工具会自动将区域日期-时间查询转换为 UTC 格式。搜索结果将自动从 UTC 格式转换回区域日期-时间格式,以进行显示。date-time 字段记录特定邮件跟踪事件的日期-时间。邮件起始日期-时间是指邮件首次传入 Exchange 组织时的日期-时间。邮件起始日期-时间存储在所有 SEND 和 DELIVER 事件的 message-info 字段中。

Exchange 管理控制台和 Exchange 命令行管理程序中不同的搜索筛选器

在 Exchange 命令行管理程序 中,Get-MessageTrackingLog cmdlet 使用 ResultSize 参数对要显示的搜索结果数提供了更多控制。默认情况下,搜索最多显示 1000 个结果。但是,可以将最大值更改为某个特定值。此外,还可以使用 Unlimited 值显示所有结果。Exchange 管理控制台中的邮件跟踪工具没有办法自定义显示的最大搜索结果数。

使用 Exchange 命令行管理程序搜索邮件跟踪日志

下表列出了在 Exchange 命令行管理程序中使用 Get-MessageTrackingLog cmdlet 可获得的搜索筛选器。

使用 Get-MessageTrackingLog cmdlet 可获得的搜索筛选器

搜索筛选器 邮件跟踪日志中的相应字段

结束

date-time

EventId

event-id

InternalMessageId

internal-message-id

MessageId

message-id

MessageSubject

message-subject

收件人

recipient-address

引用

参考

ResultSize

无。此参数用于限制搜索显示的结果数。

Sender

sender-address

开始

date-time

Get-MessageTrackingLog cmdlet 可使用的所有参数都是可选的。如果输入 Get-MessageTrackingLog cmdlet,而不带任何参数,则会显示最后 1,000 个邮件跟踪日志条目。

使用 Exchange 命令行管理程序搜索邮件跟踪日志

  • 运行以下命令:

    Get-MessageTrackingLog <SearchFilters>
    

    例如,要针对 pat@contoso.com 发送的所有 FAIL 事件,搜索从 3/28/2011 8:00 AM 到 3/28/2011 5:00 PM 的所有条目的邮件跟踪日志,请运行以下命令:

    Get-MessageTrackingLog -ResultSize Unlimited -Start "3/28/2011 8:00AM" -End "3/28/2011 5:00PM" -EventId "Fail" -Sender "pat@contoso.com" 
    

控制在 Exchange 命令行管理程序中执行的邮件跟踪日志搜索的输出

使用 Get-MessageTrackingLog cmdlet 执行邮件跟踪日志搜索时,并不会为每个邮件跟踪事件显示所有字段。下表列出了 Get-MessageTrackingLog cmdlet 默认显示的字段。

Get-MessageTrackingLog cmdlet 默认显示的字段

搜索字段 邮件跟踪日志中的相应字段

EventId

event-id

来源

message-source

Sender

sender-address

收件人

recipient-address

MessageSubject

message-subject

根据以下准则,可以在 Exchange 命令行管理程序 命令行管理程序中使用命令输出选项来控制 Get-MessageTrackingLog cmdlet 的输出:

  • 您可以控制邮件跟踪日志搜索的输出格式。可以在列表或表中显示结果。

    重要重要说明:
    尽管表格式看上去是个不错的输出格式选择,但它不一定是最佳选择。如果表中显示的字段包含较长的值,会截断这些值以适合表列。如果试图同时显示过多的字段,也会发生截断的情况。如果使用列表格式,则始终会显示完整的字段值。若要查看更多列,可以增加 Exchange 命令行管理程序 命令行管理程序窗口的宽度,其默认值为 80 个字符。可以通过 Exchange 命令行管理程序 窗口的属性,调整 Exchange 命令行管理程序 窗口的尺寸。
  • 可以显示或隐藏邮件跟踪日志搜索返回的特定字段。支持使用通配符 (*)。

  • 可以将搜索结果发送到某个文件。

Get-MessageTrackingLog cmdlet 产生的结果所显示的字段名与用于筛选搜索结果的字段名相同。这些字段名与邮件跟踪日志中存储的实际字段名略有不同。下表并排显示了邮件跟踪日志中使用的字段名和 Get-MessageTrackingLog cmdlet 使用的字段名。

邮件跟踪日志中使用的字段名与 Get-MessageTrackingLog cmdlet 使用的字段名的比较

邮件跟踪日志中使用的字段名 用于筛选 Get-MessageTrackingLog 结果的字段名

date-time

Timestamp

client-ip

ClientIp

客户端主机名

ClientHostname

server-ip

ServerIp

server-hostname

ServerHostname

source-context

SourceContext

connector-id

ConnectorId

source

来源

event-id

EventId

internal-message-id

InternalMessageId

message-id

MessageId

recipient-address

收件人

recipient-status

RecipientStatus

total-bytes

TotalBytes

recipient-count

RecipientCount

related-recipient-address

RelatedRecipientAddress

参考

引用

message-subject

MessageSubject

sender-address

Sender

return-path

ReturnPath

message-info

MessageInfo

使用 Exchange 命令行管理程序控制邮件跟踪日志搜索的输出

  • 使用以下命令:

    Get-MessageTrackingLog <SearchFilters> | <Format-Table | Format-List> <FieldNames> <OutputFileOptions>
    

    例如,要搜索前 1,000 个 Send 事件的邮件跟踪日志、以列表格式显示出现的结果、显示以“Send”或“Receive”开头的任何字段名的值,并将结果写入到名为“C:\send search.txt”的新文件,请运行以下命令:

    Get-MessageTrackingLog -EventId "Send" | Format-List Send*,Receive* > "C:\send search.txt"
    

使用 Exchange 命令行管理程序搜索多个服务器上邮件的邮件跟踪日志

在邮件遍历 Exchange 组织的整个过程中,保持不变的邮件属性是 MessageID: 头字段的值。此值在队列查看实用程序中名为 InternetMessageId,而在邮件跟踪日志实用程序中名为 MessageId。在确定了 MessageID: 的值后,可以在 Exchange 组织内每个集线器传输服务器或邮箱服务器上的邮件跟踪日志中搜索该邮件。

使用 Exchange 命令行管理程序,在所有集线器传输服务器和邮箱服务器上搜索邮件跟踪日志条目以查找特定邮件

  • 使用以下命令:

    Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -MessageId "<messageid>" | Select-Object <commaseparatedfieldnames> | Sort-Object -Property <field>
    

    例如,若要在所有集线器传输服务器和邮箱服务器上搜索邮件跟踪日志,以查找与 MessageID:ba18339e-8151-4ff3-aeea-87ccf5fc9796@contoso.com 的邮件相关的所有条目;若要显示字段 date-timeserver-hostnameclient-hostnamesourceevent-idrecipient-address for each entry,并按 date-time 字段对结果排序,请运行以下命令:

    Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isMailboxServer -eq $true} | Get-MessageTrackingLog -MessageId "ba18339e-8151-4ff3-aeea-87ccf5fc9796@contoso.com" | Select-Object Timestamp,ServerHostname,ClientHostname,Source,EventId,Recipients | Sort-Object -Property Timestamp
    

有关语法和参数的详细信息,请参阅 get-MessageTrackingLog

有关 Exchange 命令行管理程序 中的命令输出选项的详细信息,请参阅 结合使用 PowerShell 和 Exchange 2010(Exchange 命令行管理程序)

使用 Exchange 管理控制台搜索邮件跟踪日志

使用 Exchange 管理控制台搜索邮件跟踪日志

  1. 启动 Exchange 管理控制台。

  2. 在控制台树中,单击“工具箱”。在结果窗格中,单击“邮件跟踪”。在操作窗格中,单击“打开工具”。

  3. 按照提示登录 Outlook Web App。

  4. 在“选择要管理的内容”列表中,单击“我的组织”,然后在导航窗格中单击“报告”。

  5. 通过配置以下可用选项的值,设置邮件跟踪日志搜索的搜索条件:

    • 要搜索的邮箱 单击“浏览”,然后选择相应的邮箱。

    • 搜索发送给以下收件人的邮件 如果要搜索已发送的邮件,请单击此选项,然后单击“选择用户”以选择一个或多个用户。

    • 搜索从以下发件人收到的邮件 或者,单击此选项以搜索收到的邮件,然后单击“选择一个用户”以选择特定收件人。

    • 在主题行中搜索以下词 如果要搜索包含特定主题的邮件,请输入搜索条件文本。

  6. 单击“搜索”,然后在“搜索结果”窗格中查看结果。

详细信息

有关详细信息,请参阅下列主题:

了解邮件跟踪

配置邮件跟踪

 © 2010 Microsoft Corporation。保留所有权利。