最近一个朋友遇到一个很有意思的问题,在生产环境中我们装好Exchange之后,肯定需要配置外部邮件的收发。按照我们对邮件系统的理解,我们必须在default 接收连接器上的权限设置,允许匿名连接,才能实现外部邮件的接收。如果我们不配置匿名权限,那么外部邮箱在往我们的邮件系统域发送邮件时就会遇到类似以下的错误:
但在没有反垃圾邮件措施的情况下,我们可以使用telnet工具,实现匿名的邮件发送,并可以任意的冒名发送:
在上图中,我们用telnet工具非常轻松的就冒名邮件系统域的Postmaster邮箱,往邮件系统域的其他用户发送了一封邮件:
解决方案:
安装Exchange自带的反垃圾邮件组件,并设置SenderFilterConfig阻止未经验证的本地域发送邮件。
要在我们的服务器上安装Exchange反垃圾邮件组件,打开Exchange managemnet shell:
Exchange 2007:cd c:\Program Files\Microsoft\Exchange Server\Scripts\
Exchange 2010:cd c:\Program Files\Microsoft\Exchange Server\V14\Scripts\
执行:
./install-AntispamAgents.ps1
然后我们需要重启Exchange传输服务,执行:
Restart-Service MSExchangeTransport
在传输服务重启完成之后,我们执行以下命令:
Set-SenderFilterConfig -InternalMailEnabled $false -BlockedDomains <Exchange邮件系统域>
其中 InternalMailEnabled $false 这个设置实际上是默认设置,但为了确保我们的策略有效并正确,所以建议再次设置;第二个参数BlockedDomains <Exchange邮件系统域>,指的是将我们本地Exchange邮件系统的域即我们的邮箱后缀域加入到阻止列表中。
设置完成后,我们再尝试通过telnet工具使用SMTP方式进行邮件发送时,会发现我们在设置MAIL FROM的时候被提示sender denied,操作被中断,无法发送仿冒邮件到我们的Exchange邮件域了。
到此我们似乎已经解决了这个问题,但这并不能根本的解决垃圾邮件的问题,所以我们还是需要其他的手段来进行反垃圾邮件,比如说使用内容过滤、发件人信誉、SCL评分以及使用FOPE、第三方的反垃圾邮件设备等。