症状:
l 客户端:ASP.NET编程调用SMTPClient。可以发送内部邮件,无法发送外部邮件。发送外部邮件时报错:邮箱不可用,服务器响应5.7.1。
l 服务器端:EXCHANGE2007,产生事件ID:1035。对接收连接器“%接收连接器名”的入站身份验证失败,出现错误LogonDenied。身份验证机制为Login。
原因:
当通过外部程序访问Exchange的接收连接器时,默认是使用匿名用户的权限组权限。默认接收连接器的匿名用户权限如下:
- Ms-Exch-SMTP-Submit
- Ms-Exch-SMTP-Accept-Any-Sender
- Ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
- Ms-Exch-Accept-Headers-Routing
需要添加权限Ms-Exch-SMTP-Accept-Any-Recipient。才可以完成匿名中继,即发送邮件至外部邮箱。
解决方法:
此示例将检索指定接收连接器的信息,并通过管道将结果传递给 Add-ADPermission cmdlet,从而向新接收连接器上的匿名连接授予中继权限。
Get-ReceiveConnector "接收连接器名" | Add-ADPermission -User "NT AUTHORITY\ANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"
注意:
“匿名中继”是严重的安全缺陷,可能会使邮件服务器转发垃圾邮件。请在接收连接器的“网络”选项卡中,配置远程服务器的IP地址,以减小能够使用此匿名中继的IP地址范围。