调整Exchange接收连接器延迟参数解决SMTP代发送邮件问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了调整Exchange接收连接器延迟参数解决SMTP代发送邮件问题相关的知识,希望对你有一定的参考价值。

 

       Exchange在企业应用中,经常会有各种应用程序需要调用Exchange的SMTP服务来发送各知系统通知邮,如:OA、HR、E-flow签核系统等。

       最近,碰到一个案例,用户反映某E-Flow签核系统的SMTP邮件通知功能迁移到2010后,E-Flow签核在提交和签核过程中变的很慢,有时还会发生超时,而无法完成E-Flow签核流程!

       收到用户反映后,向E-Flow系统开发人员了解到,以前用的是Exchange 2003的SMTP服务,没有发现过,此问题是改到2010后出现的,所以重点怀疑Exchange 2010 SMTP的原因!

       进一步了解到,此E-flow系统在所有提交、签核时都会生成邮件通知相关的用户。为了确保邮件通知成功,每提交一个邮件到SMTP服务器,都需要得到SMTP服务的确认,正是在提交的时候,大约需要等30秒左右,才能显示提交成功、或是签核完成!

       在查看Exchange SMTP中继相关文章时,从官网找这个文章:

       https://technet.microsoft.com/zh-cn/library/hh529935(v=exchg.141).aspx

       从exchange 2010开始,针对队列引入了“卷影冗余”功能,该功能可在整个传送过程中为邮件提供冗余。使用卷影冗余,将延迟从传输数据库删除邮件,直至传输服务器确认该邮件的所有下一跃点都已完成传递。 Exchange 2010 传输服务器从非 Exchange 2010 源接收邮件时,Exchange 会尝试通过延迟对发送服务器的确认,直到确认邮件已成功在内部传递到所有后续跃点,来实现卷影冗余。这样,如果 Exchange 2010 服务器失败,则发送邮件服务器会假设邮件从未传递到 Exchange 并将再次尝试传递。相了解更多关于“卷影冗余”的功能介绍,可参考官方文档:https://technet.microsoft.com/zh-cn/library/dd351027(v=exchg.141).aspx

       正是因为此功能:“Exchange会尝试通过延迟对发送服务器的确认”,所以E-Flow系统一直没有收到关于邮件是否完成传递的通知,一直在等待中,直到SMTP服务返回完成传递的通知后,才进行到下一步!

       使用Get-ReceiveConnector -Identity " SMTP Application relay " | format-list

查看 -MaxAcknowledgementDelay 属性,值为30秒!正好和用户反应的,点一次提交或是签核,需要等30秒左右时间!

技术分享

       即:SMTP服务收到E-Flow系统发过来的SMTP请求,需要30秒后才会回复服务器确认信息。

依官方的介绍,可以尝试降低延迟确认时间或是完全禁用!因为此连接器专门提供给应用程序来作SMTP Relay功能,所以直接禁用!

       Set-ReceiveConnector "SMTP Application relay" -MaxAcknowledgementDelay 0

技术分享

       重启SMTP服务后,用户反应问题得到解决!

       此现象在Exchange 2010/2013同样适用!

本文出自 “大向技术分享” 博客,转载请与作者联系!

以上是关于调整Exchange接收连接器延迟参数解决SMTP代发送邮件问题的主要内容,如果未能解决你的问题,请参考以下文章

调整SMTP会话连接时间解决邮件无法接收问题

exchange 2016 实施

如何在Exchange中配置SMTP连接器

exchange设置发送接收邮件大小,更改WEB.CONFIG

RabbitMQ通过DLX实现消息延迟接收

常用电子邮件协议服务POP3/IMAP/SMTP/Exchange