ホームサーバーからシステムメールを受信したいのですが。だから私は自分のパブリックサーバーを介してそれを行うように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
は、ご存じのとおり、引き続き適用されます。
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です。
クライアントをきめ細かく制御できない場合は、とにかくSASLを使用する必要があります。
smtpd_delay_reject = yes
smtp_helo_restrictions =
permit_sasl_authenticated,
reject_unknown_helo_hostname
これにより、SASL認証されたホストは制限なしにheloを送信できます
一部の構成では、master.cfがsubmission
とsmtps
の両方のsmtp_helo_restrictions
を$mua_helo_restrictions
に設定することに注意してください。その場合、代わりにmua_helo_restrictions
を設定します。