Postfix と TLS は正しく設定されていますが、Thunderbird が SMTP と STARTTLS 経由で電子メールを送信しようとすると不可解なエラーが発生します。

Postfix と TLS は正しく設定されていますが、Thunderbird が SMTP と STARTTLS 経由で電子メールを送信しようとすると不可解なエラーが発生します。

最近、初めて CentOS 5.5 と Postfix をインストールしました。

SMTP サーバーで TLS を有効にする 2 つの異なるチュートリアルに従いました。どちらのチュートリアルでも、キーと証明書を作成し、構成を編集し、telnet 経由で接続してサーバーをテストするように指示されていました。

すべて正常に動作しているように見えます。telnet で接続すると、サーバーは STARTTLS で接続できることを通知します。ポート 25 と 465 の両方に対してファイアウォールを開いています。SELinux は無効になっています (これが干渉するかどうかはわかりません)。

Thunderbird で STARTTLS を有効にしてメールを送信しようとすると、次のエラーが表示されます。

メールの送信中にエラーが発生しました: メール サーバーが不正な挨拶を送信しました: SMTP サーバー 192.168.0.9 (192.168.0.9:465) に接続できません。接続エラー 10061。

[OK] を押すと、あまり役に立たない別のメッセージが表示されます。

メッセージの送信に失敗しました。トランザクションの途中で SMTP サーバー cinc.centos への接続が失われたため、メッセージを送信できませんでした。もう一度試すか、ネットワーク管理者に問い合わせてください。

一日の大半を Google で検索して設定をいじくり回してきましたが、まったく解決に近づきませんでした。エラー メッセージやエラー コードだけを Google で検索してみましたが、役に立つ情報は何も見つかりませんでした。

ただし、SMTP サーバーは TLS 暗号化がなくても完全に正常に動作します。したがって、エラーは間違いなく暗号化に関するものであり、エラー メッセージにポート 465 が記載されているのはそのためです。

参考になればと思い、TLSの部分を投稿しました。メイン.cf:

smtp_tls_note_starttls_offer = yes
smtpd_tls_received_header = yes
smtpd_sasl_local_domain = cinc.centos
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_sasl_authenticated、permit_mynetworks、reject_unauth_destination
smtpd_tls_security_level = may
smtpd_tls_key_file = /etc/pki/tls/private/cinc.centos.key
smtpd_tls_cert_file = /etc/pki/tls/certs/cinc.centos.cert
smtpd_tls_loglevel = 1
smtpd_tls_session_cache_timeout = 3600秒
smtpd_tls_session_cache_database = btree:/var/spool/postfix/smtpd_tls_cache
tls_random_source = dev:/dev/urandom

私は混乱しているこのすべてに!自分で解決する気配がありません...誰か私に正しい方向を指し示してくれませんか?

どうもありがとう!!

オリー・トゥリーエンド

答え1

openssl を使用してデバッグします。

openssl s_client -host localhost -starttls smtp

答え2

Thunderbird を Postfix に接続する際にも同じ問題が発生しました (Thunderbird は「 」と表示しました)。私の場合は、次のようにThe mail server sent an incorrect greeting: 5.7.1変更することで解決しました。/etc/postfix/master.cf

-o smtpd_client_restrictions=permit_sasl_authenticated,reject

..そこにはこう書かれていた:

-o smtpd_client_restrictions=permit
-o smtpd_sender_restrictions=permit_sasl_authenticated,reject
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject

Postfix は、認証される前に Thunderbird の接続を拒否していました。

答え3

テスト元の IP が接続できるようにするには、main.cf の mynetworks エントリを追加する必要があります。ローカルホストから接続しようとしている場合は、mynetworks = localhostIP を設定する必要があります。postfix をリロードするか、または postfix を再起動して再度テストします。

関連情報