잘못 구성된 서버가 작동하지 않는 Postfix 화이트 목록: Helo 명령이 거부됨: 호스트를 찾을 수 없습니다.

잘못 구성된 서버가 작동하지 않는 Postfix 화이트 목록: Helo 명령이 거부됨: 호스트를 찾을 수 없습니다.

내 메일 서버 구성은 다소 엄격하며 원격 끝에 구성 문제가 있기 때문에 합법적인 서버에서 들어오는 메일이 거부되는 경우가 많습니다. 일반적인 문제는 HELO 호스트 이름입니다.

이탈리아에서 가장 중요한 전기 회사인 ENEL의 구체적인 예가 있습니다. 이 회사는 확인되지 않는 HELO 호스트 이름이 포함된 거래 이메일을 보내는 것으로 보입니다.

Feb 20 18:31:10 MYHOST postfix/smtpd[1748649]: NOQUEUE: reject: RCPT from mxrelay6.enel.com[146.133.127.102]: 450 4.7.1 <smtprelay.enel.com>: Helo command rejected: Host not found; from=<[email protected]> to=<MY CLIENT EMAIL> proto=ESMTP helo=<smtprelay.enel.com>

나는 이것을 화이트리스트에 올리려고 노력 중입니다. smtp 서버의 IP 또는 호스트 이름은 논리적인 단계인 것 같습니다(두 개를 관찰했지만 정규식을 사용할 수 있습니다). 어쨌든, 현재는 할 수 없습니다. 제가 시도하는 모든 것이 작동하지 않으며 해당 이메일은 항상 거부됩니다. (저에게도 비슷한 사례가 있습니다.)

##
# Helo restrictions
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
  permit_mynetworks,
  warn_if_reject check_helo_access hash:/etc/postfix/helo_whitelist,
  warn_if_reject reject_invalid_hostname,
  warn_if_reject reject_unknown_hostname,
  warn_if_reject reject_non_fqdn_helo_hostname,
  warn_if_reject reject_unknown_helo_hostname,
  warn_if_reject reject_invalid_helo_hostname,
  permit

##
# Sender restrictions
smtpd_sender_restrictions =
  permit_mynetworks,
  check_client_access hash:/etc/postfix/sender_whitelist,
  reject_non_fqdn_sender,
  reject_unknown_sender_domain,
  reject_unknown_address,
  reject_unknown_reverse_client_hostname,
  reject_unknown_client_hostname,
  permit

##
# Recipient restrictions
smtpd_recipient_restrictions =
   permit_mynetworks,
   reject_unauth_pipelining,
   reject_unauth_destination,
   reject_invalid_hostname,
   reject_unknown_hostname,
   reject_unknown_reverse_client_hostname,
   reject_unknown_sender_domain,
   reject_unknown_recipient_domain,
   reject_non_fqdn_hostname,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   check_sender_access hash:/etc/postfix/sender_access,
   #check_client_access hash:/etc/postfix/rbl_whitelist,
   check_policy_service unix:private/policyd-spf,
   #check_client_access hash:/etc/postfix/rbl_override
   reject_rhsbl_helo dbl.spamhaus.org,
   reject_rhsbl_reverse_client dbl.spamhaus.org,
   reject_rhsbl_sender dbl.spamhaus.org,
   reject_rbl_client zen.spamhaus.org,
   #reject_rbl_client cbl.abuseat.org
   #reject_rbl_client b.barracudacentral.org,
   #reject_rbl_client bl.spamcop.net,
   #reject_rbl_client zen.spamhaus.org=127.0.0.[2..11],
   #reject_rbl_client b.barracudacentral.org=127.0.0.[2..11],
   #check_policy_service unix:/var/spool/postfix/postgrey/socket,
   permit

smtpd_relay_restrictions =
   permit_mynetworks, 
   permit_sasl_authenticated,
   reject_unauth_destination

##
# Data restrictions
smtpd_data_restrictions =
  reject_unauth_pipelining,
  permit

helo_whitelist

mxrelay7.enel.com OK
mxrelay6.enel.com OK

실제 HELO 호스트 이름을 helo_whitelist에 넣으려고 했지만 smtprelay.enel.com작동하지 않습니다. 문서에서 OK 대신 PERMIT를 사용하는 것을 보았지만 디버그 메시지를 살펴보면(debug_peer_list를 사용함) 올바르지 않은 것 같습니다.

디버깅을 살펴보면 수신자 주소 제한에서 거부가 발생하는 것을 볼 수 있습니다.

Feb 20 18:41:12 alice postfix/smtpd[1749156]: reject_invalid_hostname: smtprelay.enel.com
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_invalid_hostname status=0
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_unknown_hostname
Feb 20 18:41:12 alice postfix/smtpd[1749156]: reject_unknown_hostname: smtprelay.enel.com
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type A flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (A): Host not found
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type AAAA flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (AAAA): Host not found
Feb 20 18:41:12 alice postfix/smtpd[1749156]: lookup smtprelay.enel.com type MX flags
Feb 20 18:41:12 alice postfix/smtpd[1749156]: dns_query: smtprelay.enel.com (MX): Host not found
Feb 20 18:41:12 MYHOST postfix/smtpd[1749156]: NOQUEUE: reject: RCPT from mxrelay6.enel.com[146.133.127.102]: 450 4.7.1 <smtprelay.enel.com>: Helo command rejected: Host not found; from=<[email protected]> to=<MY CLIENT EMAIL> proto=ESMTP helo=<smtprelay.enel.com>
Feb 20 18:41:12 alice postfix/smtpd[1749156]: generic_checks: name=reject_unknown_hostname status=2
Feb 20 18:41:12 alice postfix/smtpd[1749156]: >>> END Recipient address RESTRICTIONS <<<

질문은 smtpd_recipient_restrictions 섹션에서 helo 호스트 이름을 확인해야 하는 이유입니다. 아니면 smtpd_delay_reject로 인해 확인이 지연된 것일까요?

기본적으로 화이트리스트에 있는 안녕하세요 메시지를 어디에 어떻게 넣어야 하나요?

감사해요!

답변1

을 유지하는 한 helo/ehlo 제한이 어쨌든 적용되므로 중복된 reject_unknown_hostname/ 수표를 삭제할 수 있습니다 .reject_unknown_hostnamesmtpd_helo_required=yes

그런 다음 check_로 구성된 목록을 다시 변경하십시오.헬리콥터_access에는 다음이 포함되어야 합니다.헬리콥터값 - (확인되지 ​​않은) 호스트 이름이 포함된 화이트리스트를 허용하지 않도록 의도적으로 만들어졌습니다.


그건 그렇고, 이것들은 더 이상 사용되지 않는 별칭이므로 항상 확인 중인 내용을 더 명확하게 설명하는 현재 별칭을 사용하십시오.

reject_unknown_hostname => reject_unknown_helo_hostname
reject_invalid_hostname => reject_invalid_helo_hostname

관련 정보