我的邮件服务器因垃圾邮件而被列入黑名单。我重新配置了postfix。然后我的客户收到此错误,他们无法发送电子邮件。
404 4.5.2 <PLLAMNAZIFE>: Helo command rejected: need fully-qualified hostname
在 Mail.log 中:
postfix/smtpd[9853]: NOQUEUE: reject: RCPT from unknown[xx.xx.xx.xx]:
404 4.5.2 <PLLAMNAZIFE>: Helo command rejected: need fully-qualified hostname;
from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<PLLAMNAZIFE>
在我的 main.cf 中:
# rules restrictions
smtpd_client_restrictions =
permit_sasl_authenticated
smtpd_helo_restrictions =
permit_mynetworks,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
permit
smtpd_sender_restrictions =
smtpd_recipient_restrictions =
permit_sasl_authenticated,
reject_unauth_pipelining,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_unknown_sender_domain,
reject_rhsbl_client blackhole.securitysage.com,
reject_rhsbl_sender blackhole.securitysage.com,
reject_rbl_client zen.spamhaus.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client blackholes.easynet.nl,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client proxies.blackholes.wirehub.net,
reject_rbl_client dnsbl.njabl.org
smtpd_helo_required = yes
unknown_local_recipient_reject_code = 550
disable_vrfy_command = yes
smtpd_data_restrictions = reject_unauth_pipelining
答案1
出现该错误消息是因为邮件客户端在SMTP 事务的HELO
/部分中仅发送裸主机名(“PLLAMNAZIFE”)而不是完全限定的主机名(例如“PLLAMNAZIFE.example.com”) ,并且您的 Postfix 服务器EHLO
配置为拒绝此类邮件。
许多邮件客户端程序不会在HELO
/中发送格式正确、完全限定、有效的主机名EHLO
。由于您必须接受来自付费客户的此类邮件,并且几乎无法控制他们使用的邮件客户端(并且因为HELO
检查在阻止垃圾邮件方面并没有多大用处),因此最好禁用HELO
检查。
要禁用HELO
检查,请从 Postfix 配置中删除以下两行:
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
更好的是,删除整个smtpd_helo_restrictions = ...
规则 和smtpd_helo_required = yes
。
答案2
permit_sasl_authenticated
您可以通过在列表中的拒绝规则之前插入来绕过经过身份验证的用户的 HELO 限制smtpd_helo_restrictions
:
smtpd_helo_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_helo_hostname,
reject_invalid_helo_hostname,
permit
答案3
您的邮件服务器的主机名变量无效。
myhostname
尝试将字段的值/etc/postfix/main.cf
从默认值更改为您的主机名(例如yourwebsite.com
或mail.yourwebsite.com
)
答案4
不是您的电子邮件服务器拒绝客户端,而是外部 SMTP 服务器拒绝来自您的 SMTP 服务器的邮件,问题在于您的 SMTP 服务器在与其他服务器通信时不会在 helo 邮件中发送其 FQDN 名称。
通常可以通过将公共 IP 添加到主机文件并将 FQDN 添加到 /etc/hosts 文件来解决此问题。像这样:
1.1.1.1 host.domain.com主机
127.0.0.2 host.domain.com 主机
其中1.1.1.1为官方IP。
我遇到了这个问题,而且 DNS 在公共 IP 上正向/反向工作并没有帮助,而且我在 /etc/resolv.conf 中只有自己的名称服务器。甚至主机名 -f 也返回了正确的主机名。我仍然必须将 ip 和主机名放入 /etc/hosts 中,以便 sendmail 实际使用 FQDN 而不仅仅是短主机名。
如果您通过端口 25 远程登录到服务器,请确保 220 行显示 FQDN 而不仅仅是主机。像这样:
220 主机.domain.com ESMTP Sendmail 8.15.2/8.15.2/SuSE Linux 0.8; 2018 年 7 月 9 日星期一 18:19:48 +0200