Exchange Server 中的协议日志记录

协议日志记录可记录邮件服务器之间和传输管道中的 Exchange 服务之间作为邮件传递一部分进行的 SMTP 会话。 可以使用协议日志记录诊断邮件流问题。 可以通过协议日志记录记录的 SMTP 会话出现在以下位置:

  • 邮箱服务器上的传输服务中的发送连接器和接收连接器。

  • 边缘传输服务器上传输服务中的发送连接器和接收连接器。

  • 邮箱服务器上的前端传输服务中的接收连接器。

  • 邮箱服务器上传输服务中的隐式和不可见的组织内部发送连接器。

  • 邮箱服务器上前端传输服务中的隐式和不可见的组织内部发送连接器。

  • 邮箱服务器上邮箱传输提交服务中的隐式和不可见的组织内部发送连接器。

  • 邮箱服务器上邮箱传输传递服务中的隐式和不可见的邮箱传递接收服务器。

默认情况下,在以下连接器上启用协议日志记录:

  • 邮箱服务器上的前端传输服务中名为 Default Frontend <ServerName> 的默认接收连接器。

  • 邮箱服务器上前端传输服务中的隐式和不可见的发送连接器。

默认情况下,在所有其他连接器上禁用协议日志记录。 需要在每个连接器上启用或禁用协议日志记录。 可配置针对 Exchange 服务器上各个传输服务中的所有接收连接器或发送连接器的其他协议日志记录选项。 传输服务中的所有接收连接器使用相同的协议日志文件和协议日志选项。 这些文件和选项独立于 Exchange 服务器上同一传输服务中的发送连接器协议日志文件和协议日志选项。

默认情况下,Exchange 使用循环日志记录并基于文件大小和文件期限来限制协议日志,以帮助控制日志文件使用的硬盘空间。 若要配置协议日志记录,请参阅 配置协议日志记录

协议日志文件的结构

默认情况下,协议日志文件处于下列位置:

  • 邮箱服务器上的前端传输服务:

    • 接收连接器%ExchangeInstallPath%TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive

    • 发送连接器%ExchangeInstallPath%TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpSend

  • 邮箱服务器上的传输服务:

    • 接收连接器%ExchangeInstallPath%TransportRoles\Logs\Hub\ProtocolLog\SmtpReceive

    • 发送连接器%ExchangeInstallPath%TransportRoles\Logs\Hub\ProtocolLog\SmtpSend

  • 邮箱服务器上的邮箱传输传递服务 (接收连接器) : %ExchangeInstallPath%TransportRoles\Logs\Mailbox\ProtocolLog\SmtpReceive\Delivery

  • 邮箱服务器上的邮箱传输提交服务 (发送连接器) : %ExchangeInstallPath%TransportRoles\Logs\Mailbox\ProtocolLog\SmtpSend\Submission

    注意:邮件传递到邮箱后提交的副作用邮件的协议日志记录发生在 中 %ExchangeInstallPath%TransportRoles\Logs\Mailbox\ProtocolLog\SmtpSend\Delivery。 例如,传递到邮箱的邮件触发收件箱规则,将邮件重定向到另一个收件人。

  • 边缘传输服务器上的传输服务:

    • 接收连接器%ExchangeInstallPath%TransportRoles\Logs\Edge\ProtocolLog\SmtpReceive

    • 发送连接器%ExchangeInstallPath%TransportRoles\Logs\Edge\ProtocolLog\SmtpSend

日志文件的命名约定适用于 SENDyyyyMMddhh-nnnn.log 发送连接器和 RECVyyyyMMddhh-nnnn.log 接收连接器。 占位符代表下列信息:

  • yyyyMMddhh 是协调世界时 (UTC) 创建日志文件的日期。 yyyy = year,MM = month,dd = day,hh = hour。

  • nnnn 是每小时从值 1 开始的实例编号。

系统向日志文件写入信息,直至文件大小达到其最大值。 然后打开具有递增实例编号的新日志文件(第一个日志文件是 -1,下一个是 -2,依此类推)。 当满足以下两个条件之一时,循环日志记录将删除最旧的日志文件:

  • 日志文件达到最长期限。

  • 协议日志文件夹大小达到其最大值。

协议日志文件是文本文件,其中包含逗号分隔值文件 (CSV) 格式的数据。 每个协议日志文件的文件头都包含下列信息:

  • #Software:值为 Microsoft Exchange Server

  • #Version:创建邮件跟踪日志文件的 Exchange 服务器的版本号。 值使用格式 15.01.nnnn.nnn

  • #Log 类型:值为 SMTP Receive Protocol LogSMTP Send Protocol 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:协议日志文件中使用的逗号分隔字段名称。

协议日志中的字段

协议日志将每个 SMTP 协议事件存储在日志中的一行上。 存储在每行上的信息按这些字段组织,并且这些字段用逗号隔开。 下表介绍了协议日志中所用的字段。

字段名 说明
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 的另一种方法。
connector-id 与 SMTP 事件关联的连接器的可分辨名称 (DN)。
session-id GUID 值对于每个 SMTP 会话是唯一的,但是对于与该 SMTP 会话关联的每个事件是相同的。
sequence-number 从 0 开始并为同一个 SMTP 会话内的每个事件递增的计数器。
local-endpoint SMTP 会话的本地终结点。 这包括一个 IP 地址和格式化为 <IP> 地址的 TCP 端口号: <端口>
remote-endpoint SMTP 会话的远程终结点。 这包括一个 IP 地址和格式化为 <IP> 地址的 TCP 端口号: <端口>
事件 代表协议事件的单个字符。 有效值包含:
+:连接
-:断开
>:发送
<:收到
*:信息
data 与 SMTP 事件关联的文本信息。
context 可能与 SMTP 事件关联的其他上下文信息。

代表收发单封电子邮件的一个 SMTP 会话会生成多个 SMTP 事件。 每个事件记录在协议日志中单独的行中。 Exchange 服务器具有在任何给定时间发生的多个 SMTP 对话。 这样,将通过不同的 SMTP 转换创建混合在一起的协议日志条目。 可使用 session-idsequence-number 字段按每个 SMTP 转换对协议日志条目进行排序。