내 메일 서버가 스팸 차단 목록에 등록되어 있습니다. 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
이 오류 메시지는 메일 클라이언트가 HELO
SMTP 트랜잭션의 / 부분에 정규화된 호스트 이름(예: "PLLAMNAZIFE.example.com") 대신 기본 호스트 이름("PLLAMNAZIFE")만 보내고 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 제한을 삽입하여 인증된 사용자에 대한 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를 추가하고 /etc/hosts 파일에 FQDN을 추가하면 해결될 수 있습니다. 이와 같이:
1.1.1.1 호스트.도메인.com 호스트
127.0.0.2 호스트.도메인.com 호스트
그 중 1.1.1.1이 공식 IP이다.
나는 이 문제를 겪고 있으며 DNS가 공용 IP에서 정방향/역방향으로 작동하는 데 도움이 되지 않으며 /etc/resolv.conf에 나만의 이름 서버만 있습니다. 심지어 호스트 이름 -f도 올바른 호스트 이름을 반환했습니다. sendmail이 실제로 짧은 호스트 이름뿐만 아니라 FQDN을 사용하도록 하려면 IP와 호스트 이름을 /etc/hosts에 입력해야 합니다.
포트 25를 통해 서버에 텔넷 연결하는 경우 행 220에 호스트뿐만 아니라 FQDN도 표시되는지 확인하십시오. 이와 같이:
220 host.domain.com ESMTP Sendmail 8.15.2/8.15.2/SuSE Linux 0.8 2018년 7월 9일 월요일 18:19:48 +0200