手把手搭建 Mailcow 邮件服务器 + Jenkins 邮件通知,SSL证书报错一文彻底解决
·
文章目录
Mailcow介绍
Mailcow 邮件系统部署实战指南(Docker版)
Mailcow 是一套基于容器化的邮件解决方案,内部整合了 Postfix、Dovecot、Rspamd 和 SOGo 等核心组件,能够快速搭建一套完整的邮件收发与管理系统,适用于企业或实验环境。
Mailcow部署步骤。
一、环境准备
在动手之前,先确认基础环境满足要求:
- 操作系统:建议使用
Ubuntu 或 Debian - 内存:建议 ≥ 4GB(否则容易卡)
- 磁盘:至少预留 10GB
- 网络端口需开放:
- 25(SMTP)
- 80(HTTP)
- 443(HTTPS)
二、更新系统
先刷新软件列表,再把已安装的软件全部升级到最新版本
sudo apt update && sudo apt upgrade -y
三、安装 Docker(APT 方式)
直接使用系统仓库安装:
sudo apt install -y docker.io
启动并设置开机自启:
sudo systemctl enable --now docker
验证:
docker --version
四、安装 Docker Compose Plugin(新版)
sudo apt install docker-compose-plugin -y
验证:
docker compose version
五、下载 Mailcow
git clone https://github.com/mailcow/mailcow-dockerizedcd mailcow-dockerized
六、初始化并启动 Mailcow
1️⃣ 生成配置
sudo ./generate_config.sh
2️⃣ 拉取镜像
sudo docker compose pull
3️⃣ 启动服务
sudo docker compose up -d
登陆验证
以管理员登录,默认账号密码:admin/moohoo
E-mail ——> 配置 添加域名
再添加 邮箱
启动jenkins
docker run -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts jenkins/jenkins:lts
登录jenkins 配置 mailcow 邮箱自动发送邮件,在配置页面设置如下配置:


解决Jenkins报错
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
说明一件事 👉 Jenkins 里的 Java 仍然不信任 mailcow 的证书
是 SSL 证书链问题
1️⃣ 进入 Jenkins 容器
假设你的容器名字是
jenkins:sudo docker exec -it jenkins /bin/bash
现在你已经在容器里,命令行就是容器内环境。
2️⃣ 拷贝证书到容器里(如果还没拷贝)
假设宿主机上证书在
/opt/mailcow-dockerized/data/assets/ssl/cert.pem:
sudo docker cp /opt/mailcow-dockerized/data/assets/ssl/cert.pem jenkins:/tmp/mailcow.crt
容器内路径 /tmp/mailcow.crt 就是你要导入的证书。
3️⃣ 找到 Java 的 cacerts 文件
容器内执行:
JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))CACERTS="$JAVA_HOME/lib/security/cacerts"echo "JDK cacerts 路径: $CACERTS"
输出类似
/usr/lib/jvm/java-11-openjdk-amd64/lib/security/cacerts
4️⃣ 导入证书
keytool -import -trustcacerts -alias mailcow \ -file /tmp/mailcow.crt \ -keystore "$CACERTS" \ -storepass changeit
- 出现提示
Trust this certificate? [no]: 时输入 yes 回车
- 如果提示权限不足,加
sudo:
sudo keytool -import -trustcacerts -alias mailcow \ -file /tmp/mailcow.crt \ -keystore "$CACERTS" \ -storepass changeit
5️⃣ 完成后重启 Jenkins 容器
退出容器:
exit
在宿主机执行:
sudo docker restart jenkins
再次尝试发送邮件就可以了。
更多推荐




所有评论(0)