Hyper-V環境のLinuxでDovecotが予期せず停止する (Dovecotが頻繁に落ちる)

Hyper-V環境のLinuxでDovecotが予期せず停止することがあります。原因のうち最も多いのは、システム時間が大幅にずれたため、Dovecotが停止してしまうものです。システム時間が大幅にずれないよう、以下の対応をするとこの現象を回避できます。

ntpdによる時刻同期

ntpdを起動して時刻を同期させます。ntpdによる時刻の同期はこちらの記事を参照してください。

タイマー割り込み間隔を延ばす

Hyper-V環境では頻繁なタイマー割り込みはシステム時間の遅延につながるため、タイマー割り込みの間隔を延ばします。設定についてはこちらの記事を参照してください。

時刻の同期がされているかの確認

ntpdが時刻を同期しているか確認します。手順はこちらの記事を参照してください。

Dovecotが停止している場合に自動起動させる

さらに安全策として、Dovecotが停止していた場合にはDovecotを起動するスクリプトを定期的に実行するようにします。
(参考URL http://wiki.dovecot.org/TimeMovedBackwards)

スクリプト (/etc/dovecot-check.sh)

#!/bin/sh

LSOF=/usr/sbin/lsof
LOGGER=/usr/bin/logger

HOST='localhost'
PORT=110
#PORT=143
#HP=@$HOST:$PORT
HP=:$PORT
echo 'Checking to see if Dovecot is up...'
if ( $LSOF -Pni $HP | grep "$PORT (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

crontab

crontab -e
コマンドでcrontab編集モードにして以下を記述します。
* * * * * /etc/dovecot-check.sh 2>&1 > /dev/null

cron.hourlyを使う場合

cron.hourlyを使う場合は、dovecot-check.shを /etc/cron.hourlyディレクトリに配置して一時間に1回実行させるようにしても良いです。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
最終更新日: 2024-01-06
作成日: 2011-05-12
iPentec all rights reserverd.