如何让 dovecot 以最小的影响重新加载 SSL 证书

如何让 dovecot 以最小的影响重新加载 SSL 证书

我无法找到有关如何强制 Dovecot 在更新证书时重新读取证书的任何文档。

目前我正在做

 /bin/systemctl restart dovecot

有人知道这是否会导致重启期间中断,或者 dovecot 是否会彻底终止旧会话并允许使用新配置启动新会话?有人能建议强制 dovecot 重新加载其 SSL 证书的最佳做法吗?

答案1

只需重新加载即可。没有理由重新启动并中断所有人的服务。

systemctl reload dovecot

答案2

如果您使用 letsencrypt,则可以添加部署挂钩,以便在 certbot 更新您的证书时自动执行此操作。部署挂钩位于:

/etc/letsencrypt/renewal-hooks/deploy/

创建一个文件(名称无所谓——我将我的命名为reload-dovecot),内容如下:

#!/bin/sh
do
if [ "$domain" = mail.example.com ]
then
systemctl reload dovecot
fi
done

替换mail.example.com为您的邮件服务器的实际名称。确保文件设置为可执行文件。

您可能想要创建一个类似的脚本来重新加载 postfix。

有关 dovecot 的答案取自此处:https://www.xhalford.com/using-hook-scripts-with-certbot/#:~:text=Luckily%2C%20Certbot%20comes%20with%20the,renewal%2Dhooks%2Fdeploy%2F%20

您还可以使用 certbot 本身来创建钩子:

sudo certbot renew --force-renewal --deploy-hook "postfix reload; service dovecot reload"

请参阅此处的话题:https://community.letsencrypt.org/t/certbot-dovecot-postfix-certificate-renewal-issue/72226/11

注意:线程中的示例使用service postfix reload- 这对我来说在 Ubuntu 20.x 上不起作用。

答案3

脚本代码如下@z0lo 的回答无法正常工作。以下是可以正常工作的更新版本(必须mail.example.com用您的邮件服务器替换它):

#!/bin/sh
if [ "$RENEWED_DOMAINS" = "mail.example.com" ]
then
    systemctl reload dovecot
fi

相关内容