POSTFIX 错误:421 4.7.0 稍后重试,关闭连接。(EHLO)

POSTFIX 错误:421 4.7.0 稍后重试,关闭连接。(EHLO)

main.cf在 Linux SUSE 上的 Postfix 中像这样设置

inet_interfaces = localhost
inet_protocols = ipv4

masquerade_domains =
masquerade_exceptions = root
mydestination = $myhostname, localhost.$mydomain
myhostname = localhost
mynetworks_style = subnet
relayhost=[smtp-relay.gmail.com]:25

smtpd_delay_reject = yes
smtpd_helo_required = no

smtpd_client_restrictions =

smtpd_helo_restrictions =

smtp_sasl_auth_enable = no
smtp_sasl_security_options =
smtp_sasl_password_maps =
smtpd_sasl_auth_enable = no

smtp_use_tls = no

我试过了,telnet smtp-relay.gmail.com 25而且很有效

无论如何,当我尝试使用服务器中的 postfix 发送电子邮件时,我遇到了问题。

root@localhost
(host smtp-relay.gmail.com[ipv4] refused to talk to me: 421 4.7.0 Try again later, closing connection. (EHLO)

答案1

看看谷歌官方文档看起来像是他们那边的“速率限制”:

 421, "4.7.0", Try again later, closing connection. This usually indicates a Denial of Service (DoS) for the SMTP relay at the HELO stage.

您每分钟发送多少封邮件?根据经验,Gmail 通常每分钟最多接收 50/100 封邮件。

根据评论进行编辑

嗯,看起来同样的错误出现在错误的 HELO/HELO 上(正如我最初怀疑的那样)。

我刚刚尝试过:

$> telnet smtp-relay.gmail.com 25
Trying 108.177.15.28...
Connected to gmail-smtp-relay.l.google.com.
Escape character is '^]'.
220 smtp-relay.gmail.com ESMTP b8-v6sm74445wrr.1 - gsmtp
helo localhost
421 4.7.0 Try again later, closing connection. (EHLO) b8-v6sm74445wrr.1 - gsmtp
Connection closed by foreign host.

所以它肯定是你的 EHLO 字符串。

myhostname = localhost您的文件中有main.cf,您应该将其更改为myhostname = [your server fqdn],即您应该有一个完全限定域名为您的服务器提供正确的 DNS/rDNS 条目。

答案2

我在 PHP 应用程序中使用 Symfony/Mailer 时确实遇到了这个问题。它确实使用了如下 SMTP 中继:

MAILER_DSN=smtp://smtp-relay.gmail.com:587

修复方法是定义local_domain参数:

MAILER_DSN=smtp://smtp-relay.gmail.com:587?local_domain=your-domain.com

相关内容