我们都知道Exchange中创建的内部通讯组,默认情况下只是接收内部发件人发送的邮件,如果是公网邮件系统发送给通讯组的邮件都会被拒绝。很多Exchange管理员就会想到使用命令Set-DistributionGroup test -RequireSenderAuthenticationEnabled $false,也就是关闭通讯组的发件人验证即可。的确这是一种普遍的解决方法。如果我有如下场景应该如何解决呢?
一、场景
公司A和公司B均使用的是Exchange邮件服务器,A公司的域名为a.com,B公司的域名为b.com。要求如下:
1、A公司和B公司之间的邮箱用户能够给对方的Exchange内部通讯组发送邮件。
2、A公司和B公司中Exchange创建的通讯组的必须开启发件人验证,也就是RequireSenderAuthenticationEnabled $True
3、要求对A公司和B公司中Exchange创建的通讯组尽量不要进行属性更改,因为两个公司的通讯组会随时增加和减少,如果提供的解决方案需要对通讯组进行操作那么就会增加后期的运维压力。
二、解决方案
要解决上面场景的问题,那就不能简单的通过设置通讯组的发件人验证来解决此问题。我们需要搞明白Exchange通讯组的发件人验证机制是怎么样的。通过各种测试发展通讯组的发件人验证是通过查询X-MS-Exchange-Organization-AuthAs属性值来判断的。(我已经测试了Exchange 2010和Exhange 2013两个版本,我个人认为Exchange 2016也是如此,如果有兴趣可以去测试一下)
通过测试发现Exchange通讯组的发件人验证(RequireSenderAuthenticationEnabled $true)属性值对应内部用户是不会进行阻止的,因为内部用户发送的邮件的邮件头中X-MS-Exchange-Organization-AuthAS属性为X-MS-Exchange-Organization-AuthAs: Internal ,而公网发送到Exchange的邮件的邮件头中X-MS-Exchange-Organization-AuthAS属性为:X-MS-Exchange-Organization-AuthAs: Anonymou(匿名) ,也就是说只要让 发送的邮件的邮件头中X-MS-Exchange-Organization-AuthAS变成Internal,那么Exchange的内部通讯组就不会阻止往通讯组中投递邮件。经过测试只需要在Exchange中创建一个接受连接器,接受连接器的安全性中选择“外部保护”即可。
邮件头示例代码:
内部邮件
外部邮件:
具体的操作方法如下(Exchange 2010)
1、 在Exchange上创建一个接收连接器
设置远程网络IP
设置身份验证为“外部保护”
设置权限组如下
2、 Exchange通讯组配置
Exchange 2013的接收连接器配置参考如下:
Exchange 2013通通讯组配置。
本文转自 jialt 51CTO博客,原文链接:http://blog.51cto.com/jialt/1914412