
最近、初めて 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 を再起動して再度テストします。