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