Helo 명령이 거부되었습니다: 정규화된 호스트 이름이 필요합니다. 오류

Helo 명령이 거부되었습니다: 정규화된 호스트 이름이 필요합니다. 오류

내 메일 서버가 스팸 차단 목록에 등록되어 있습니다. 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

이 오류 메시지는 메일 클라이언트가 HELOSMTP 트랜잭션의 / 부분에 정규화된 호스트 이름(예: "PLLAMNAZIFE.example.com") 대신 기본 호스트 이름("PLLAMNAZIFE")만 보내고 Postfix 서버 EHLO구성을 다음과 같이 보내기 때문에 발생합니다. 그러한 이메일을 거부하십시오.

HELO많은 메일 클라이언트 프로그램은 / 에 올바른 형식의 정규화된 유효한 호스트 이름을 보내지 않습니다 EHLO. 유료 고객으로부터 이러한 메일을 받아야 하고 그들이 사용하는 메일 클라이언트를 거의 제어할 수 없기 때문에(그리고 HELO검사는 스팸을 차단하는 데 그다지 유용하지 않기 때문에) 검사를 비활성화하는 것이 가장 좋습니다 HELO.

검사를 비활성화하려면 HELOPostfix 구성에서 다음 두 줄을 제거하십시오.

    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

관련 정보