時刻のズレが呼ぶサービスダウン

1. メールが見れない!

ある日突然、メールが見れなくなった。imapでcourier-mtaのサーバに接続してメールを取得しようとしたらエラーが出ていた。


OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2010 Double Precision, Inc.  See COPYING for distribution information.
0000 CAPABILITY
CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE AUTH=PLAIN ACL ACL2=UNION
0000 OK CAPABILITY completed
0001 LOGIN ******** ********
BYE Clock skew detected. Check the clock on the file server

エラーとしては “BYE Clock skew detected. Check the clock on the file server” と言うものらしい。どうやら時刻がズレているようだ。

2. あれ、タイムスタンプズレてね?

テキトウにググってみると海外のフォーラムがヒット

参考サイト: Courier: BYE Clock skew detected. Check the clock on the file server  | Joost.cx

このサイトによると、タイムスタンプがズレてるからメールが見れないんだ、とのこと。その通りのエラーメッセージやんけ、とか思いながら見てると以下の事を試してみれ、って書いてあった。メールサーバで試してみる。


shell> date && touch hoge && stat hoge

Thu Nov 10 11:31:40 JST 2011
67174147 39332750 -rw-r--r-- 1 hogetan hogetan 0 0 "Nov 10 11:30:59 2011" "Nov 10 11:30:59 2011" "Nov 10 11:30:59 2011" "Jan  1 08:59:59 1970" 4096 0 0 hoge

っと、あれれ、現在時刻違くないですか! 最初の一行目はdateコマンドで返される現在時刻、このコマンドを実行してるメールサーバでの現在時刻。次の行にはstatコマンドで示されるファイルの作成日時とか更新日時、アクセス日時などが記載されている。二つ目のコマンドtouchで作成されるのはdateコマンドの直後なのでこの一つ目のdateコマンドと三つ目のstatコマンドでの時間差はどれだけ遅くとも一秒以内には収まるはず、が、収まってない!

実はコレ、メールサーバはファイルをnfs上に置くようにしてるのだけれど、そのファイルサーバの時刻がズレてるのが原因。ファイルのタイムスタンプというのはどうやら、nfsのサーバがファイルを作成、更新、アクセス日時を透過的に管理する、というものらしい。そしてcourier-mtaはこのズレが30秒以上の時、“BYE Clock skew detected. Check the clock on the file server” のエラーを出して終了してしまうのだ。

でもおかしい、なぜ時刻がズレてしまったのか。ファイルサーバ、メールサーバの時刻を見たけれどそんなにひどくはズレてない。ntpの設定がないとかなりのズレが生じるはずだ。しかもコレまではうまく使えていた、ということは30秒のズレはなかったはず。どうしてこうなったんやーと思いながら二つのホストでのcrontabに記載されているntpdateを見てみた。するとなんてこった、ntpdateで参照するntpサーバが二つのホストで違っている!ということでそれぞれのホストでのntpサーバの参照先を同一のものにしてやった。

3. なんでズレるのおかしいやん

ちなみに、片方のホストではISPのntpサーバ、もう一つのホストではLAN内のntpサーバを参照するようになっていた。この二つの時刻がズレる事もかなり問題だと思うのだけれど、確認したらLAN内のntpサーバはドコにも同期をしに行ってなかった・・・。そらズレるわな。

ということで、ntpサーバの参照先もキッチリ指定してやって一件落着。

「時刻のズレが呼ぶサービスダウン」への1件のフィードバック

コメントを残す