web-dev-qa-db-ja.com

Heloコマンドが拒否されました:ホストが見つかりません-パブリックサーバー経由でホームサーバーからのメール送信を受け入れるようにPostfixをセットアップします

ホームサーバーからシステムメールを受信したいのですが。だから私は自分のパブリックサーバーを介してそれを行うようにpostfixを設定しようとしています。ルーターのホスト名がホスト名に含まれているため、ホームサーバーはめちゃくちゃなホスト名のプライベートネットワークにあり、完全なホスト名 "homeserver.blablabla_crappyrouter"になっています。

ホームサーバーは、ホームサーバーがクライアントである固定IPのOpenVPNトンネルを介してパブリックサーバーに接続します。ホームサーバーからパブリックサーバー(またはその逆)には固定IPがあるため、固定アドレスを介して問題なく相互に到達できます。これは、セキュリティ上の問題がなく、どこからでもホームサーバーに到達できるトンネルです。

公開サーバー上の私のPostfix構成には、次のものが含まれています。

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

そして、私のホームサーバーで、OpenVPNのパブリックサーバーのIPを

relayhost = [<public server IP through OpenVPN>]

これで、この構成ではメールが送信されず、エラーが発生します。

Heloコマンドが拒否されました:ホストが見つかりません

私はこれを調査し、postfixがホスト名を検索することを発見しましたが、ホスト名がめちゃくちゃになっているため、どうやらそれは見つかりません。

私の質問:パブリックサーバーのポストフィックスにホームサーバーのすべてを盲目的に許可するようにするにはどうすればよいですか?

ありがとう。

更新:

Main.cfでオプションを設定しました

smtpd_helo_required = no

しかし、これは助けにはなりませんでした。以下は、テストメールを送信した直後の/var/log/mail.logエントリです。

Sep  2 15:53:53 HomeServer sm-mta[6677]: t82Drr6w006677: [email protected], size=69, class=0, nrcpts=1, msgid=<[email protected]_crappyRouter>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1]
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_subject, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., field=cn_issuer, status=failed to extract CN
Sep  2 15:53:53 HomeServer sm-mta[6679]: STARTTLS=client, relay=mydomain.com., version=TLSv1/SSLv3, verify=FAIL, cipher=ECDHE-RSA-AES256-GCM-SHA384, bits=256/256
Sep  2 15:53:53 HomeServer sm-mta[6679]: t82Drr6w006677: [email protected], delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=120069, relay=mydomain.com. [93.186.192.197], dsn=4.7.1, stat=Deferred: 450 4.7.1 <HomeServer.blablabla_crappyRouter>: Helo command rejected: Host not found

私が送ろうとしているメールは:

ehlo localhost
mail from: [email protected]
rcpt to: [email protected]
data
Subject: My first mail on Postfix

Hi,
Are you there?
regards,
Admin
.
quit

そして私は次のコマンドを使用して送信します:

cat mail.txt | nc localhost 25

ここに問題があります:

smtpd_helo_restrictions = reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

それらの最後、reject_unknown_helo_hostname、HELOコマンドで指定されたホスト名を解決できない場合にPostfixにメールを拒否するように指示します。これを削除すると、問題は解消されます。

行った変更を元に戻す必要があります(設定smtpd_helo_required to no)。この変更により、クライアントが接続して、HELOをまったく実行せずにメールの送信を開始できるようになりました。ただし、クライアントがHELOを実行すると、smtpd_helo_restrictionsは、ご存じのとおり、引き続き適用されます。

7
Jenny D

HELOポリシーを次のように変更できます。

smtpd_helo_restrictions = 
    permit_mynetworks,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    reject_unknown_helo_hostname

...ホームメールサーバーのアドレスをmynetworks = ...行に追加します。

@JennyDによる回答は有効であり、問​​題を解決するはずですが、外部ホストの現在のHELOポリシーを維持する方が良い場合があります。これには利点があります。誤って構成されたMTAはサーバーにメッセージを送信できず、スパムから(少しではありますが)節約できます。とにかく、不適切なHELO構成のホストが疑われます。

少し進んで、ieの下のリストに少なくともreject_unknown_client_hostnameがあることを確認してください。 smtpd_client_restrictions = ...。これにより、適切な逆DNSレコードがなく、したがって多くのボットネットリレーがないMTAホストからのメッセージが防止されます。もう1つの重要なスパム対策は、SPFポリシーデーモン(つまり、milter-greylist)であり、明らかにSpamAssassinです。

8
sam_pan_mariusz

クライアントをきめ細かく制御できない場合は、とにかくSASLを使用する必要があります。

smtpd_delay_reject = yes

smtp_helo_restrictions =
    permit_sasl_authenticated,
    reject_unknown_helo_hostname

これにより、SASL認証されたホストは制限なしにheloを送信できます

一部の構成では、master.cfがsubmissionsmtpsの両方のsmtp_helo_restrictions$mua_helo_restrictionsに設定することに注意してください。その場合、代わりにmua_helo_restrictionsを設定します。

1
nyet