Let's EncryptでメールサーバーをSSL/TLS化するときの注意

SSL証明書はいままで3~4年更新の安いものを導入していました。

私が管理する義父の会社のサーバーもそうでした。

が、今は無料でSSL化できる良い時代がやってきました。

letsencrypt.jp

未だに80や443以外のポートを使っているときにWebrootでACMEによる実在確認が出来ないという不可解があるのですが(何が悪さしているのか、ログが出てこないので切り分けが出来ない・・・)、普通に80や443のWebrootで実在確認できれば、その後もちゃんと3ヶ月の有効期限が到来する前に、cronでrenewすれば更新されます。

 

で、メールも暗号化していると、Let's Encryptはrenewで更新されているし、Apache+ブラウザもなんともないのに、メールソフトだけは「証明書の有効性が確認できませんでした」という警告が出て、メールの送受信が出来なくなります。(あ、受信しか試してなかったかも)

 

私はPostfix + Dovecotで運用しているのですが、どうもPostfixやDovectは起動時だけ証明書を読むようで(Dovecotだけだったらゴメン)、起動後は証明書の読み込みは一切行わず、起動時に読み込んだ証明書を粛々とクライアントに渡しているようで、Let's Encryptが証明書ファイルを更新しても、反映されないようです。

 

そしてローレベルな解決方法。

更新は週に1度、/etc/cron.weekly配下にリニューアルコマンドのBASHスクリプトを置いていますので、そこにPostfix + Dovecotの再起動を指示しました。

 

/etc/cron.weekly

#!/bin/sh

/usr/bin/certbot renew
/etc/init.d/dovecot restart
/etc/init.d/postfix restart 

 

これで、強制的に反映されるでしょう。

再起動しなくて良い、もっとスマートな解決方法ないかしら?(証明書を買うという方法はナシで)