邮件跟踪
邮件跟踪日志是邮件流经邮箱服务器和边缘传输服务器上的传输管道时所有活动的详细记录。 可以使用邮件跟踪进行邮件取证、邮件流分析、报告和故障排除。
默认情况下,Exchange 使用循环日志记录根据文件大小和文件期限限制邮件跟踪日志,以帮助控制日志文件使用的硬盘空间。 若要配置邮件跟踪日志,请参阅 配置邮件跟踪。
搜索邮件跟踪日志
邮件跟踪日志在邮件在邮箱服务器或边缘传输服务器中移动时包含大量数据。 在搜索邮件跟踪日志时,可以选择:
Get-MessageTrackingLog:管理员可以使用此 Exchange 命令行管理程序 cmdlet 在邮件跟踪日志中搜索有关使用各种筛选条件的邮件的信息。 有关详细信息,请参阅 搜索邮件跟踪日志。
管理员的传递报告:管理员可以使用 Exchange 管理中心中的“传递报告”选项卡或 Exchange 命令行管理程序中的基础 搜索-MessageTrackingReport 和 Get-MessageTrackingReport cmdlet 在邮件跟踪日志中搜索有关组织中特定邮箱发送或接收的邮件的信息。 有关详细信息,请参阅 管理员的传递报告。
邮件跟踪日志文件的结构
默认情况下,消息跟踪日志文件存在于 中 %ExchangeInstallPath%TransportRoles\Logs\MessageTracking
。 文件夹包含具有不同名称的日志文件,但它们都遵循命名约定 MSGTRKServiceyyyyMMdd-nnnn.log
。 下表介绍了不同的日志文件名称。
文件名 | 服务器 | 说明 |
---|---|---|
MSGTRK |
邮箱服务器和边缘服务器 | 传输服务的日志文件。 |
MSGTRKMA |
邮箱服务器 | 在仲裁传输过程中有关批准和拒绝的日志文件。 有关详细信息,请参阅管理邮件审批。 |
MSGTRKMD |
邮箱服务器 | 邮箱传输传递服务传递至邮箱的邮件的日志文件。 |
MSGTRKMS |
邮箱服务器 | 邮箱传输提交服务从邮箱发送的邮件的日志文件。 |
日志文件名称中的其他占位符表示以下信息:
yyyyMdd 是协调世界时 (UTC) 创建日志文件的日期。 yyyy = year,MM = month,dd = day。
nnnn 是每个日志每天从值 1 开始的实例编号。
系统向日志文件写入信息,直至文件大小达到其最大值。 然后打开具有递增实例编号的新日志文件(第一个日志文件是 -1,下一个是 -2,依此类推)。 如果满足以下任一条件,循环日志记录会删除服务最早的日志文件:
日志文件达到最长期限。
邮件跟踪日志文件夹达到其最大大小。
注意:
邮件跟踪日志文件夹的最大大小计算为具有相同名称前缀的所有日志文件的总大小。 不遵循名称前缀约定的其他文件不会计入总文件夹大小计算中。 重命名旧日志文件或将其他文件复制到邮件跟踪日志文件夹中可能会导致文件夹超出其指定的最大大小。
在邮箱服务器上,邮件跟踪日志文件夹的最大大小是指定值的三倍。 尽管消息跟踪日志文件由四个不同的服务生成,并且具有四个不同的名称前缀,但与其他三个日志相比,写入到受审查传输日志的数据量和频率 (
MSGTRKMA
) 微不足道。
邮件跟踪日志文件是文本文件,其中包含逗号分隔值 (CSV) 格式的数据。 每个邮件跟踪日志文件的文件头都包含下列信息:
#Software:值为
Microsoft Exchange Server
。#Version:创建邮件跟踪日志文件的 Exchange 服务器的版本号。 值使用格式
15.01.nnnn.nnn
。#Log 类型:值为
Message Tracking Log
。#Date:创建日志文件时的 UTC 日期时间。 UTC 日期时间以 ISO 8601 日期时间格式表示: yyyy-MM-ddThh:mm:ss.fffZ, 其中 yyyy = year, MM = month, dd = day, T 指示时间分量开头, hh = 小时, mm = 分钟, ss = second, fff = 分数秒,Z 表示 Zulu,这是表示 UTC 的另一种方法。
#Fields:消息跟踪日志文件中使用的逗号分隔字段名称。
邮件跟踪日志文件中的字段
邮件跟踪日志将每个邮件事件存储在日志中的一行上。 邮件事件信息由字段组织,这些字段由逗号分隔。 通常,字段名是描述性的,足以确定其包含的信息的类型。 但是,某些字段可能为空,或者字段中的信息类型可能会根据邮件事件类型和记录事件的服务而更改。 下表对用于分类各邮件跟踪事件的字段进行了一般性说明。
字段名 | 说明 |
---|---|
date-time | 邮件跟踪事件的 UTC 日期-时间。 UTC 日期时间以 ISO 8601 日期时间格式表示: yyyy-MM-ddThh:mm:ss.fffZ, 其中 yyyy = year, MM = month, dd = day, T 指示时间分量开头, hh = 小时, mm = 分钟, ss = second, fff = 分数秒,Z 表示 Zulu,这是表示 UTC 的另一种方法。 |
client-ip | 提交邮件的消息服务器或消息客户端的 IPv4 或 IPv6 地址。 |
客户端主机名 | 提交邮件的消息服务器或消息客户端的主机名或 FQDN。 |
server-ip | 源或目标服务器的 IPv4 或 IPv6 地址。 |
server-hostname | 目标服务器的主机名或 FQDN。 |
source-context | 与 source 字段相关联的额外信息。 例如:CatContentConversion 250 2.0.0 OK;ClientSubmitTime:<UTC> |
connector-id | 接受消息的发送连接器或接收连接器的名称。 例如 ,ServerName\ ConnectorName 或 ConnectorName。 |
源 | 负责事件的 Exchange 传输组件。 本主题后面的 消息跟踪日志中的源值 部分中介绍了这些值。 |
event-id | 邮件事件类型。 本主题后面的 消息跟踪日志中的“事件类型 ”部分介绍了这些值。 |
internal-message-id | 当前正在处理邮件的 Exchange 服务器分配的邮件标识符。 邮件 的内部消息 ID 在邮件传输所涉及的每个 Exchange 服务器的邮件跟踪日志中是不同的。 示例值为 73014444033 。 |
message-id | 消息标头中的 Message-Id: 标头字段的值。 如果 Message-Id: 标头字段不存在或为空,Exchange 将分配任意值。 该值在邮件生存期内是常量。 对于在 Exchange 中创建的邮件,该值采用 格式 <GUID@ServerFQDN> ,包括尖括号 (< > ) 。 例如,<4867a3d78a50438bad95c0f6d072fca5@mailbox01.contoso.com> 。 其他邮件系统可能使用不同的语法或值。 |
network-message-id | 唯一的邮件 ID 值,因拆分或通讯组扩展而创建,且在各邮件副本中均保持有效。 示例值为 1341ac7b13fb42ab4d4408cf7f55890f 。 |
recipient-address | 邮件收件人的电子邮件地址。 多个电子邮件地址通过分号字符 (;) 分隔。 |
recipient-status | 由分号字符 (;) 分隔的每个收件人的收件人状态。 收件人状态值的显示顺序与 recipient-address 字段中的值相同。 示例状态值包括:To 、 Cc 或 Bcc 250 2.1.5 Recipient OK 550 4.4.7 QUEUE.Expired;<ErrorText> |
total-bytes | 邮件的总大小(以字节为单位),包括所有附件。 |
recipient-count | 邮件中的收件人总数。 |
related-recipient-address | 此字段与 EXPAND、 REDIRECT 和 RESOLVE 事件一起使用,以显示与邮件关联的其他收件人电子邮件地址。 |
reference | 该字段包含特定类型事件的其他信息。 例如: DSN:包含报告链接,它是关联传递状态通知 的 Message-Id 值, (也称为 DSN、退回邮件、未送达报告或 NDR) (如果在此事件之后生成 DSN)。 如果这是 DSN 消息,则 “引用 ”字段包含为其生成 DSN 的原始消息的 Message-Id 值。 EXPAND:包含相关邮件 的 related-recipient-address 值。 RECEIVE:如果邮件是由其他进程(例如日记或收件箱规则)生成的,则可能包含相关邮件的 Message-Id 值。 SEND:包含任何 DSN 消息的内部消息 ID 值。 THROTTLE:包含消息被限制的原因。 TRANSFER:包含要分叉的消息的内部 消息 Id 值。 收件箱规则生成的邮件:包含导致收件箱规则生成出站邮件的入站邮件 的内部消息 Id 值。 分叉消息:可能包含 Internal-Message-Id 值。 对于其他类型的事件,此字段通常为空白。 |
message-subject | 在 Subject: 头字段中找到的邮件主题。 邮件主题的跟踪由 Set-TransportService cmdlet 上的 MessageTrackingLogSubjectLoggingEnabled 参数控制。 默认情况下,启用邮件主题跟踪。 |
sender-address | 发件人: 标头字段中指定的电子邮件地址,如果发件人: 字段不存在,则为发件人: 标头字段。 |
return-path | 由发送邮件的 MAIL FROM 命令指定的返回电子邮件地址。 虽然此字段从不为空,但它可以将 null 发件人地址值表示为 <> 。 |
message-info | 有关该邮件的其他信息。 例如: DELIVER 和 SEND 事件的消息发起日期时间(UTC)。 起始日期-时间是邮件第一次传入 Exchange 组织的时间。 UTC 日期时间以 ISO 8601 日期时间格式表示: yyyy-MM-ddThh:mm:ss.fffZ, 其中 yyyy = year, MM = month, dd = day, T 指示时间分量开头, hh = 小时, mm = 分钟, ss = second, fff = 分数秒,Z 表示 Zulu,这是表示 UTC 的另一种方法。 身份验证错误。 例如,你可能会看到发生身份验证错误时使用的身份验证的值 11a 和类型。 |
方向性 | 邮件的方向。 示例值包括 Incoming 、 Undefined 和 Originating 。 |
tenant-id | 此字段不用于本地 Exchange 组织。 |
original-client-ip | 原始客户端的 IPv4 或 IPv6 地址。 |
original-server-ip | 原始服务器的 IPv4 或 IPv6 地址。 |
custom-data | 此字段包含与特定事件类型相关的数据。 例如,传输规则代理使用此字段来记录邮件流规则的 GUID, (也称为对邮件进行操作的传输规则) 或 DLP 策略。 有关详细信息,请参阅 查看 DLP 策略检测报告。 |
transport-traffic-type | 在本地 Exchange 中,此字段为空或值为 Email 。 |
log-id | 消息跟踪日志中 行的唯一标识符。 此字段在本地 Exchange 组织中并不重要。 |
schema-version | 在邮件跟踪日志中创建条目的 Exchange 服务器的版本号。 值使用格式 15.01.nnnn.nnn 。 |
邮件跟踪日志中的事件类型
event-id 字段中的各种事件类型可用来对邮件跟踪日志中的邮件事件进行分类。 一些邮件事件只出现在一种类型的邮件跟踪日志文件中,还有一些邮件事件存在于所有类型的邮件跟踪日志文件中。 下表介绍了用于对各邮件事件进行分类的事件类型。
事件名称 | 说明 |
---|---|
AGENTINFO | 传输代理使用该事件记录自定义数据。 |
BADMAIL | 分拣目录或重播目录提交的邮件无法传递或返回。 |
CLIENTSUBMISSION | 已从邮箱的发件箱提交邮件。 |
DEFER | 邮件传递延迟。 |
DELIVER | 邮件已传递至本地邮箱。 |
DELIVERFAIL | 代理尝试将邮件传递到邮箱中不存在的文件夹。 |
DROP | 在不提供传递状态通知(亦称为 DSN、退回邮件、未送达报告或 NDR)的情况下删除了一条消息。 例如:
|
DSN | 已生成发送状态通知 (DSN)。 |
DUPLICATEDELIVER | 向收件人传递重复邮件。 如果收件人是多个嵌套通讯组的成员,则可能会发生复制邮件情况。 信息存储将检测并删除重复邮件。 |
DUPLICATEEXPAND | 在通讯组扩展期间,检测到一个重复收件人。 |
DUPLICATEREDIRECT | 邮件的备用收件人已成为收件人。 |
EXPAND | 已扩展通讯组。 |
FAIL | 邮件传递失败。 源包括 SMTP 、 DNS 、 QUEUE 和 ROUTING 。 |
HADISCARD | 在主副本传递至下一跃点之后丢弃影子邮件。 有关详细信息,请参阅 Exchange Server 中的阴影冗余。 |
HARECEIVE | 影子邮件由本地数据库可用性组 (DAG) 或 Active Directory 站点中的服务器接收。 |
HAREDIRECT | 创建了影子邮件。 |
HAREDIRECTFAIL | 影子邮件创建失败。 详细信息存储于 source-context 字段中。 |
INITMESSAGECREATED | 邮件已发送至仲裁收件人,因此该邮件已发送至仲裁邮箱进行审批。 有关详细信息,请参阅管理邮件审批。 |
LOAD | 启动时已成功加载邮件。 |
MODERATIONEXPIRE | 仲裁收件人的仲裁人从不批准或拒绝邮件,进而导致该邮件到期。 有关仲裁收件人的更多信息,请参阅管理邮件审批。 |
MODERATORAPPROVE | 仲裁收件人的仲裁人批准了邮件,从而使该邮件传递至仲裁收件人。 |
MODERATORREJECT | 仲裁收件人的仲裁人拒绝了邮件,从而使该邮件未传递至仲裁收件人。 |
MODERATORSALLNDR | 发送给审查收件人的所有审阅人的所有审批请求都无法送达,并导致未送达报告 (也称为) 的NDR或退回邮件。 |
NOTIFYMAPI | 在本地服务器上的邮箱发件箱内检测到一封邮件。 |
NOTIFYSHADOW | 在本地服务器上的邮箱发件箱内检测到一封邮件,并且需要创建该邮件的影子副本。 |
POISONMESSAGE | 邮件被放入带毒邮件队列中或从带毒邮件队列中删除。 |
PROCESS | 已成功处理邮件。 |
PROCESSMEETINGMESSAGE | 会议邮件已由邮箱传输传递服务处理。 |
RECEIVE | 邮件已由传输服务的 SMTP 接收组件接收,或者从源 (的 Pickup 或 Replay 目录接收: SMTP ) ,或者邮件已从邮箱提交到邮箱传输提交服务 (源: STOREDRIVER ) 。 |
REDIRECT | 在 Active Directory 查找后,邮件被重定向至一个备用收件人。 |
RESOLVE | 在 Active Directory 查找后,邮件收件人被解析为一个不同的电子邮件地址。 |
RESUBMIT | 已从安全网络自动重新提交邮件。 有关详细信息,请参阅 Exchange Server 中的安全网。 |
RESUBMITDEFER | 已延迟从安全网络重新提交的邮件。 |
RESUBMITFAIL | 从安全网络重新提交的邮件失败。 |
SEND | 邮件由传输服务间的 SMTP 发送。 |
SUBMIT | 邮箱传输提交服务已成功将邮件传输至传输服务。 对于 SUBMIT 事件, source-context 属性包含下列详细信息:
|
SUBMITDEFER | 已延迟将邮件从邮箱传输提交服务传输至传输服务。 |
SUBMITFAIL | 将邮件从邮箱传输提交服务传输至传输服务的操作失败。 |
SUPPRESSED | 邮件传输被抑制。 |
THROTTLE | 邮件被限制。 |
TRANSFER | 由于内容转换、邮件收件人限制或代理原因,收件人被移动到分支的邮件。 源包括 ROUTING 或 QUEUE 。 |
邮件跟踪日志中的源值
邮件跟踪日志中 source 字段的值指示负责邮件跟踪事件的传输组件。 下表描述 source 字段的值。
源值 | 说明 |
---|---|
ADMIN | 事件源是人工干预。 例如,管理员使用队列查看器删除邮件或使用重播目录提交邮件文件。 |
AGENT | 事件源是传输代理。 |
APPROVAL | 事件源是仲裁收件人使用的审批框架。 有关详细信息,请参阅管理邮件审批。 |
BOOTLOADER | 事件源是在启动时存在于服务器上的未处理的消息。 这与 LOAD 事件类型有关。 |
DNS | 事件源是 DNS。 |
DSN | 事件源是传递状态通知 (也称为 DSN、退回邮件、未送达报告或 NDR) 。 |
GATEWAY | 事件源是外部连接器。 有关详细信息,请参阅 外部连接器。 |
MAILBOXRULE | 事件源是收件箱规则。 有关更多信息,请参阅收件箱规则。 |
MEETINGMESSAGEPROCESSOR | 事件源是会议邮件处理器,它会随会议更新而更新日历。 |
ORAR | 事件源是发信请求备用收件人 (ORAR)。 可以使用 New-ReceiveConnector 或 Set-ReceiveConnector cmdlet 上的 OrarEnabled 参数启用或禁用对接收连接器的 ORAR 支持。 |
PICKUP | 事件源是分拣目录。 有关详细信息,请参阅 Pickup Directory 和 Replay Directory。 |
POISONMESSAGE | 事件源是病毒邮件标识符。 有关有害消息和有害消息队列的详细信息,请参阅 队列中的队列和消息 |
PUBLICFOLDER | 事件源是启用邮件的公用文件夹。 |
QUEUE | 事件源是队列。 |
REDUNDANCY | 事件源是卷影冗余。 有关详细信息,请参阅 Exchange Server 中的阴影冗余。 |
解析 器 | 事件源是传输服务中分类程序的收件人解析组件。 有关详细信息,请参阅 Exchange Server 中的收件人解析。 |
ROUTING | 事件源是传输服务中分类程序的路由解析组件。 |
SAFETYNET | 事件源是安全网络。 有关详细信息,请参阅 Exchange Server 中的安全网。 |
SMTP | 邮件已由传输服务的 SMTP 发送或 SMTP 接收组件提交。 |
STOREDRIVER | 事件源是来自本地服务器上邮箱的 MAPI 提交。 |
邮件跟踪日志中的示例条目
在两个用户间发送的无事件邮件可在邮件跟踪日志中生成若干条目。 您可以使用 Get-MessageTrackingLog cmdlet 查看结果。 有关详细信息,请参阅 搜索邮件跟踪日志。
这是当用户 chris@contoso.com 成功向用户发送测试消息时创建的消息跟踪日志条目的示例 michelle@contoso.com。 两个用户的邮箱位于同一服务器上。
EventId Source Sender Recipients MessageSubject
------- ------ ------ ---------- --------------
NOTIFYMAPI STOREDRIVER {}
RECEIVE STOREDRIVER chris@contoso.com {michelle@contoso.com} test
SUBMIT STOREDRIVER chris@contoso.com {michelle@contoso.com} test
HAREDIRECT SMTP chris@contoso.com {michelle@contoso.com} test
RECEIVE SMTP chris@contoso.com {michelle@contoso.com} test
AGENTINFO AGENT chris@contoso.com {michelle@contoso.com} test
SEND SMTP chris@contoso.com {michelle@contoso.com} test
DELIVER STOREDRIVER chris@contoso.com {michelle@contoso.com} test
邮件跟踪日志的安全注意事项
邮件跟踪日志中不存储任何邮件内容。 默认情况下,电子邮件的主题行存储在邮件跟踪日志中。 可能需要禁用主题日志记录,以符合更高的安全或隐私要求。 有关如何禁用主题日志记录的说明,请参阅 配置邮件跟踪。