时间:2022-01-05 来源:系统堂 游览量: 次
新年伊始,很多企业管理员没想到微软Exchange本地邮件服务器会在2022年1月1日开始直接罢工。
出现这个问题的原因原来是类似千年bug的问题:Microsoft Exchange组件无法正常识别2022字符串。在此之前,火狐和谷歌浏览器还在测试版本号达到100时是否会出现问题。
Microsoft Office 团队的“File:Microsoft Exchange (2019-present).svg”在 CC BY-SA 4.0 下获得许可
这个问题的本质是微软FIP-FS杀毒引擎造成的。超过限制后引擎的存储变量会崩溃,导致所有消息都卡在传输队列中。
FIP-FS 杀毒引擎是微软推出的一款特殊的恶意软件扫描工具。Microsoft Exchange 调用防病毒引擎来检查版本签名。
在实际工作中,日期会存储在signed int32变量中,但是这个变量可以存储的最大值是 2147483647, 所以有一个上限。
2022年1月1日对应的值是 2201010001 比2147483647,所以整个杀毒引擎在存储数据的时候会崩溃。
崩溃发生后,所有邮件无法正常扫描,卡在传输队列中,因此所有服务器邮件进出都被卡所有者阻止。
如果管理员查看事件日志,会发现0x80004005代码引擎无法加载,还提示2201010001太长等错误描述。
针对这个问题,微软推出了一个名为Reset-ScanEngineVersion.ps1的脚本,企业管理员可以通过这个脚本工具进行更新。
当脚本运行时,微软过滤器管理和传输服务将被暂停,然后脚本将删除旧的杀毒引擎文件并下载新版本的引擎。
这个新的杀毒引擎文件解决了变量值的上限问题,因此过滤器管理和传输服务在执行后重新启动并恢复。
问题解决后,队列中的邮件会重新发送,但如果邮件积累较多,发送时间可能会更长。
另外,杀毒引擎版本号现在变成了2112330001,这其实是一个不存在的日期,不过管理员不用担心这是微软故意的。“微软完全支持最新更新的扫描引擎,”该公司概述道. “虽然我们需要更长期地处理这个序列,但扫描引擎版本并没有回滚,而是前滚到这个新序列中。扫描引擎将继续按此新顺序接收更新。“