Cyrus IMAPdのDBエラー

Cyrus IMAPdがエラーを吐くようになってしまったので、調査。

現象

Cyrus IMAPdが/var/log/messagesに次のようなエラーを吐く。メールは受信している模様。

原因

何らかの理由により、Cyrus IMAPdのデータベース (Berkley DB) が壊れたらしい。

そう言えば、昨日Cyrus IMAPdのアップデートしたなぁ。と思い出したので、portmasterのログでアップデート日時を確認する。でも、/var/log/messagesファイルを見てみたら、そんなものじゃなくもっとだいぶ前からエラーを吐き続けていた。放置しててごめんなさい。でも普通にメール受信できてたしな…。

アップデートするとき、IMAPdを止めなかったのが原因だろうか。常識的に止めるものと言われればそんな気もするけど、今まで止めたことがなかった。メール負荷のほとんどないサブメールサーバのデータベースは無事。

参考ページ

対処

  1. Cyrus IMAPdを停止する。

  2. 念のため、メールスプールのバックアップを作成する。

  3. cyrusユーザでログインする。

  4. メールボックスのデータベースを再構築する。

  5. Cyrus IMAPdを起動する。

  6. /var/log/messagesにデータベースエラーが書き込まれないことを確認したら、おしまい。