在进行Exchange邮件投递分析时,我们经常会使用Get-MessageTrackingLog查看邮件传输的过程,以此来分析邮件接收和发送情况。我们需要对日志中的字段代表的含义需要了解,这样才能看懂日志。
邮件跟踪日志详细记录了邮件流经由邮箱服务器上的传输管道和边缘传输服务器进行传输产生的所有邮件活动。您可以使用邮件跟踪进行邮件取证、邮件流分析、报告和故障排除。
默认情况下,Exchange 使用循环日志记录根据文件大小和文件期限对邮件跟踪日志进行限制(默认情况下日志能够保存90天),以帮助控制该日志文件所使用的硬盘空间。
邮件跟踪日志包含邮件在邮箱服务器和边缘传输服务器中移动时产生的大量数据。对于搜索邮件跟踪日志,您有几个不同的选择。
- Get-MessageTrackingLog 管理员可以使用此 Exchange 命令行管理程序 cmdlet 来搜索邮件跟踪日志,以获取有关使用大量筛选条件的邮件的信息。
- 管理员的送达报告 管理员可以使用 Exchange 管理中心 内的“送达报告”选项卡或 Exchange 命令行管理程序 中基本的 Search-MessageTrackingReport 和 Get-MessageTrackingReport cmdlet 来搜索邮件跟踪日志,以获取有关由组织中特定邮箱发送或接收的邮件的信息。
- 用户的送达报告 用户可以使用 Web 上的 Outlook 中的“送达报告”选项卡来搜索邮件跟踪日志,以获取有关由其自己邮箱发送或接收的邮件的信息。
默认情况下,邮件跟踪日志文件存放在
%ExchangeInstallPath%TransportRoles\Logs\MessageTracking
中。文件夹包含具有不同名称的日志文件,但这些文件都遵循命名约定 MSGTRKServiceyyyymmdd-nnnn.log
。不同的日志文件名称如下表所述。
文件名 | 服务器 | 说明 |
---|---|---|
MSGTRK
|
邮箱服务器和边缘服务器 |
传输服务的日志文件。 |
MSGTRKMA
|
邮箱服务器 |
在仲裁传输过程中有关批准和拒绝的日志文件。 |
MSGTRKMD
|
邮箱服务器 |
邮箱传输传递服务传递至邮箱的邮件的日志文件。 |
MSGTRKMS
|
邮箱服务器 |
邮箱传输提交服务从邮箱发送的邮件的日志文件。 |
日志文件名称中的其他占位符代表以下信息:
- yyyymmdd 为创建日志文件时的协调世界时 (UTC) 日期。yyyy = 年,mm = 月,dd = 日。
- nnnn 为每天对每个日志的实例编号,从值 1 开始。
系统向日志文件写入信息,直至文件大小达到其最大值。然后打开具有递增实例编号的新日志文件(第一个日志文件是 -1,下一个是 -2,依此类推)。当满足以下两个条件之一时,循环日志记录将删除最旧的服务日志文件:
- 日志文件达到最长期限。
- 邮件跟踪日志文件夹大小达到其最大值。
重要说明: 邮件跟踪日志文件夹的最大大小按以下方法计算:将具有相同名称前缀的所有日志文件的大小相加,求其总和。在计算总文件夹大小时,不会将其他未遵循名称前缀约定的文件计算在内。重命名旧日志文件或将其他文件复制到邮件跟踪日志文件夹可能会导致文件夹超出指定的最大大小。
在邮箱服务器上,邮件跟踪日志文件夹的最大大小是指定值的三倍。虽然由这四个不同服务生成的邮件跟踪日志文件有四个不同的名称前缀,但是与另外三个日志文件前缀相比,写入仲裁传输日志 (MSGTRKMA
) 的数据量和数据频率几乎可以忽略不计。
邮件跟踪日志文件是文本文件,其中包含逗号分隔值 (CSV) 格式的数据。每个邮件跟踪日志文件的文件头都包含下列信息:
- #Software: 值是
Microsoft Exchange Server
。 - #Version: 创建邮件跟踪日志文件的 Exchange 服务器的版本号。值使用格式
15.01.nnnn.nnn
。 - #Log-Type: 值是
Message Tracking Log
。 - #Date: 创建日志文件的 UTC 日期-时间。UTC 日期-时间以 ISO 8601 日期-时间格式表示:yyyy-mm-ddThh:mm:ss.fffZ,其中 yyyy = 年,mm = 月,dd = 天,T 表示时间部分的开头,hh = 小时,mm = 分钟,ss = 秒,fff = 几分之几秒,而 Z 表示祖鲁语(另一种 UTC 表示方法)。
- #Fields: 邮件跟踪日志文件中使用的字段名(以逗号分隔)。
邮件跟踪日志将每个邮件事件存储在日志中的一行上。邮件事件信息由字段组织,这些字段由逗号分隔。通常,字段名是描述性的,足以确定其包含的信息的类型。但是,某些字段可能为空,或是字段中的信息类型可能会随邮件事件类型和记录事件的服务的变化而发生变化。下表对用于分类各邮件跟踪事件的字段进行了一般性说明。
字段名称 | 说明 |
---|---|
date-time |
邮件跟踪事件的 UTC 日期-时间。UTC 日期-时间以 ISO 8601 日期-时间格式表示:yyyy-mm-ddThh:mm:ss.fffZ,其中 yyyy = 年,mm = 月,dd = 天,T 表示时间部分的开头,hh = 小时,mm = 分钟,ss = 秒,fff = 几分之几秒,而 Z 表示祖鲁语(另一种 UTC 表示方法)。 |
client-ip |
提交邮件的消息服务器或消息客户端的 IPv4 或 IPv6 地址。 |
client-hostname |
提交邮件的消息服务器或消息客户端的主机名或 FQDN。 |
server-ip |
源或目标服务器的 IPv4 或 IPv6 地址。 |
server-hostname |
目标服务器的主机名或 FQDN。 |
source-context |
与 source 字段相关联的额外信息。例如:
|
connector-id |
发送连接器的名称或接受邮件的接收连接器的名称。例如,ServerName\ConnectorName 或 ConnectorName。 |
source |
负责事件的 Exchange 传输组件。 |
event-id |
邮件事件类型。 |
internal-message-id |
由当前正在处理邮件的 Exchange 服务器所分配的邮件标识符。 在涉及邮件传输的每个 Exchange 服务器的邮件跟踪日志中,邮件的 internal-message-id 是各不相同的。示例值为 |
message-id |
邮件头中 Message-Id: 头字段的值。如果 Message-Id: 头字段不存在或为空,则 Exchange 为其分配一个任意值。该值在邮件生存期内是常量。对于在 Exchange 中创建的邮件,该值的格式为 <GUID@ServerFQDN> ,包括尖括号 (< > )。例如,<[email protected]> 。其他邮件系统可能使用不同的语法或值。
|
network-message-id |
唯一的邮件 ID 值,因拆分或通讯组扩展而创建,且在各邮件副本中均保持有效。示例值为 1341ac7b13fb42ab4d4408cf7f55890f 。
|
recipient-address |
邮件收件人的电子邮件地址。多个电子邮件地址通过分号字符 (;) 分隔。 |
recipient-status |
各收件人的收件人状态由分号字符 (;) 分隔。收件人状态值的显示顺序与 recipient-address 字段中的值相同。示例状态值包括:
|
total-bytes |
以字节为单位的邮件总大小,包括所有附件。 |
recipient-count |
邮件中的收件人总数。 |
related-recipient-address |
该字段与 EXPAND、REDIRECT 和 RESOLVE 事件一起使用来显示与邮件相关联的其他收件人电子邮件地址。 |
reference |
该字段包含特定类型事件的其他信息。例如:
对于其他类型的事件,此字段通常为空。 |
message-subject |
在 Subject: 头字段中找到的邮件主题。邮件主题的跟踪由 Set-TransportService cmdlet 中的 MessageTrackingLogSubjectLoggingEnabled 参数进行控制。默认情况下,启用邮件主题跟踪。 |
sender-address |
Sender: 头字段中指定的电子邮件地址,如果 Sender: 字段不存在,则为 From: 头字段中指定的电子邮件地址。 |
return-path |
由发送邮件的 MAIL FROM 命令指定的返回电子邮件地址。尽管此字段从不为空,但它可以有表示为 <> 的空发件人地址值。
|
message-info |
有关该邮件的其他信息。例如:
|
directionality |
邮件的方向。示例值包括 Incoming 、Undefined 和 Originating 。
|
tenant-id |
该字段不可用于本地 Exchange 组织。 |
original-client-ip |
原始客户端的 IPv4 或 IPv6 地址。 |
original-server-ip |
原始服务器的 IPv4 或 IPv6 地址。 |
custom-data |
该字段包含与特定事件类型相关的数据。例如,传输规则代理使用该字段对在邮件上执行的传输规则或 DLP 策略的 GUID 进行记录。 |
transport-traffic-type |
在本地 Exchange 中,此字段为空或含有值 Email 。
|
log-id |
邮件跟踪日志中某一行的唯一标识符。该字段在本地 Exchange 组织中不重要。 |
schema-version |
在邮件跟踪日志中创建项目的 Exchange 服务器的版本号。值使用格式 15.01.nnnn.nnn 。
|
event-id 字段中的各种事件类型可用来对邮件跟踪日志中的邮件事件进行分类。一些邮件事件只出现在一种类型的邮件跟踪日志文件中,还有一些邮件事件存在于所有类型的邮件跟踪日志文件中。下表介绍了用于对各邮件事件进行分类的事件类型。
事件名称 | 说明 |
---|---|
AGENTINFO |
传输代理使用该事件记录自定义数据。 |
BADMAIL |
分拣目录或重播目录提交的邮件无法传递或返回。 |
CLIENTSUBMISSION |
邮件已从邮箱的发件箱中提交。 |
DEFER |
邮件传递延迟。 |
DELIVER |
邮件已传递至本地邮箱。 |
DSN |
生成了传递状态通知(亦称为 DSN、退回邮件、未送达报告或 NDR)。 |
DROP |
在不提供传递状态通知(亦称为 DSN、退回邮件、未送达报告或 NDR)的情况下删除了一条消息。例如:
|
DUPLICATEDELIVER |
向收件人传递重复邮件。如果收件人是多个嵌套通讯组的成员,则可能会发生复制邮件情况。信息存储将检测并删除重复邮件。 |
DUPLICATEEXPAND |
在通讯组扩展期间,检测到一个重复收件人。 |
DUPLICATEREDIRECT |
邮件的备用收件人已成为收件人。 |
EXPAND |
已扩展通讯组。 |
FAIL |
邮件传递失败。源包括 SMTP、DNS、QUEUE 和 ROUTING。 |
HADISCARD |
在主副本传递至下一跃点之后丢弃影子邮件。 |
HARECEIVE |
影子邮件由本地数据库可用性组 (DAG) 或 Active Directory 站点中的服务器接收。 |
HAREDIRECT |
创建了影子邮件。 |
HAREDIRECTFAIL |
影子邮件创建失败。详细信息存储于 source-context 字段中。 |
INITMESSAGECREATED |
邮件已发送至仲裁收件人,因此该邮件已发送至仲裁邮箱进行审批。 |
LOAD |
启动时已成功加载邮件。 |
MODERATIONEXPIRE |
仲裁收件人的仲裁人从不批准或拒绝邮件,进而导致该邮件到期。 |
MODERATORAPPROVE |
仲裁收件人的仲裁人批准了邮件,从而使该邮件传递至仲裁收件人。 |
MODERATORREJECT |
仲裁收件人的仲裁人拒绝了邮件,从而使该邮件未传递至仲裁收件人。 |
MODERATORSALLNDR |
发送至仲裁收件人的所有仲裁人的所有批准请求都不可传递,从而导致产生未送达报告(亦称为 NDR 或退回邮件)。 |
NOTIFYMAPI |
在本地服务器上的邮箱发件箱内检测到一封邮件。 |
NOTIFYSHADOW |
在本地服务器上的邮箱发件箱内检测到一封邮件,并且需要创建该邮件的影子副本。 |
POISONMESSAGE |
邮件被放入带毒邮件队列中或从带毒邮件队列中删除。 |
PROCESS |
已成功处理邮件。 |
RECEIVE |
邮件由传输服务的 SMTP 接收组件接收或由分拣或重播目录发送(源: SMTP ),或邮件已从邮箱提交至邮箱传输提交服务(源:STOREDRIVER )。
|
REDIRECT |
在 Active Directory 查找后,邮件被重定向至一个备用收件人。 |
RESOLVE |
在 Active Directory 查找后,邮件收件人被解析为一个不同的电子邮件地址。 |
RESUBMIT |
已从安全网络自动重新提交邮件。 |
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 |
事件源是分拣目录。 |
POISONMESSAGE |
事件源是病毒邮件标识符。 |
PUBLICFOLDER |
事件源是启用邮件的公用文件夹。 |
QUEUE |
事件源是队列。 |
REDUNDANCY |
事件源是卷影冗余。 |
ROUTING |
事件源是传输服务中分类程序的路由解析组件。 |
SAFETYNET |
事件源是安全网络。 |
SMTP |
邮件已由传输服务的 SMTP 发送或 SMTP 接收组件提交。 |
STOREDRIVER |
事件源是来自本地服务器上邮箱的 MAPI 提交。(表示在同一台服务器上发送和接收邮件,而不需要进行内容转换) |
在两个用户间发送的无事件邮件可在邮件跟踪日志中生成若干条目。您可以使用 Get-MessageTrackingLog cmdlet 查看结果。
在此示例中,当用户 [email protected] 将测试邮件成功发送至用户 [email protected] 时,创建了邮件跟踪日志条目。两个用户的邮箱位于同一服务器上。
EventId Source Sender Recipients MessageSubject ------- ------ ------ ---------- -------------- NOTIFYMAPI STOREDRIVER {} RECEIVE STOREDRIVER [email protected] {[email protected]} test SUBMIT STOREDRIVER [email protected] {[email protected]} test HAREDIRECT SMTP [email protected] {[email protected]} test RECEIVE SMTP [email protected] {[email protected]} test AGENTINFO AGENT [email protected] {[email protected]} test SEND SMTP [email protected] {[email protected]} test DELIVER STOREDRIVER [email protected] {[email protected]} test
时间: 2024-09-30 06:54:57