当前位置: 首页 > Linux运维 > mailcow使用自己的SSL证书(二)

mailcow使用自己的SSL证书(二)

发布于:2022-8-16 Linux运维 4条评论 11,779 views
本站提供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/


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


已有4条评论


  1. 我部署了一次后,mailcow自动申请的来此证书是可以的。
    我重装了系统,
    再次部署,那个证书不能用了。

    这是 申请证书的 错误日志

    2025/02/12 17:16:47 mail.szshuttle.cn – Some errors occurred, retrying in 30 minutes…
    2025/02/12 17:16:47 mail.szshuttle.cn – Failed to obtain certificate /var/lib/acme/mail.szshuttle.cn/cert.pem for domains ‘mail.szshuttle.cn autoconfig.szshuttle.cn autodiscover.szshuttle.cn’
    2025/02/12 17:16:47 mail.szshuttle.cn – UGFyc2luZyBhY2NvdW50IGtleS4uLgpQYXJzaW5nIENTUi4uLgpGb3VuZCBkb21haW5zOiBtYWlsLnN6c2h1dHRsZS5jbiwgYXV0b2Rpc2NvdmVyLnN6c2h1dHRsZS5jbiwgYXV0b2NvbmZpZy5zenNodXR0bGUuY24KR2V0dGluZyBkaXJlY3RvcnkuLi4KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi91c3IvYmluL2FjbWUtdGlueSIsIGxpbmUgOCwgaW4gPG1vZHVsZT4KICAgIHN5cy5leGl0KG1haW4oKSkKICAgICAgICAgICAgIF5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9hY21lX3RpbnkucHkiLCBsaW5lIDE5NSwgaW4gbWFpbgogICAgc2lnbmVkX2NydCA9IGdldF9jcnQoYXJncy5hY2NvdW50X2tleSwgYXJncy5jc3IsIGFyZ3MuYWNtZV9kaXIsIGxvZz1MT0dHRVIsIENBPWFyZ3MuY2EsIGRpc2FibGVfY2hlY2s9YXJncy5kaXNhYmxlX2NoZWNrLCBkaXJlY3RvcnlfdXJsPWFyZ3MuZGlyZWN0b3J5X3VybCwgY29udGFjdD1hcmdzLmNvbnRhY3QsIGNoZWNrX3BvcnQ9YXJncy5jaGVja19wb3J0KQogICAgICAgICAgICAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9hY21lX3RpbnkucHkiLCBsaW5lIDEwNSwgaW4gZ2V0X2NydAogICAgZGlyZWN0b3J5LCBfLCBfID0gX2RvX3JlcXVlc3QoZGlyZWN0b3J5X3VybCwgZXJyX21zZz0iRXJyb3IgZ2V0dGluZyBkaXJlY3RvcnkiKQogICAgICAgICAgICAgICAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogIEZpbGUgIi91c3IvbGliL3B5dGhvbjMuMTIvc2l0ZS1wYWNrYWdlcy9hY21lX3RpbnkucHkiLCBsaW5lIDQ2LCBpbiBfZG9fcmVxdWVzdAogICAgcmFpc2UgVmFsdWVFcnJvcigiezB9OlxuVXJsOiB7MX1cbkRhdGE6IHsyfVxuUmVzcG9uc2UgQ29kZTogezN9XG5SZXNwb25zZTogezR9Ii5mb3JtYXQoZXJyX21zZywgdXJsLCBkYXRhLCBjb2RlLCByZXNwX2RhdGEpKQpWYWx1ZUVycm9yOiBFcnJvciBnZXR0aW5nIGRpcmVjdG9yeToKVXJsOiBodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvZGlyZWN0b3J5CkRhdGE6IE5vbmUKUmVzcG9uc2UgQ29kZTogTm9uZQpSZXNwb25zZTogPHVybG9wZW4gZXJyb3IgW0Vycm5vIC0zXSBUcnkgYWdhaW4+Cg==
    2025/02/12 17:16:45 mail.szshuttle.cn – Using command acme-tiny –account-key /var/lib/acme/acme/account.pem –disable-check –csr /var/lib/acme/mail.szshuttle.cn/acme.csr –acme-dir /var/www/acme/
    2025/02/12 17:16:45 mail.szshuttle.cn – Resolver OK

      1. 感谢回复,是的,昨天遇到这个问题后,本来今天打算看你的文章尝试手动搞个证书,结果打开一看,证书获取成功了,昨天部署了 mailcow 后,它就一直获取证书失败,然后半小时重试一次。 直到昨天八九点,获取成功,我猜测是来此加密和 时区啥的的问题,我六点下班后就没动了,自己完成的,还有就是我昨天用谷歌访问的时候,谷歌浏览器提示说啥被攻击啥的,然后会自己修复。但我看不像被攻击,那些杀毒进程等等也没打日志。

        1. 另外我在 mailcow 的开源社区查询发现也有网友遇到这个问题 Failed to obtain certificate , 看了底下回答也是说让手动搞个证书