关于邮件服务器的匿名中继的问题,即要求使用SMTP发送邮件时需要验证的问题

这个问题困扰我了我很久

环境是Exchange2010 Server,配置好一切后,能正常收发外网邮件,一切都看似很正常

可是前段时间公司开发人员测试时,需要发送邮件,使用SMTP发送邮件,发现SMTP发送邮件竟然不需要验证,我吓了一跳,这可会导致服务器被垃圾邮件中继啊

然后网上查了好多资料,都没有把此问题全面的解释清楚

下面我尝试一下全面解释吧:

出现的问题是咱们使用pop3/smtp配置邮件客户端时,如图,点击测试

竟然发现smtp发送电子邮件信息通过了,难道是不通过验证也可以发送电子邮件?

难道exchange2010默认启用了所谓的匿名发送邮件?

其实不是这样的,下面听我慢慢道来

PS:请使用自己环境的真实接收和发送服务器测试,把“aaa”替换成自己的真实地址

image

image

 

还是上图中,把电子邮件地址栏修改成test@bbb.com

再测试下,你就会发现发送电子邮件消息失败了

image

这是什么原因呢????

 

这要从这个pop3/smtp测试的机制说起了

 

pop3/smtp测试的机制是测试时,使用发送邮件服务器发送一封邮件到

电子邮件地址栏处填写的邮箱

大家会发现电子邮件地址栏处填写的邮箱后缀跟发送邮件服务器的域名后缀一致时就会测试成功,不同就会失败,呵呵,大家似乎明白了吧

 

最后说说邮件发送流程:

1. Exchange2010默认是禁用邮件匿名中继的,这跟网上查的大部分资料一致,不用再怀疑这个

2. 开启了Exchange2010的接收连接器的匿名用户权限后可以保证外网的邮件可以正常呗接收到

3. 邮件的接收和发送都是通过集线传输服务器的接收连接器来实现的

4. 接收连接器的身份验证分为两部分:通过身份验证的和匿名用户

5.一封163邮局的邮件发到了Exchange2010的接收连接器,或者是一封通过一个随意的SMTP服务器发送到Exchange2010的接收连接器,甚至是像outlook 的pop3/smtp直接使用的自己exchange2010的smtp服务器发送到自己Exchange2010的接收连接器;这一切都属于匿名用户

6.而通过web,exchange anywhere等需要输入用户名和密码的用户则是通过身份验证的用户

7.匿名用户的邮件发送到了我们的exchange服务器的接收连接器的25端口;如果该邮件的收件人在exchange的接收域内,此时接收连接器会接收该邮件,并将高邮件路由到存储服务器;如果该邮件的收件人不在exchange的接收域内,则此邮件被抛弃

8.通过身份验证的用户的邮件到达接收连接器的25端口,收件人在接收域内,邮件被路由到存储服务器,不在接受域内,接收连接器将该邮件转发到相应的邮局

 

所以我们就不要再为使用outlook配置pop3/smtp方式的客户端时,看见不用填写用户名密码就可以通过smtp发送服务器的验证而困惑了

 

区别在于,当一封邮件到达该Exchange2010服务器的接收连接器时:

匿名用户发送到内部接受域的邮件,接收连接器会接收该邮件并路由到存储服务器;

匿名用户发送到非接受域的邮件,接收连接器会丢弃该邮件;

通过身份验证的用户,发送到内部接受域的邮件,接收连接器会接收该邮件并路由到存储服务器;

通过身份验证的用户,发送到非接受域的邮件,接收连接器会转发到相应的邮局