flatray.com | 戻る 更新日時: 2023-08-07

OCNメールのSSLエラー回避方法(Linux+fetchmail)

問題の現象

Linux の fetchmail で OCN のメールサーバ(pop.ocn.ne.jp)からメールを取得していましたが、 2023/07/06 から時々 fetchmail が次のエラーを出力し接続できないように。

System error during SSL_connect(): handshake failed at protocol or connection level.

発生頻度は徐々に増え 2023/07/26 からはまったく接続できなくなりました。 openssl コマンドで接続するとこんなエラーが出ます。

% openssl s_client -connect pop.ocn.ne.jp:995
(略)
140001415091392:error:1414D172:SSL routines:tls12_check_peer_sigalg:wrong signature type:../ssl/t1_lib.c:1146:
(略)

OCNメール側の設定変更が原因の模様

この問題の検証をしてた頃は上記の方法で TLS1.1 や TLS1.0 でも接続できたのですが、今現在は TLS1.1 や TLS1.0 では接続できません。 検索するとこんな案内が出てました。

OCNメール セキュリティ強化(TLS1.0/1.1サポート終了)のお知らせ

2023年7月3日以降、「TLS1.0」「TLS1.1」による接続のサポートを順次終了いたします。

とあり時期は一致します。 また pop.ocn.ne.jp の IPアドレスは現時点で 8個あり、これらが「順次」設定変更されたなら設定変更後のサーバを引き当てるとエラーになるという現象とも一致します。 よってこの施策が原因でしょう。

OpenSSLの設定を変更する

OpenSSL の設定でセキュリティレベルを下げると接続できる事例が紹介されてたので検証。

これで正常に接続できることは確認できました。

ただ、TLS1.1 や TLS1.0 を廃止するという OCN の施策自体は納得できるのですが、 OpenSSL のセキュリティレベルを下げないと通信できないのは正直どうかと思います。

fetchmail 設定方法その1

検証したセキュリティレベルの変更を fetchmail だけに適用するため、こう実行します。

env OPENSSL_CONF=~/.ocn-mail-openssl.cnf fetchmail pop.ocn.ne.jp

これで動作するという情報もありましたが、残念ながら当方の環境ではコンフィグファイルが適用されず正常動作しませんでした。

fetchmail 設定方法その2

fetchmail の plugin キーワードで接続用プログラムを指定できるので、 openssl コマンドで接続するよう .fetchmailrc を設定します。

poll pop.ocn.ne.jp
  plugin "env OPENSSL_CONF=~/.ocn-mail-openssl.cnf openssl s_client -quiet -connect pop.ocn.ne.jp:995"
  username アカウント名
  password パスワード
  sslproto ""

これでうまく接続できました。 また結果としてセキュリティレベルの変更は OCN への接続だけに適用できました。

なお sslproto "" キーワードですが、これを指定しないと openssl での接続上でさらに TLS にアップグレードしようとして次のエラーが出てしまいます。

fetchmail: pop.ocn.ne.jp: upgrade to TLS failed.
(fetchmail: pop.ocn.ne.jp: TLS へのアップグレードに失敗。)

(以上)