共计 1303 个字符,预计需要花费 4 分钟才能阅读完成。
本站提供 Linux 服务器运维,自动化脚本编写等服务,如有需要请联系博主微信:xiaozme
这是 mailcow 自建邮局系列的第二篇教程,对自建邮局感兴趣的朋友可以参考我的上一篇文章《使用 Docker 部署 mailcow,自建邮局服务 》,出于网络传输安全考虑,有必要对邮局启用TLS/SSL
加密,这时候就需要用到 SSL 证书。
mailcow 自动申请 SSL 证书
mailcow 部署完毕后会自动使用 ACME 申请 SSL 证书,但前提是您使用的默认 WEB 端口80
(Let’s Encrypt 验证需要),如果非默认端口,则无法申请。也或者其它原因(如网络原因)可能导致申请失败。
由于 xiaoz 并未使用默认的 80 端口,因此就无法使用 mailcow 的自动 SSL 证书申请,我们也可以自行申请 SSL 证书后部署到 mailcow,这样更加靠谱。
申请 SSL 证书
上一篇文章提到,如果您主机名设置为mail.domain.com
,那么去申请 SSL 证书的时候也需要用这个域名(注意是二级域名,不是顶级域名),申请 SSL 证书这篇文章不做详细介绍。目前腾讯云、阿里云均提供免费的 DV SSL 证书,可以参考:
使用自己的 SSL 证书
xiaoz 使用的是腾讯云免费 SSL 证书,申请完毕后下载 Nginx 的格式保存到本地。里面应该有 4 个文件,不过我们只会用到 .crt
和.key
这两个后缀结尾的文件。
然后将 .crt
后缀的文件命名为 cert.pem
, 将.key
后缀的文件命名为 key.pem
并上传到 mailcow 目录下的 data/assets/ssl
目录进行替换。
注意:替换前可以将原来的文件备份,另外不要使用软连接。
然后修改 mailcown.conf
这个配置文件,将:
SKIP_LETS_ENCRYPT=n
修改为
SKIP_LETS_ENCRYPT=y
最后重启受影响的 3 个容器:
docker restart $(docker ps -qaf name=postfix-mailcow)
docker restart $(docker ps -qaf name=nginx-mailcow)
docker restart $(docker ps -qaf name=dovecot-mailcow)
验证
输入下面的命令查看和验证 SSL 证书是否有效:
# 验证 SMTP TLS 端口
echo "Q" | openssl s_client -starttls smtp -crlf -connect mail.domain.com:587
#验证 IMAP 端口
echo "Q" | openssl s_client -starttls imap -showcerts -connect mail.domain.com:143
#验证 HTTPS
echo "Q" | openssl s_client -connect mail.domain.com:443
注意:请将 mail.domain.com
改成你自己的域名。
此文部分内容参考了官方文档:https://mailcow.github.io/mailcow-dockerized-docs/post_installation/firststeps-ssl/