将之前处理过关于SPF比较有代表性的问题分享给大家。
环境描述如下:
公司AD域名为contoso.com,公网SMTP域名也为contoso.com。使用的邮件服务器为Exchange 2013 CU10,并使用Exchange Edge边缘服务器来实现垃圾邮件过滤。为了防止其他邮件系统仿冒域名contoso.com给其他域名发送邮件。在公网DNS解析区域contoso.com中添加了SPF记录,记录内容为: v=spf1 MX A ip4:1.1.1.1 include:spf.contoso.com ~all。
问题现象:
2016年某天,IT人员收到一封发件人为test@contoso.com的垃圾邮件,Exchange管理员查询本地组织中不存在test@contoso.com这个邮件地址,很显然这个地址test@contoso.com是仿冒地址。通过查看邮件头发现发送仿冒邮件的公网IP为2.2.2.2,这个IP不是本组织的公网IP。为什么添加了SPF和启用了Exchange Send ID后仍然能够收到仿冒邮件?(关于SPF和Send ID可以参考我的前次博客内容:
http://jialt.blog.51cto.com/4660749/1769978 )
问题分析过程:
在我之前写的博客中已经对SPF做过讲解,如果要阻止仿冒邮件可以使用SPF记录来实现,但是必须具备一定的条件。于是乎我进行了如下的检查。
1、验证域名contoso.com的SPF记录添加是否存在问题,并且通过第三方网站去模拟仿冒邮件的过程,均是正常的。
2、检查当前Exchange组织的Send ID功能是否启用,经过检查已经启用。
3、检查Exchange边缘服务器的Send ID功能是否正常工作,通过命令Test-SenderId -IPAddress 3.3.3.3 -PurportedResponsibleDomain 163.com ,返回的结果是正常。当我使用Test-SenderId -IPAddress 1.1.1.1 -PurportedResponsibleDomain contoso.com 返回的结果是找不到SPF记录。
4、于是我怀疑是Exchange边缘服务器的DNS解析问题,检查边缘服务器的DNS发现,边缘服务器使用的DNS为内部AD的IP,而内部contoso.com解析区域中没有添加SPF记录。所以会出现当边缘服务器接收到邮件后,通过DNS去查找contoso.com的SPF列表时无法找到,从而不能阻止仿冒域名contoso.com的邮件。
那么问题原因找到,我们有两种解决方法:1)、将边缘服务器的DNS更改为公网DNS。2)、在内部DNS解析区域contoso.com添加和公网一致的SPF记录。