不適切に構成されたサーバーの 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 またはホスト名は論理的なステップのようです (2 つ確認しましたが、正規表現を使用できます)。とにかく、私は現在それができず、何を試みても機能せず、それらの電子メールは常に拒否されます。(他にも同様のケースがあります)。

##
# 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_ホワイトリスト

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

helo_whitelist に実際の HELO ホスト名を入れてみましたが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 による遅延チェックなのでしょうか。

基本的に、ホワイトリストに登録された HELO メッセージをどこにどのように配置すればよいのでしょうか?

ありがとう!

答え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

関連情報