本文记录一次 Exchange Server 2016 传输服务异常崩溃的完整排查与修复过程。服务启动时报事件 17005(IP Filtering Database 损坏),主进程 edgetransport.exe 反复闪退。以下是每一步操作的详细记录。
问题描述
服务现象
Microsoft Exchange Transport 服务无法启动,状态卡在"停止挂起"或启动后立即自动停止。

队列查看器报错

报错日志
事件 ID 1016:The worker process crashes continuously on startup: edgetransport.exe。

事件 ID 17005:IP Filtering Database: The database could not be opened because a log file is missing or corrupted.
异常原因: 提示 EsentDatabaseDirtyShutdownException,即数据库非正常关闭导致损坏。

故障原因分析
Exchange 的传输引擎依赖于几个小型 Jet 数据库(ESE 数据库)来处理邮件队列、IP 过滤和发件人筛选。如果服务器异常断电、强行重启或网络中断,这些数据库文件(.edb)极易损坏,导致主进程 edgetransport.exe 启动时因无法读取数据而闪退。
修复步骤
结束残留进程
强制终止 Exchange Edge Transport 进程及其子进程:
| |

参数说明:
/f(Force):强制结束(不管进程是否响应)/im edgetransport.exe(Image Name):指定进程名,不需要知道 PID/t(Terminate):同时终止主进程及其所有子进程,避免孤儿进程占用 25/587 端口
清理损坏的数据库
进入 Exchange 安装目录下的数据中心:C:\Exchange Server\V15\TransportRoles\data\
将 IpFilter 文件夹重命名为 IpFilter.old(IP 筛选数据库是本次故障根源)。

重启服务
| |

服务启动时会自动创建新的文件夹和数据库文件。
验证与检查
服务状态
执行 Get-Service MSExchangeTransport 确保状态为 Running。

队列查看
打开 Exchange Toolbox -> Queue Viewer,确认能够正常连接到服务器。
知识补充
在 Exchange 安装目录下,TransportRoles\data 是传输服务的"心脏地带",存放的是 ESE (Extensible Storage Engine) 数据库文件。
Queue(邮件队列数据库)
作用: 传输服务最核心的临时存储区,所有正在投递、等待投递或延迟重试的邮件都会暂存在这里。
文件:
mail.que:核心数据库,存放邮件内容及收发件人信息trn.log、*.jrs:事务日志,用于崩溃后恢复temp.edb:处理临时数据
注意: 删除此文件夹会导致所有正在发送中的邮件丢失。
IpFilter(IP 筛选数据库)
作用: 存放连接过滤代理(Connection Filtering)的 IP 黑白名单数据。
文件:
IPFilter.edb:IP 黑白名单条目.log、.chk:日志和检查点文件
场景: 本次故障正是因为此数据库损坏,导致 edgetransport.exe 启动时无法加载黑名单规则而闪退。
Filtering(内容过滤/反垃圾邮件)
作用: 存放内容过滤代理(Content Filter agent)扫描邮件正文时所需的元数据和缓存。
注意: 配置与 EdgeTransport.exe.config 密切相关。
Temp(临时工作区)
作用: 处理大型邮件附件或扫描时存放临时解压文件。
注意: 正常运行时应为空。如堆积大量文件,说明某些扫描进程崩溃后未正常清理。
文件命名规律
这几个文件夹里的文件都遵循 ESE 数据库标准:
.edb/.que:数据文件本身.log:事务日志.chk:检查点文件(标记哪些日志已写入数据库)