CentOS 5.11 の dovecot を 2.2.26 にアップデートしてみる。

Mail Server

CentOS 5.11 の dovecot を 2.2.26 にアップデートしてみようと思ったのですけど、パッケージマネージャー yum で提供されているのが 1.0.7 までのようだったので、ソースコードから入れてみることにしました。


なんとなく macOS の "メール" アプリからメールボックスを思ったように操作できないような気がして、試しに IMAP サーバーとして利用していた Dovecot をアップデートしてみることにしました。

結局のところそれで "メール" アプリの挙動が良くなった感じはしないですけど、とりあえず dovecot をアップデートする中でいくつか戸惑ったことがあったので、今後の備忘録として記しておくことにしました。

環境

今回の主な環境は、次の通りです。

既存の dovecot は、CentOS 5 系で標準のパッケージマネージャー yum を使ってインストールしてあったのですけど、 現在、インストールしているバージョンよりも新しいものは提供されていない様子でした。

環境はおそらく POP3 及び IMAP でのメール受信を可能にする に近いと思います。

インストール

そこで、今回は Download ページから、現時点で最新の 2.2.26.0 をダウンロードして利用することにしました。

ダウンロード

ここから dovecot-2.2.26.0.tar.gz を、今回は次のようにして /usr/local/src ディレクトリーにダウンロードしました。

cd /usr/local/src
wget http://www.dovecot.org/releases/2.2/dovecot-2.2.26.0.tar.gz

cd dovecot-2.2.26.0 

ビルド

ダウンロードが終わったら dovecot のビルドを行います。今回は既存の CentOS 環境を真似て、次のようにオプションを添えて configure を実行することにしました。

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

make
make install

これでビルドとインストールができました。

これまでの dovecot 環境と違って、設定ファイルが /etc/dovecot.conf から /etc/dovecot/dovecot.conf に変わってしまう様子でしたけど、それが何かサーバーの起動に支障をきたすことはなさそうでした。

設定

dovecot のインストールが終わったら、起動の前に設定を調整します。

これまでの 1.0.7 と比べて 2.2.26 の設定ファイルは外側からみて構成が大きく変わったみたいで、上で紹介した dovecot.conf の場所の他にも、これまでは1つのファイルで記載していた設定が、いくつかのファイルに分散されて /etc/dovecot/conf.d にも記録されるようになった様子です。

これらのサンプルは /usr/share/doc/dovecot/example-config に記録されていたので、これを次のようにして、新しい設定ファイルの保存場所 /etc/dovecot にコピーして使うことにしました。

cp /usr/share/doc/dovecot/example-config/dovecot.conf /etc/dovecot
cp /usr/share/doc/dovecot/example-config/conf.d /etc/dovecot

こうした上で /etc/dovecot 内の各種ファイルを、以前の設定と合うように調整して行きます。

dovecot.conf

まずは /etc/dovecot/dovecot.conf ですけど、こちらは 2.2.26 では、特にきにするところはなさそうでした。

以前はここの protocolsimap imaps pop3 pop3s みたいに "s" が最後に添えられたプロトコルを指定していましたけど、今回のバージョンでは特にそれらを明記する必要はない様子でした。

conf.d/10-auth.conf

そして /etc/dovecot/conf.d/10-auth.conf で、クリアテキストでの認証を有効にしておくことにします。これは、今までのサーバーでそう設定していたので、今回も同じくそう設定してみた感じです。

disable_plaintext_auth = no

conf.d/10-ssl.conf

続いて /etc/dovecot/conf.d/10-ssl.conf で SSL 接続に関する情報を設定しておきます。以前は ssl_disablessl_cert_file などの識別子で設定していましたけど、今回からは sslssl_cert で設定するようです。

ssl = yes

ssl_cert = </etc/pki/tls/certs/dovecot.cer
ssl_key = </etc/pki/tls/private/dovecot.key

conf.d/10-mail.conf

メールの保存場所に関する設定は /etc/dovecot/conf.d/10-mail.conf で行うようです。自分の環境では Maildir 形式を使っているのでそれを mail_location で、それと以前の認証方式の設定を auth_mechanisms で指定しておくことにしました。

mail_location = maildir:~/Maildir
auth_mechanisms = cram-md5 plain login

conf.d/auth-system.conf.ext

そして、認証方式の設定です。従来は PAM 認証で設定していたのですけど、今回は CentOS 5.11 の libpam バージョンが 0.99.6.2-14.el5_11 と古いからなのか dovecot をビルドするときに PAM を有効化できなかったので、今回は shadow パスワードで対応しておくことにしました。

そのためには /etc/dovecot/conf.d/auth-system.conf.extpassdb の中で driver = pam になっているものを無効化して、代わりに driver = shadow になっているものを有効化します。

#passdb {
  #driver = pam
  # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=<n>]
  # [cache_key=<key>] [<service name>]
  #args = dovecot
#}

passdb {
  driver = shadow
  # [blocking=no]
  #args =
}

dovenull アカウント

それと dovecot 2.2.26 では dovecot の起動に dovenull という名前のアカウントも使う様子でした。このアカウントは登録されてなかったので、次のようにして登録しておくことにします。

useradd -s /sbin/nologin -d /var/empty dovenull

このような感じで、とりあえず自分の環境の dovecot 1.0.7 を 2.2.26 にアップデートできた様子です。

起動

ここまでできたら、あとは CentOS 5.11 の普段通りに dovecot を再起動します。

service dovecot restart

これで無事に動いて、IMAP でのメール受信などができるようになりました。

動かなかったとき

ただ、設定が不完全だったりした最中に、この段階で dovecot dead but subsys locked というメッセージが表示されたり、その他いくつかの要因で起動できなかったりすることがありました。

そんなときには /var/lock/subsys/dovecot を削除してみたり、/var/run/dovecot/master.pid を削除してみたり、Linux を再起動してみたりしながら、設定を上記のように調整していったところ、いつの間にやらすっかり安定的に dovecot を起動できるようになりました。