以下是在 Dovecot 設定使用 Let’s Encrypt, 替 POP3 及 IMAP 加密的步驟。
如果安裝 Dovecot 的系統已經安裝了 HTTPD Server, 執行以下指令:
|
1 |
# certbot certonly --webroot -w /var/www/html -d mail.mydomain.com |
上面的 /var/www/html 要改成 httpd server 的網頁目錄,而 mail.mydomain.com 則要改成主機名稱,如果要加入多個主機名,在後面加入 -d domain 即可。
如果沒有安裝 httpd server, 可以用 certbot 提供的 standalone 選項:
|
1 |
# certbot certonly --standalone -d mail.mydomain.com |
執行上面指令後,SSL 憑證便會儲存在 /etc/letsencrypt/live/mail.mydomain.com/ 目錄下,開啟 Dovecot 的 ssl 設定檔 /etc/dovecot/conf.d/10-ssl.conf:
將 ssl_cert 及 ssl_key 設定成剛剛取得的憑證,注意路徑前面加入入 “
|
1 2 |
ssl_cert = </etc/letsencrypt/live/mail.mydomain.com/fullchain.pem ssl_key = </etc/letsencrypt/live/mail.mydomain.com/privkey.pem |
儲存檔案後,重新啟動 Dovecot:
最後設定自動 renew SSL 憑證
Let’s Encrypt 憑證目前的有效期只有 3 個月,在憑證到期前 1 個月可以 renew以下設定自動 renew 憑證,以下是更新憑證的指令:
|
1 |
certbot renew --quiet --agree-tos --post-hook "systemctl restart dovecot" |
以上指令會自動更新所有 SSL 憑證,如果成功更新,會執行 “systemctl restart dovecot” 這條指令,讓 Dovecot 重新載入新憑證。
為了日後方便管理,建立一個 renew SSL 的 Shell Script:
加入以下內容:
|
1 2 |
#!/bin/sh /usr/bin/certbot renew --quiet --agree-tos --post-hook "systemctl restart dovecot" |
然後把上面 Shell Script 加入可執行權限及放到 crontab:
加入 crontab
加入以下一行:
|
1 |
0 3 * * * /root/renew.sh > /dev/null 2>&1 |
這樣 certbot 便會在每天凌晨 3:00 自動檢查及更新憑證。