テックラボ

dovecotが起動できない(Address already in use)

Linuxをインストールして一通りの設定が済み、再起動した際にIMAPとPOP3サーバのDovecotが起動しなった時の解決策です。

下記では、Dovecotを起動させようとして、「listen(993) failed: Address already in use」といったエラーが表示されています。

# /sbin/service dovecot start
Dovecot Imap を起動中: Fatal: listen(993) failed: Address already in use

Dovecotのポート993がすでに使われているというエラー内容です。lsof(LiSt Open File)コマンドで、993番ポートを使っているプロセスを調べることができます。

/usr/sbin/lsof -i :993
COMMAND	PID	USER   FD   TYPE DEVICE SIZE NODE NAME
rpc.statd 4627 rpcuser	7u  IPv4  10672	   TCP *:imaps (LISTEN)

rpc.statdが993番ポートを使っているようなので、まずはrpc.statdを起動しているサービスを調べます。

# grep rpc.statd /etc/init.d/*
/etc/init.d/nfslock:	[ -x /sbin/rpc.statd ] || exit 5
/etc/init.d/nfslock:	# Make sure the rpc.statd is not already running.
/etc/init.d/nfslock:	if status rpc.statd > /dev/null ; then
/etc/init.d/nfslock:	daemon rpc.statd "$STATDARG"
/etc/init.d/nfslock:	killproc rpc.statd
/etc/init.d/nfslock:	status rpc.statd
/etc/init.d/nfslock:	/sbin/pidof rpc.statd >/dev/null 2>&1; STATD="$?"

上記の出力内容からnfslockがrpc.statdを起動していることがわかりました。サービスを停止し、自動起動しないように変更する必要があります。

nfslockを停止し、自動起動しないように設定します。

# /sbin/service nfslock stop
# /sbin/chkconfig nfslock off

chkconfigでnfslockの状態を確認します。

# /sbin/chkconfig --list nfslock
nfslock		 0:off   1:off   2:off   3:off   4:off   5:off   6:off

以上でnfslockが停止し、次回からは自動起動もしません。
あとはDovecotを起動して終了です。

# /sbin/service dovecot start

関連記事