Debian Jessie から Stretch へのアップグレード

6月17日、Debianの2年振りのメジャーアップデートが行われ、stretch(v9)がstableに昇格した。

wheezy(v7)からjessie(v8)へのアップデートの場合は、initからsystemdへの変更という大きな問題があったためクリーンインストールを行った。だが今回は、クリーンインストールでなくアップグレードでも大きな問題は起こらなかった。

私の関係では、サーバ3機、クライアント2機のアップグレードを行ったので、その手順と問題点を記述する。なお、正確にはクライアントマシン2機はjessie-backportsに設定していたが、そのことによる障害はなかったようだ。

アップグレードは、次の手順で行った。なお、apt-getの代わりにaptitudeを使うことは勧められない。メジャーアップデートの際は避けた方が良い*1

  1. 現状での apt-get update & apt-get upgrade
  2. sources.list を書き換え(jessie から stretchへ)
  3. apt-get update
  4. apt-get upgrade
  5. apt-get update (無駄ではない)
  6. apt-get dist-upgrade
  7. apt-get autoremove (不必要なパッケージを削除する)
  8. 再起動

唯一の問題点*2

当方のサーバはpopサーバとしてdovecotを使用している。今回のアップグレードの直後、クライアントからのpop3sアクセスが出来なくなる問題が発生した。dovecotのログには

pop3-login: Fatal: Invalid ssl_protocols setting: Unknown protocol 'SSLv2'

と記録されていた。これは、/etc/dovecot/conf.d/10-ssl.confに

ssl_protocols = !SSLv2 !SSLv3

の記述があることが原因である。これを以下のように変更する。

ssl_protocols = !SSLv3

SSL3.0はセキュリティーの問題で禁止する必要があるのだが、SSL2.0はOpenSSL1.1で既に廃止されているため、敢えて禁止する必要がない。逆に「!SSLv2」の記述があると、何故か、SSL2.0方式の「ClientHello」を受け入れなくなるのだ。この様式の「ClientHello」は多くのメールクライアントで使用されているので、「!SSLv2」が残っていると接続ができなくなったわけだ*3

しかし、本来必要でないはずの「!SSLv2」が、いまだに有効なのはどういうわけなのだろうか?