为防止垃圾邮件制造者利用邮件服务器进行垃圾邮件的转发,目前的邮件服务器都启用了邮件用户发邮件时的身份验证功能,即发件用户必须在邮件客户端的“服务器要求身份验证”处输入发件人用户名和密码,以便发件时邮件服务器对发件人进行身份验证。
某公司的邮件服务器在Cisco的PIX 520防火墙后面,用的是私有IP(假设为192.168.0.1),通过在防火墙上做NAT映射到公网,在公网用的是公网IP(假设为202.96.56.68),在内网收发邮件都正常,但是在公网不能发信,报错如下:
SMTP, 服务器响应: '553 You are not authorized to send mail as <mail from:xmgl@aaa.com.cn>, authentication is required', 端口: 25, 安全(SSL): 否, 服务器错误: 553, 错误号: 0x800CCC78
为什么内网能发而公网不行呢?从报错信息可以看出是邮件服务器认为发件人的邮件未通过身份验证。我们知道通常邮件服务器在发邮件时用的是SMTP协议。SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它由一组用于从源地址到目的地址传送邮件的规则组成,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过在邮件客户端SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了。
为了更有效地抑制垃圾邮件的泛滥,许多E-Mail服务商和ISP升级了他们的SMTP系统,即使用ESMTP的方式来做E-mail发送服务。ESMTP,英文全称是“Extended SMTP”,顾名思义,就是对标准SMTP协议进行的扩展。而“发件验证”功能就是承载于ESMTP上的。
出问题的公司的邮件发送系统同样也采用了ESMTP,ESMTP和SMTP一样都使用25端口。为了进一步验证故障原因,我们分别从内网和防火墙外面的公网telnet邮件服务器的25端口信息如下:
在内网telnet的结果
telnet 192.168.0.1 25 220 aaa.com.cn ESMTP Postfix |
在防火墙外面telnet的结果
telnet 202.96.56.68 25 220 *************** |
除了*****就什么都没有显示
从结果可以看出在公网发信用户的身份认证信息不能穿透防火墙。于是我们检查防火墙上的关于邮件系统的配置信息,信息如下:
fixup protocol smtp 25 conduit permit tcp host 202.96.56.68 eq pop3 any conduit permit tcp host 202.96.56.68 eq smtp any
|