水曜日からメールサーバーがぶっ壊れていたのだが

今週の水曜日にメールサーバーがぶっ壊れていたらしい。一日外出していたので、「エラーメールが帰ってきた」という指摘をもらった。復旧までバックアップサーバー(DebianGNU3.1)でつないだ。水曜日に送ってもらっていた方が他にもいらっしゃないか戦々恐々。

Mac mini+MacOSXServer Tigerで運用しているけど、先日のセキュリティアップデートから、どうもDBまわりに違和感。このブログのアーカイブにアクセスできなくなったのが事の始まり。

[症状]

  1. (MovableTypに使っている)MySQLの接続エラーがおきる。
  2. Postfixのimapで接続エラーがおきる。


1.について。アーカイブページは動的表示(現在は暫定処置として静的表示)。アクセスしようとすると、PHPからMySQLへの接続がエラーが発生してキャッシュファイルを読み出せない。また一度その状態になるとcgiも応答しなくなる。ただしHTMLファイルの読み出しは問題なし。

2.について。imapに接続できない。くわえてメールサーバー自身がクラッシしている模様。エラーログ外部メールをバウンズしているらしい。ポイントは、

imap[13978]: DBERROR: critical database situation

共通点は1.と2.のいずれもCPU使用率が98%近くになり高負荷状態に陥った。セキュリティアップデート前はこんなエラーはなかった(はず)。何が原因かさっぱり。

ということでいつものように問題の切り分け作業をしていたところ、1.と2.に相関関係が判明。まず、Postfixを停止するとMySQLは問題なく接続できる。アーカイブページが表示された。なにがなんだか。

仕方なしに、Apple Mailing Listsで調べてみると、「Re: Mail services dying」を発見。


I run through the now-normal sequence of:
serveradmin stop mail
mv /var/imap/ /var/imap.old
mkdir /var/imap
/usr/bin/cyrus/tools/mkimap
chown -R cyrus:mail /var/imap
sudo -u cyrus /usr/bin/cyrus/bin/reconstruct -i
serveradmin start mail

Tigerではcyrsuをcyrusimapに置換してコマンド。一応復旧したけどMySQLとの根本原因が知識不足により理解できていない。よって完全解決にはほど遠いような気もする。もう少しシステムログを解析してみよう。にしても、難しいな、サーバーの運用って。