POSTFIX エラー: 421 4.7.0 しばらくしてからもう一度お試しください。接続を閉じます。(EHLO)

POSTFIX エラー: 421 4.7.0 しばらくしてからもう一度お試しください。接続を閉じます。(EHLO)

main.cfLinux 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

を見て公式Googleドキュメント彼ら側では「レート制限」があるようです:

 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.

1 分間に何通のメールを送信していますか? 経験上、通常 Gmail は 1 分間に最大 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

関連情報