やらかし記事です
趣味開発している「ProjectRIDE」というサイトのメールサーバーはDocker Mail Serverを利用して構築していますが、こちらの証明書更新を忘れていて、いつの間にかメール送信不可になっていました
エラーメッセージ
たしかこのようなメッセージが表示されていたかと思います
TLS handshake failed for serviceパスワードリセットなどでメールを飛ぶようにしているのですが、いつまでもメールが送信されないなぁと思って調べてみたら、上記のメッセージが表示されていました
Docker Mail Serverは構築手順にLet’s Encryptを利用した証明書の準備が含まれているのですが、何を勘違いしたのか「証明書は自動更新される」と勘違いしていました。実際には自動更新はされず、期限切れまでに証明書を再作成(更新)する必要があります
今回はCronで対応することにした
似たような質問がGitHubにありました
https://github.com/docker-mailserver/docker-mailserver/issues/656
自分はDockerを利用してLet’s Encryptを利用しているので、CronからDockerコンテナを起動するように設定しました
(上記のISSUEにもDockerコンテナを利用した設定例が書いてあります)
実際には、12/15にCronの実行が行われるので、その時にきちんと証明書が更新されるかは要チェックです
以上
ということで、Docker Mail Serverでメールが飛ばなくなってしまったお話でした
別途、Traefikを利用しており、そちらは証明書自動更新なので期限切れを意識していなかったのですが、Docker Mail Serverはじめ、MySQLやOpenSearchなどでも証明書は利用しているので、意外と証明書を利用している箇所が多くありました
それぞれの証明書が期限切れにならないように、きちんと管理する必要がありそうですね