2021/9/30になって、iPadで自宅のメールサーバーからメールを取り出せなくなりました。
Dovecotのログを見ると、
Oct 2 15:23:18 gentoo dovecot[24406]: pop3-login: Disconnected (no auth attempts in 0 secs): user=<>, rip=0.0.0.0, lip=192.168.0.0, TLS handshaking: SSL_accept() failed: error:14094416:SSL routines:ssl3_read_bytes:sslv3 alert certificate unknown: SSL alert number 46, session=<xxxxxxxxxxxxx>
というようなエラーログが残っていました。
「サーバーの識別情報を検証できません」と表示され、有効期限が「2021/9/30」のようになっています。
詳細を確認しても、サーバ証明書の有効期限は2021/11/18とまだ先です。
どうやらこれは、古いルート証明書「DST Root CA X3」の期限が2021/9/30までだからのようです。
古いOSで問題になるようですが、しかし、iPadは先日iOS15にしたばかり。
iOSの問題かと思ったのですが・・・。
なんと、Galaxy S20にあっては、7月からエラーでメールが取得できていなかった模様。
Galaxy S20はセキュリティタイプを「SSL(すべての証明書を許可)」という設定にすると、メールを取得し始めました。
Let's Encryptで「DST Root CA X3」ではなく、新しいルート証明書「ISRG Root X1」を使うように、強制的に更新してみました。
gentoo # certbot renew --force-renewal --preferred-chain "ISRG Root X1" gentoo # /etc/init.d/dovecot restart
これをやっても、iPadのメーラーは取得しに行かず、エラーログも変わりません。
いろいろと試してみましたが、Dovecotのconfが間違っているのかなぁ、と思い、初心に帰ってLet's Encryptを使った10-ssl.confを書いている人のサイトを見てみると、間違いを発見!!
ssl = yes ssl_cert = </etc/letsencrypt/live/nns-fact.2y.net/cert.pem ssl_key = </etc/letsencrypt/live/nns-fact.2y.net/privkey.pem
このssl_certに、中間証明書を含めないサーバー証明書「cert.pem」を指定していたため、iPadもGalaxy S20もルート証明書が「DST Root CA X3」だと思い、エラーが出ていたようです。
中間証明書を含む証明書に変更します。
ssl = yes ssl_cert = </etc/letsencrypt/live/nns-fact.2y.net/fullchain.pem ssl_key = </etc/letsencrypt/live/nns-fact.2y.net/privkey.pem
これで、iPadから無事にメールを取得でき、Galaxy S20もセキュリティタイプを「SSL(すべての証明書を許可)」から「SSL」に戻してもエラーが出なくなりました。
めでたしめでたし。