You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Exchange 2019入站邮件DKIM校验失败排查:如何在传输代理前捕获原始邮件

Exchange 2019入站邮件DKIM校验失败排查:如何在传输代理前捕获原始邮件

你的观察非常准确——Exchange默认的Pipeline Tracing生成的original.eml其实已经经过了接收连接器的初步标准化处理,所以并不是真正刚抵达服务器的原始邮件。要捕获完全未被Exchange或任何传输代理修改的入站邮件,你可以试试下面这两种实用方法:

方法一:通过网络抓包捕获原始SMTP数据流

这是最直接的方式,能拿到邮件刚到达服务器网络层时的完整原始内容,完全没有经过Exchange的任何处理:

  • 在你的Exchange 2019服务器上安装Wireshark(或者用Windows内置的netsh trace工具)
  • 配置抓包过滤器,只捕获SMTP端口的流量:tcp port 25
  • 触发目标域名的测试邮件,待邮件到达后,在抓包结果中找到对应的SMTP会话
  • 定位到SMTP的DATA阶段数据包,右键选择「Follow TCP Stream」,将弹出的内容保存为.eml文件(注意要去掉开头的DATA命令和结尾的.,只保留邮件头和正文部分)

用这个方法拿到的EML就是真正的原始邮件,你可以用dkimpy校验对比,就能确认是Exchange的哪个环节修改了邮件内容。

方法二:自定义传输代理(适合有开发能力的管理员)

如果需要长期捕获这类原始邮件,你可以基于Exchange Transport Agent SDK编写一个优先级最高的接收端传输代理,把它放在接收管道的最前端(早于所有内置代理),然后在代理中直接保存原始邮件的副本。不过这个方法需要一定的C#开发基础,步骤大致是:

  • 创建一个实现IReceiveAgent接口的代理类,在OnEndOfData事件中捕获并保存邮件
  • 用Exchange Management Shell注册这个代理,并设置最高优先级
  • 启动代理后,就能在指定路径下拿到未被修改的原始邮件

额外排查提示

除了捕获原始邮件,你还可以检查这些常见的Exchange修改行为,它们都可能导致DKIM签名失效:

  • 检查接收连接器的配置:运行Get-ReceiveConnector | Select-Object Name, Enabled, TransportRole, RemoteIPRanges,确认是否有连接器启用了头修改、换行符转换(Exchange默认会把LF转换为CRLF)
  • 查看是否有第三方安全工具(如本地反垃圾软件、邮件过滤网关)在Exchange之前处理了邮件,这类工具经常会添加自定义头或修改邮件内容
  • 对比抓包拿到的原始EML和Pipeline Tracing的original.eml,找出具体被修改的部分(比如新增的X-开头的头、换行符变化、正文编码调整),这样就能精准定位问题环节

备注:内容来源于stack exchange,提问作者Danny.Ando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 07:43:04