« Cronでサービスの死活監視 | main | 静岡にガンダムを見に行こう »

Virtual Server 2005 R2上のDovecotが落ちる・・・

  • author: Tadashi
  • 2010/08/25 22:35

Virtual Server 2005 R2上にCentOS5.5をインストールして、PostfixとDovecotでメールサーバーを組みました。

が・・・・・Dovecotが頻繁に落ちるのです。

dovecot: pop3-login: Time just moved backwards by 5 seconds. I'll sleep now until we're back in present. http://wiki.dovecot.org/TimeMovedBackwards
dovecot: auth(default): Time just moved backwards by 4 seconds. I'll sleep now until we're back in present. http://wiki.dovecot.org/TimeMovedBackwards
dovecot: Time just moved backwards by 6 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards

こんなエラーメッセージが続きます。

意味は「時間が○秒戻ったので私(Dovecot)は停止します」って、勝手に死ぬなよー

Virtual Server上に入れたCentOSはクロックの割り込みがうまく行かず、時間がすぐに大幅に狂ってしまいます。

そこでNTPサービスをインストールしましたが、時間が狂いすぎるのか同期できず、仕方なしにバッチで強制的に合わせていました。

# vi /etc/crontab
---
*/10 * * * * root ntpdate 219.164.211.137 > /dev/null 2>&1
---

しかし、エラーメッセージにある「http://wiki.dovecot.org/TimeMovedBackwards」を見てみると、このntpdateコマンドがいけないようですね。

急な同期がダメなのは次のホームページが参考になります。
http://www.ys-network.info/?p=996

このページに死んだDovecotを監視するバッチがあったのでセットします。

# vi /root/dovecot_check_restart.sh
---
#!/bin/sh

HOST='localhost'
#PORT=110
PORT=143
#HP=@$HOST:$PORT
HP=:$PORT
echo 'Checking to see if Dovecot is up...'
if ( lsof -Pni $HP -s TCP:LISTEN 2>&1 >/dev/null ); then
echo 'Dovecot is up';
else
echo 'Dovecot is down, restarting...';
/etc/init.d/dovecot restart
logger -p mail.info dovecot_check_restart.sh restarting Dovecot
fi
---
# chmod 700 dovecot_check_restart.sh
# vi /etc/crontab
---
* * * * * root /root/dovecot_check_restart.sh 2>&1 > /dev/null
---
# service crond restart

これで自動復帰するようになったDovecotですが、実際に接続して使用するとやはり途中で切断されることがしばしば・・・・

さらに調べていると「Virtual Machine Additions For Linux 2.0」で親ホストと同期するのがいいみたい

ということで

参考サイト
http://tnt-blog.at.webry.info/200801/article_3.html
http://www.microsoft.com/downloadS/details.aspx?FamilyID=bf12642f-77dc-4d45-ae4e-e1b05e0a2674&displaylang=en

まずはダウンロードした「VMAdditionsForLinux_32Bit.msi」を親ホスト(Windows Server 2003 R2)にインストールします。

インストールしたフォルダ内のISOファイル(C:\Program Files\Microsoft Virtual Server\Virtual MachineAdditions\VMAdditionsForLinux.iso)をCentOS5.5のCD-ROMにマウントします。

ここからは内部コマンドです。
# mount /dev/cdrom
mount: /etc/fstab や /etc/mtab 内に /dev/hdc を見つけられません

このコマンドだとエラーになりました。

# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
mount: ブロックデバイス /dev/cdrom は書き込み禁止です、読込み専用でマウントします

CDROM領域を作成してマウントすると読込み専用でマウントされました。

# cd /mnt/cdrom/
[root@fsmail cdrom]# ls
install.sh vmadd-kernel-module-RHEL-2.0-1.i386.rpm
vmadd-full-2.0-1.i386.rpm vmadd-scsi-2.0-1.i386.rpm
vmadd-full-RHEL-2.0-1.i386.rpm vmadd-shutdown-2.0-1.i386.rpm
vmadd-heartbeat-2.0-1.i386.rpm vmadd-timesync-2.0-1.i386.rpm
vmadd-kernel-module-2.0-1.i386.rpm vmadd-x11-2.0-1.i386.rpm

多くのRPMパッケージが入っていますね。

[root@fsmail cdrom]# ./install.sh

シェルがあったので実行してみましたが・・・・何も起きませんでした。

そこで1つずつインストール。依存関係のあったkernel-devel をUPDATE

# yum install kernel-devel
kernel-devel i686 2.6.18-194.11.1.el5 updates 5.4 M

次の順で4つのRPMパッケージをインストールしました。

# rpm -ivh vmadd-kernel-module-RHEL-2.0-1.i386.rpm
# rpm -ivh vmadd-heartbeat-2.0-1.i386.rpm
# rpm -ivh vmadd-shutdown-2.0-1.i386.rpm
# rpm -ivh vmadd-timesync-2.0-1.i386.rpm

残念.....CentOS5.5には入らないようです。

これが入ればそのまま使用と思いましたが、諦めます・・・


この記事へのトラックバック

この記事のトラックバックURL :

この記事へのコメント

この記事にコメントする

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)