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
을 보면서공식 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.
분당 몇 개의 메일을 보내고 있나요? 경험상 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