开发同事反馈新开发的一个应用,1分钟内连续多封邮件发送失败了,导致大量邮件堵塞。
经查,报有下面的错误:
421 4.4.2 Message submission rate for this client has exceeded the configured limit |
这是因为从Exchange 2010开始,默认每分钟发送的邮件封数限制为5封,这个限制参数是:MessageRateLimit
微软官网有给出此参数的详细说明:
MessageRateLimit | MessageRateLimit 参数指定每分钟可以提交以便进行传输的邮件数量。 对于通过邮箱服务器角色(Outlook Web App、Exchange ActiveSync 或 Exchange Web 服务)提交的邮件,此设置会导致邮件延迟发送,直至达到用户配额。 具体来说,当用户以大于 MessageRateLimit 参数的速率提交邮件时,邮件会在长时间出现在"发件箱"或"草稿"文件夹中。 对于使用 SMTP 直接提交所传输邮件的 POP 或 IMAP 客户端,如果以超过 MessageRateLimit 参数的速率提交邮件,则客户端会收到暂时性错误。Exchange 会在稍后的某个时间尝试连接并发送邮件。 默认值 5封 |
解决办法:
在Exchange management shell 下执行:
1、创建一个名称为LimitMessagesSent的新策略规则,例:用户每天最大发送量为500封,每分钟最大为50封,你可以使用以下命令:
[PS] C:\Windows\system32>New-ThrottlingPolicy -Name LimitMessagesSent -RecipientRateLimit 500 -MessageRateLimit 50
执行完后,可以看到规则名称和recipientratelimit、messageratelimit两个参数的值
2、把新建的策略规则LimitMessagesSent应用到需要限制发送量的用户usera上
[PS] C:\Windows\system32>Set-Mailbox -Identity "usera" -ThrottlingPolicy LimitMessagesSent
3、修改LimitMessagesSent策略规则的每天/每分钟发送量为1000和100
[PS] C:\Windows\system32>Set-ThrottlingPolicy -Identity LimitMessagesSent -RecipientRateLimit 1000 -MessageRateLimit 100
4、查看LimitMessagesSent策略规则中的参数值
[PS] C:\Windows\system32>Get-ThrottlingPolicy "LimitMessagesSent"
Get-ThrottlingPolicy "LimitMessagesSent" | fl Name,MessageRateLimit,RecipientRateLimit
Name : LimitMessagesSent
MessageRateLimit : 100
RecipientRateLimit : 1000
5、删除策略规则LimitMessagesSent
[PS] C:\Windows\system32>Remove-ThrottlingPolicy -Identity LimitMessagesSent
当然,也可以修改全局的参数
1、在Exchange服务器上打开Exchange Shell命令管理界面
先查看下当前所有接收连接器MessageRateLimit参数的值:
[PS] C:\Windows\system32>Get-ReceiveConnector * |fl Name,MessageRateLimit Name : Default MAILBOX1 MessageRateLimit : unlimited Name : Client Proxy MAILBOX1 MessageRateLimit : 5 |
2、修改接收连接器"Client Proxy MAILBOX1"每分钟可提交的邮件数量为20(如还有其他接收连接器也为5,也都进行修改):
[PS] C:\Windows\system32>Set-ReceiveConnector -identity "Client Proxy MAILBOX1" -MessageRateLimit 20 |
3、再次查看当前所有接收连接器MessageRateLimit参数的值,显示"Client Proxy MAILBOX1"的每分钟可提交邮件数量已修改为20了:
[PS] C:\Windows\system32>Get-ReceiveConnector * |fl Name,MessageRateLimit Name : Default MAILBOX1 MessageRateLimit : unlimited Name : Client Proxy MAILBOX1 MessageRateLimit : 20 |