Exchange pipeline tracing(传输管道跟踪

Exchange邮件发送和接收均是通过Exchange传输服务器进行的,在传输服务中进行一系列的动作。在日常管理中,如果Exchange上启用了很多的传输代理(Transport Agent),在排错时如果要查找某一封邮件被阻止或删除的原因相当麻烦,通常的做法是查看Exchange上的传输代理日志,在代理日志中可以发现一些痕迹,但是有时候也无法找到具体原因。之前我在处理一个问题,要求找到接收部分域名的邮件为什么被标记为垃圾邮件,我通过查看传输代理日志没有找到原因,因为在传输代理日志中现在通过各个代理的日志均记录为代理策略是False的,最好没有办法我就逐一禁用Transport Agent,最好找到了对应的传输代理。

好了,现在告诉一个更快跟踪邮件传输过程的办法,在Exchange中邮件在传递出去之前需要经过传递代理进行过滤或筛选。Exchange提供了一个功能pipeline tracing,此功能可以用于跟踪特定发件人发送的邮件在传输服务上的邮件流走向过程。启用pipeline tracing后会将传输服务中各个阶段的邮件生成一个快照到特定文件,以供管理员分析。(具体可以参考:https://technet.microsoft.com/zh-cn/library/bb125018(v=exchg.150).aspx

以下列表介绍了所创建的邮件快照文件:

  • Original.eml 此类文件包含电子邮件在遇到任何 SMTP 事件或传输代理之前的原始、未经修改的内容。

  • Routingnnnn.eml 此类文件包含电子邮件在传输服务的分类部分期间遇到传输 SMTP 事件和这些事件上注册的传输代理时的内容。占位符 nnnn 代表以 0001 开头的整数值。该值针对每个 SMTP 事件和这些事件上注册的传输代理按照这些事件和代理对邮件起作用的顺序递增。邮箱传输传递服务不生成这些 Routing 快照文件。

  • SmtpReceivennnn.eml 此类文件包含电子邮件在传输服务或邮箱传输传递服务的 SMTP 接收部分期间遇到 OnEndofDataOnEndOfHeaders SMTP 事件和这些事件上注册的传输代理时的内容。占位符 nnnn 代表以 0001 开头的整数值。该值针对每个 SMTP 事件和这些事件上注册的传输代理按照这些事件和代理对邮件起作用的顺序递增。

在进行启用pipeline tracing功能之前,我们需要首先明白该功能适用于哪些场景;不能没事儿就随便启用,因为启用该功能后会消耗服务器的资源,并且会占用一定的磁盘空间。如果有如下情况可以考虑暂时启用pipeline tracing,抓取到数据后应立即关闭。

1)、在对邮件进行排除时,需要分析是哪个传输代理对邮件进行了操作。

2)、在启用或创建了自定义的传输代理,需要验证传输代理是否按照设想生效时。

下面介绍如果启用pipeline tracing功能。

一、启用pipeline tracing功能

1、使用如下命令查看当前Exchange服务器当前pipeline tracing的配置情况,以便记录服务器的默认配置,方便以后恢复默认配置。

Get-TransportService | fl name,*pip*

Get-MailboxTransportService | fl name,*pip*

image

2、启用传输服务的PipelineTracing功能,并且同时制定日志目录和特定发件人。

Get-TransportService | Set-TransportService -PipelineTracingEnabled $true -PipelineTracingPath"c:\dump\" �CPipelineTracingSenderAddress test@contoso.com

image

3、启用邮箱传输服务的PipelineTracing功能,并且同时制定日志目录和特定发件人。

Get-MailboxTransportService | Set-MailboxTransportService -PipelineTracingEnabled $true -PipelineTracingPath "c:\dump" -PipelineTracingSenderAddress test@contoso.com

image

4、PipelineTracing功能启用后无需重启传输服务即可生效。接下来进行测试。在对应目录下已经生产了快照数据。

image

5、查看对应文件中的数据。

image

6、能够看到收集到的快照数据。

image

image

image

image

image

二、禁用pipeline tracing功能

Get-TransportService | Set-TransportService -PipelineTracingEnabled $false

Get-MailboxTransportService | Set-MailboxTransportService -PipelineTracingEnabled $false

image

如下命令将pipeline tracing恢复为默认设置。

Get-TransportService | Set-TransportService -PipelineTracingEnabled $false -PipelineTracingPath "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Hub\PipelineTracing" �CPipelineTracingSenderAddress $null

Get-MailboxTransportService | Set-MailboxTransportService -PipelineTracingEnabled $false -PipelineTracingPath "C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\Mailbox\PipelineTracing" -PipelineTracingSenderAddress $null

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...