工作中~
分类:
2008-09-02 20:36:56
问题 |
log中报告450 Client host rejected: cannot find your hostname |
解决方案 |
/var/log/maillog中,一段典型的450错误邮件log日志: Jul 11 15:07:47 mail postfix/smtpd[8435]: 63B7C62157: reject_xheader: RCPT from unknown[211.158.129.127]: 450 Client host rejected: cannot find your hostname, [211.158.129.127]; from= 各部分内容意义如下: Jul 11 15:07:47 日期 mail 服务器主机名的缩写 postfix/smtpd[8435] 服务/进程[进程号] 63B7C62157 message id reject_xheader 消息类型,reject_xheader = 本来应该拒绝的,不拒绝,只是加一条邮件头 RCPT from unknown[211.158.129.127]: 消息体,smtp协议的rcpt命令阶段记录的日至,来源ip是211.158.129.127 450 Client host rejected: cannot find your hostname, [211.158.129.127];错误号 错误消息, 对211.158.129.127这个客户端ip找不到反向主机名解析 from= to= proto=ESMTP smtp协议,ESMTP代表扩展的smtp,也就是支持smtp身份认证的,这样的协议第一句话是ehlo 开头,普通的以helo开头 helo= 从日志中可以看出,报告ip反向解析找不到,并不是造成邮件没有收到的原因。如果要查看到底为什么没收到邮件,需要到日志中,查找该邮件的ID号,来判断。例如: grep 63B7C62157 /var/log/maillog 在标准的postfix上,postfix的配置文件/usr/prima/postfix/conf/main.cf中,对smtpd_recipient_restrictions定义如下: smtpd_recipient_restrictions = ... reject_unknown_hostname, ... 这表示,如果找不到hostname(即找不到ip反向解析),则拒收邮件。 而Prima的postfix系统上,postfix的配置文件/usr/prima/postfix/conf/main.cf中,对smtpd_recipient_restrictions定义如下: smtpd_recipient_restrictions = ... xheader_if_reject reject_unknown_hostname, ... 这表示,如果一封邮件是找不到反向解析的,那么系统并不拒收这封邮件,而是为邮件加上如下的一个标记: X-Reject: 450 Client host rejected: cannot find your hostname 这个标记的作用是,为webmail中反垃圾邮件策略做标识。当用户在webmail中,把垃圾邮件策略由“默认”调整为“高”时,那么凡是标有X-Reject的邮件将会被视为垃圾邮件。而标记了X-Reject: 450的邮件只是其中一种垃圾邮件。 用户对垃圾邮件可以进行分类处理:删除、放进垃圾邮件箱、放进收件箱。maildrop将依靠邮件头上的标记来处理。处理的规过程可以在/usr/prima/etc/mail/maildroprc文件中看到。 如果邮件没有收到,需要查看maillog里边是否有具体更详细的信息。可以用grep命令针对性的查找某个邮箱。 |