aaPanel/Billion-Mail 邮件系统 Docker 部署详解
2025-07-07 06:10:01作者:温艾琴Wonderful
项目概述
Billion-Mail 是一个基于 Docker 容器化技术的邮件服务器解决方案,集成了完整的邮件服务组件栈。通过 docker-compose.yml 文件可以一键部署包含数据库、缓存、反垃圾邮件、邮件传输代理和 Web 邮件客户端等完整服务。
核心服务组件
1. PostgreSQL 数据库服务 (pgsql-billionmail)
作为整个邮件系统的数据存储核心,使用 PostgreSQL 17.4-alpine 镜像,具有以下特点:
- 数据持久化:通过挂载
./postgresql-data
目录确保数据安全 - 环境变量配置:数据库名称、用户和密码通过环境变量注入
- 网络隔离:使用专用网络
billionmail-network
并设置别名pgsql
- 端口映射:默认绑定到本地 25432 端口,可通过环境变量
SQL_PORT
自定义
2. Redis 缓存服务 (redis-billionmail)
采用 Redis 7.4.2-alpine 镜像,为系统提供高性能缓存支持:
- 自定义启动脚本:通过
redis-conf.sh
进行初始化配置 - 内存优化:设置
net.core.somaxconn=4096
提高连接数上限 - 密码保护:通过
REDISPASS
环境变量设置访问密码
3. Rspamd 反垃圾邮件服务 (rspamd-billionmail)
使用定制镜像 billionmail/rspamd:1.1 提供专业的垃圾邮件过滤:
- 依赖 Redis 服务进行数据存储和共享
- 配置目录挂载:允许自定义过滤规则和统计配置
- 日志持久化:将日志输出到宿主机目录便于分析
4. Dovecot IMAP/POP3 服务 (dovecot-billionmail)
基于 billionmail/dovecot:1.4 镜像提供邮件访问协议支持:
- 资源限制优化:设置文件描述符和进程数上限
- 多协议支持:默认开放 IMAP(143)、IMAPS(993)、POP3(110) 和 POPS(995) 端口
- 安全增强:使用
NET_BIND_SERVICE
能力绑定特权端口 - 邮件存储:挂载
/var/vmail
目录持久化用户邮件数据
5. Postfix SMTP 服务 (postfix-billionmail)
使用 billionmail/postfix:1.5 镜像作为邮件传输代理:
- 端口配置:支持 SMTP(25)、SMTPS(465) 和 Submission(587) 端口
- 数据库集成:通过 PostgreSQL 存储虚拟邮箱和别名信息
- 安全配置:与 Rspamd 集成实现垃圾邮件过滤
6. Roundcube Webmail (webmail-billionmail)
基于官方 roundcube/roundcubemail:1.6.10-fpm-alpine 镜像:
- 数据库配置:自动连接 PostgreSQL 数据库
- 邮件服务集成:预设连接 Dovecot 和 Postfix 服务
- 配置文件挂载:支持自定义 Web 邮件界面设置
7. 核心管理服务 (core-billionmail)
使用 billionmail/core:3.2.1 镜像提供统一管理界面:
- 系统监控:通过 Docker API 监控各服务状态
- 安全防护:集成 Fail2ban 防止暴力攻击
- Web 服务:提供 80 和 443 端口的 HTTP/HTTPS 访问
网络配置
系统创建专用桥接网络 billionmail-network
:
- 自定义子网:默认使用 172.66.1.0/24 网段,可通过
IPV4_NETWORK
环境变量修改 - 网络别名:每个服务都有简短的网络别名便于内部通信
- 桥接名称:固定为
br-billionmail
便于识别和管理
部署建议
-
环境准备:
- 确保宿主机已安装 Docker 和 Docker Compose
- 准备足够的磁盘空间用于邮件存储
-
配置调整:
- 修改
.env
文件设置数据库凭证和邮件域名 - 根据实际需求调整各服务端口映射
- 修改
-
安全建议:
- 定期备份 PostgreSQL 数据和邮件存储目录
- 为 Redis 和数据库设置强密码
- 考虑配置 TLS 证书增强通信安全
-
性能优化:
- 根据邮件量调整 Dovecot 和 Postfix 的资源限制
- 监控 Redis 内存使用情况
常见问题处理
-
服务启动顺序:
- 数据库和 Redis 会首先启动
- 其他服务通过
depends_on
确保依赖服务就绪
-
日志查看:
- 各服务日志分别存储在
./logs
子目录中 - 可通过
docker-compose logs
命令查看实时日志
- 各服务日志分别存储在
-
数据迁移:
- 备份
postgresql-data
和vmail-data
目录即可保留所有数据 - 恢复时确保目录权限正确
- 备份
通过这套 Docker Compose 配置,Billion-Mail 实现了邮件服务各组件的标准化部署和统一管理,大大简化了复杂邮件系统的搭建和维护工作。