postfixでサーバ間通信を暗号化(SSL)にしようとしていろいろハマった話

Gmailへメールを送信すると暗号化されていないという事で赤いマークがつくので、それを何とかしたいという要望があり、解決するにはSSL(暗号化)にてメールをGmailに送る必要があります。

なので、普通にサーバ間通信のSSL化という事で下記の項目の設定をpostfixのmain.cfに実施する事とした。

smtp_tls_security_level = may
smtp_tls_CAfile = <CA File>
smtp_tls_cert_file = <サーバ証明書>
smtp_tls_key_file = <KEY File>

一応、SSL化は出来たが送信時ログに「Untrusted TLS connection」と記録されている。
これは一応暗号化はしてるが信頼できないと言ってる状態に。
中間証明書とかないのかと思ったが、実はこちらのメールサーバがSSLのクライアントとして相手サーバにSSL通信をしているので、各種OSに登録されている証明書関連が読めてないという事が判明

smtp_tls_CApath = /etc/ssl/certs

Ubuntu 22.04.3 でデフォルトで登録されている証明書の保存場所

上記設定した事でログ上も「Trusted TLS connection」となった。

ただ、また違う問題が発生した。ドコモへのメール送信が「TLS: handshake failure」となってメールキューに溜まってしまう状態になった。
ログには「TLS library problem: error:0A000152:SSL routines::unsafe legacy renegotiation disabled」とか記録されてる状態に。これが調べてもよくわからなくて・・・。

tls_ssl_options = legacy_server_connect

というのを設定することで解決。
情報を検索して調べたのもあるが、ログに記録されてる「legacy renegotiation」から、このキーワードを設定する項目がないか探した所、この設定にいきついた。

いろいろと問題が発生したが、何とか解決したので、一応情報として残しておくこととしました。
もし、設定をして同じような症状にあっている担当者に、この情報が少しでも役立つことを願っています。

Follow me!