一、测试原因:
邮件客户的用户经常投诉收不到某某某的邮件,查了maillog记录,发现是因为Helo command rejected: Host not found 的原因被拒绝了。
错误代码:450 4.7.1 Helo command rejected: Host not found
错误原因:对方服务器在HELO命令中提供的域名不能被解析
处理方式:请检查其HELO命令提供的域名信息,且保证其符合RFC1035国际标准的规定。
给客户的解决方案有五种:
(1)停止该防垃圾过滤功能;
(2)设置白名单,对该所谓“正常”的邮件给予放行;
(3)管理员通知发件方负责IT的相关人员处理(处理方式通俗点说就是:添加正确的A记录);
(4)管理员提供错误代码、错误原因、处理方式三项信息给邮件用户,由邮件用户自行找发件方协商(因为是你发件方不按国际标准的规定乱发送垃圾邮件,是的,这种不提供正确helo信息的邮件都属于垃圾邮件的范畴!);
(5)不闻不问不管它,除非邮件用户要求提供原因。因为发件方会收到拒绝信息,发件方发不了邮件应该找他们IT部门的人检查原因,一查就知道原来是没有按国际标准的规定在HELO命令中提供正常的域名信息。
二、测试过程:
假设:
收件方域名为:example.com
发件方域名为:itkylin.com
有两条正确的A记录:mx1.itkylin.com、mx2.itkylin.com
以下为在发件方服务器telnet收件方服务器分别用mx1.itkylin.com、mx2.itkylin.com、mx3.itkylin.com为helo信息模拟测试:
(1)以mx1.itkylin.com为helo信息测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | telnet mail.example.com 25 Trying 213.2.131.13... Connected to mail.example.com. Escape character is '^]'. 220 Postfix ESMTP MAIL Service, Version: 5.0.2195.6713 ready helo mx1.itkylin.com 250 mail.example.com mail from:<[email protected]> 250 2.1.0 Ok rcpt to:<[email protected]> 250 2.1.5 Ok quit 221 2.0.0 Bye Connection closed by foreign host. |
从上面测试过程可以得出:因为域名itkylin.com有设置正确的mx1.itkylin.com这条A记录,所以在 rcpt to 之后返回的是 250 2.1.5 Ok 信息,没有被收件方服务器拒绝。
(2)以mx2.itkylin.com为helo信息测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | telnet mail.example.com 25 Trying 213.2.131.13... Connected to mail.example.com. Escape character is '^]'. 220 Postfix ESMTP MAIL Service, Version: 5.0.2195.6713 ready helo mx2.itkylin.com 250 mail.example.com mail from:<[email protected]> 250 2.1.0 Ok rcpt to:<[email protected]> 250 2.1.5 Ok quit 221 2.0.0 Bye Connection closed by foreign host. |
从上面测试过程可以得出:因为域名itkylin.com有设置正确的mx2.itkylin.com这条A记录,所以在 rcpt to 之后返回的是 250 2.1.5 Ok 信息,也没有被收件方服务器拒绝。
(3)以mx3.itkylin.com为helo信息测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | telnet mail.example.com 25 Trying 213.2.131.13... Connected to mail.example.com. Escape character is '^]'. 220 Postfix ESMTP MAIL Service, Version: 5.0.2195.6713 ready helo mx3.itkylin.com 250 mail.example.com mail from:<[email protected]> 250 2.1.0 Ok rcpt to:<[email protected]> 450 4.7.1 <mx3.itkylin.com>: Helo command rejected: Host not found quit 221 2.0.0 Bye Connection closed by foreign host. |
从上面测试过程可以得出:因为域名itkylin.com根本就没有设置mx3.itkylin.com这条A记录,所以在 rcpt to 之后返回的是 Helo command rejected: Host not found 信息,被收件方服务器拒绝了,并且在对方的服务器maillog记录中能找到以下信息:
mail postfix/smtpd[57923]: NOQUEUE: reject: RCPT from unknown[13.25.2.22]: 450 4.7.1
三、测试结论:
收件方Postfix邮件服务器开启参数:reject_unknown_hostname
则发件方服务器在发送helo信息时,发送的主机名必须设置有正确的A记录,否则就会被拒绝,提示:Helo command rejected: Host not found