Docker Mailserver 是一个生产就绪的全栈邮件服务器解决方案,专为简化邮件服务器的部署和管理而设计。它将 Postfix、Dovecot、SpamAssassin、ClamAV 等多个组件整合在一个 Docker 容器中,提供完整的邮件服务功能。
核心特性
邮件服务功能
- SMTP 服务器:基于 Postfix 的可靠邮件传输
- IMAP/POP3 服务器:基于 Dovecot 的邮件访问服务
- 安全传输:支持 TLS/SSL 加密连接
- 邮件认证:支持 SASL 认证机制
- 虚拟用户:支持虚拟域名和用户管理
- 邮件转发:灵活的邮件转发和别名配置
安全防护
- 反垃圾邮件:集成 SpamAssassin 过滤垃圾邮件
- 反病毒扫描:集成 ClamAV 病毒扫描引擎
- SPF/DKIM/DMARC:完整的邮件身份验证支持
- Fail2ban:自动封禁恶意 IP 地址
- 灰名单:Postgrey 灰名单机制
- 速率限制:防止邮件服务器被滥用
管理特性
- 配置文件驱动:仅需配置文件,无需 SQL 数据库
- Docker 原生:专为容器化环境设计
- 自动化脚本:提供便捷的管理脚本
- 日志管理:详细的日志记录和监控
- 备份友好:简单的数据备份和恢复
- 多域名支持:支持管理多个邮件域名
技术架构
核心组件
- Postfix:SMTP 邮件传输代理
- Dovecot:IMAP/POP3 邮件检索代理
- SpamAssassin:垃圾邮件过滤引擎
- ClamAV:开源反病毒引擎
- Amavis:邮件内容过滤框架
- Fail2ban:入侵防护系统
- Postgrey:灰名单实现
- OpenDKIM:DKIM 签名验证
支持的协议
- SMTP/SMTPS:邮件发送协议
- IMAP/IMAPS:邮件访问协议
- POP3/POP3S:邮件下载协议
- ManageSieve:邮件过滤规则管理
部署要求
系统要求
- 操作系统:支持 Docker 的 Linux 发行版
- 内存:最少 1GB RAM(推荐 2GB+)
- 存储:10GB+ 可用空间
- 网络:公网 IP 地址和域名
- 端口:25, 143, 465, 587, 993, 995
网络配置
- DNS 记录:配置 MX、A、AAAA 记录
- SPF 记录:配置发送方策略框架
- DKIM 记录:配置 DomainKeys 识别邮件
- DMARC 记录:配置域名消息认证报告一致性
- 反向 DNS:配置 PTR 记录
Docker Compose 部署示例
version: '3.8'
services:
mailserver:
image: ghcr.io/docker-mailserver/docker-mailserver:latest
container_name: mailserver
hostname: mail.example.com
env_file: mailserver.env
volumes:
- ./docker-data/dms/mail-data/:/var/mail/
- ./docker-data/dms/mail-state/:/var/mail-state/
- ./docker-data/dms/mail-logs/:/var/log/mail/
- ./docker-data/dms/config/:/tmp/docker-mailserver/
- /etc/localtime:/etc/localtime:ro
ports:
- "25:25" # SMTP (explicit TLS => STARTTLS)
- "143:143" # IMAP4 (explicit TLS => STARTTLS)
- "465:465" # ESMTP (implicit TLS)
- "587:587" # ESMTP (explicit TLS => STARTTLS)
- "993:993" # IMAP4 (implicit TLS)
restart: always
stop_grace_period: 1m
cap_add:
- NET_ADMIN
healthcheck:
test: "ss -lntp state listening | grep -P ':(25|143|465|587|993)\\b'"
timeout: 3s
retries: 0
环境配置文件示例 (mailserver.env)
# 基本配置
OVERRIDE_HOSTNAME=mail.example.com
[email protected]
# SSL/TLS 配置
SSL_TYPE=manual
SSL_CERT_PATH=/var/mail-state/manual-ssl/cert
SSL_KEY_PATH=/var/mail-state/manual-ssl/key
# 安全特性
SPOOF_PROTECTION=1
ENABLE_SPAMASSASSIN=1
ENABLE_CLAMAV=1
ENABLE_FAIL2BAN=1
ENABLE_POSTGREY=1
# DKIM 配置
ENABLE_OPENDKIM=1
OPENDKIM_KEY_LENGTH=2048
# 用户认证
ENABLE_SASLAUTHD=0
SASLAUTHD_MECHANISMS=rimap
SASLAUTHD_MECH_OPTIONS=127.0.0.1
# 其他设置
ONE_DIR=1
DMS_DEBUG=0
用户管理
添加用户账户
# 使用管理脚本添加用户
./setup.sh email add [email protected] password123
# 添加邮件别名
./setup.sh alias add [email protected] [email protected]
# 列出所有用户
./setup.sh email list
域名配置
# 添加新域名
echo "example.com" >> docker-data/dms/config/postfix-virtual-mailbox-domains
# 配置域名邮箱
echo "[email protected] example.com/user/" >> docker-data/dms/config/postfix-virtual-mailbox-maps
安全配置
SSL/TLS 证书
- Let's Encrypt:使用 Certbot 自动申请和续期证书
- 自签名证书:用于测试环境
- 商业证书:用于生产环境
防火墙配置
# 开放必要端口
ufw allow 25/tcp # SMTP
ufw allow 143/tcp # IMAP
ufw allow 465/tcp # SMTPS
ufw allow 587/tcp # SMTP Submission
ufw allow 993/tcp # IMAPS
DNS 安全记录
; SPF Record
example.com. IN TXT "v=spf1 mx ~all"
; DMARC Record
_dmarc.example.com. IN TXT "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
; DKIM Record
mail._domainkey.example.com. IN TXT "v=DKIM1; h=sha256; k=rsa; p=PUBLIC_KEY_HERE"
监控与维护
日志监控
- 邮件日志:
/var/log/mail/mail.log - 认证日志:
/var/log/mail/mail.info - 错误日志:
/var/log/mail/mail.err - 垃圾邮件日志:SpamAssassin 详细分析日志
健康检查
# 检查服务状态
docker exec mailserver supervisorctl status
# 测试邮件发送
echo "Test mail" | mail -s "Test Subject" [email protected]
# 检查队列状态
docker exec mailserver postqueue -p
备份策略
# 备份邮件数据
tar -czf mailserver-backup.tar.gz docker-data/dms/
# 备份配置文件
cp -r docker-data/dms/config/ config-backup/
常见问题解决
邮件被拒收
- 检查 DNS 记录配置
- 验证 SPF/DKIM/DMARC 设置
- 确认 IP 地址未被列入黑名单
- 检查反向 DNS 解析
性能优化
- 调整 Postfix 并发连接数
- 优化 ClamAV 内存使用
- 配置适当的磁盘 I/O 调度
- 启用邮件压缩功能
适用场景
- 小型企业:企业内部邮件系统
- 个人用户:私有邮件服务器
- 开发测试:应用程序邮件测试环境
- 教育机构:学校邮件系统
- 托管服务:邮件托管服务提供商
优势特点
相比传统邮件服务器
- ✅ 配置简化,无需复杂的数据库设置
- ✅ 容器化部署,易于迁移和扩展
- ✅ 集成完整的安全防护功能
- ✅ 活跃的社区支持和文档
相比云邮件服务
- ✅ 完全掌控数据和隐私
- ✅ 无月度订阅费用
- ✅ 自定义配置和功能扩展
- ✅ 不受第三方服务限制
Docker Mailserver 为需要自托管邮件服务的用户提供了一个强大、安全且易于管理的解决方案。其完整的功能集和容器化架构使其成为现代邮件服务器部署的理想选择。
发现更多
1time
Zero-knowledge one-time secret sharing. End-to-end encrypted, self-hosted, open source.
4ga Boards
Straightforward realtime kanban boards management for intuitive task tracking. Featuring an elegant dark mode, collapsible todo lists, and multitasking tools to supercharge your team's productivity.
AFFiNE Community Edition
There can be more than Notion and Miro. AFFiNE(pronounced [ə‘fain]) is a next-gen knowledge base that brings planning, sorting and creating all together. Privacy first, open-source, customizable and ready to use.
ANALOG
A minimal analytics tool to self-host.
Activepieces
No-code business automation tool like Zapier or Tray. For example, you can send a Slack notification for each new Trello card.
Actual
Local-first personal finance tool based on zero-sum budgeting, supporting synchronization across devices, custom rules, manual transaction importing (from QIF, OFX, and QFX files), and optional automatic synchronization with many banks.