電柱日報

日々の由無し事

トラブル・トラブル

ここ数カ月,不意に発生してはIMAPサーバの認証が通らなくなり,決まって約1時間たつと解消してしまう謎のトラブルが朝イチで再発。
メールサーバのログをさらったり,上位のネットワーク機器を疑ったりしつつも,これといった情報もなく原因がつかめずにいましたが,ようやく全容が判明しました。
問題はメールサーバではなく,サーバの時刻同期に使っているNTPサーバだったようです。
telnetを使い,IMAPコマンドを手打ちで入力してみたところ,LOGINコマンドで不正な認証情報を送ると,通常通りログインエラーが返ってくるのですが,正しい認証情報を入力した場合にBYE Clock skew detected. Check the clock on the file serverというメッセージが返って接続が閉じられてしまうことが分かりました。
エラーメッセージ調べた結果,courier-imapはメールの保存先としてメールサーバのローカルストレージでなくNFSなどのネットワークストレージを使用している場合,メールサーバとファイルサーバのタイムスタンプに30秒以上のズレが発生していると,エラーを返すらしい事が判りました。
date && touch foo && stat fooといったコマンドで確認してみると,確かにファイルサーバがメールサーバより32秒ほど進んだ時刻で動いている様子。
しかし,メールサーバもファイルサーバも同じNTPプロクシを1時間に1回参照していますので,通常であればこれほどのズレが発生する以前に時刻は修正されてしまうハズです。
今度はNTPサーバの設定だのログだのを確認したところ,最終的に,NTPプロクシが冗長化のために参照している複数のNTPサーバのうちの1台が返す時刻が,参照に行く度に100秒単位でブレていることが判明しまして。
決まってほぼ1時間で回復してしまうは時刻同期を1時間に1度行って居るのに関係しているようで,メールサーバかファイルサーバのどちらかが問題のNTPサーバ経由の時刻を取得してしまう事で,両サーバ間の時刻同期が崩れ問題が発生するものの,1時間後の時刻同期時に他の正しいNTP経由で時刻を取得して同期が回復してた,という状況だったようです。
ユーザには何度もご迷惑をかけましたが,ともかくなんとか収束しそうで一安心です。