Amazon Linux更新後、dovecotのAlready address in useエラー

yum update -y コマンドでAmazon Linux(2ではありません)を更新し、

EC2 インスタンスを再起動したら、

dovecotが下記のエラーを出して、起動しなくなりました。

Starting Dovecot Imap: Error: service(pop3-login): listen(*, 110) failed: Address already in use
Error: service(imap-login): listen(*, 143) failed: Address already in use

netstat・lsof・nmapで110ポート・143ポートをいくら調べても犯人は出ませんでした。

EC2 インスタンスを再起動してからこうなったので、

もしかしたら、EC2 インスタンスのネットワークインターフェースに110ポート・143ポート使用の制約ができたか??と

疑ってもみましたが、そんなはずはないですね。

時間が経ても・また再起動しても。ググっても原因が分かりませんでした。

110・143ポートを使うPythonサンプルを動かしても同様にAddress already in useエラーが出たので、dovecotだけの問題ではないですね。

それでAmazon Linux更新前後のインスタンスを比べることにしました。

dovecot設定ファイル(dovecotだけの問題ではないですが、一応)、init.dディレクトリ配下、chkconfigなど。。。

dovecot・init.dは少し違いがあったものの、特に変わったところはありませんでした。

しかし、chkconfigの結果を比べてみたら、更新後のインスタンスにportreserveというサービスが追加されていたのです。

これをkillしたら、見事にdovecotが起動できました。

postreserveをググったら、意味は分かりましたが、あまり日常で使用されていないようですし、
(名前は分かりやすいですね。ポートの確保って...)

Amazon Linuxのリリースノートに記述がなかったので、EC2 インスタンス起動時にdovecotの起動に失敗しないよう、

下記のコマンドを実行し、portreserveが起動しないようにしておきました。

service portreserve stop
chkconfig portreserve off