Postfix邮件服务器reject_unknown_hostname参数的测试

一、测试原因:

邮件客户的用户经常投诉收不到某某某的邮件,查了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 : Helo command rejected: Host not found; from= to= proto=SMTP helo=

三、测试结论:
收件方Postfix邮件服务器开启参数:reject_unknown_hostname
则发件方服务器在发送helo信息时,发送的主机名必须设置有正确的A记录,否则就会被拒绝,提示:Helo command rejected: Host not found