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

再次尝试发送邮件就可以了。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐