本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

mailserver2/mailserver 是一个简单且功能全面的邮件服务器,基于多个 Docker 镜像构建,提供完整的邮件收发、存储、安全防护及管理功能。该镜像源自 hardware/mailserver 项目的分支,专注于提供基础维护支持。
1.1-latest 版本中可用)适用于需要自建邮件服务器的个人、小型企业或组织,尤其适合以下场景:
| 类型 | 不含 ClamAV | 含 ClamAV |
|---|---|---|
| CPU | 1 GHz | 1 GHz |
| 内存 | 1.5 GiB | 2 GiB |
| 类型 | 不含 ClamAV | 含 ClamAV |
|---|---|---|
| CPU | 1 GHz | 1 GHz |
| 内存 | 512 MiB | 1 GiB |
建议使用干净的操作系统安装。若使用 Debian,需移除默认 MTA Exim4:
apt-get purge exim4*
确保没有其他应用占用邮件服务端口:
netstat -tulpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
若有结果,需停止或移除占用端口的应用。
若启用防火墙,需开放以下端口:
| 服务 | 软件 | 协议 | 端口 |
|---|---|---|---|
| SMTP | Postfix | TCP | 25 |
| HTTP | Nginx | TCP | 80 |
| POP3 | Dovecot | TCP | 110 |
| IMAP | Dovecot | TCP | 143 |
| HTTPS | Nginx | TCP | 443 |
| SMTPS | Postfix | TCP | 465 |
| Submission | Postfix | TCP | 587 |
| IMAPS | Dovecot | TCP | 993 |
| POP3S | Dovecot | TCP | 995 |
| ManageSieve | Dovecot | TCP | 4190 |
推荐使用 hardware/nsd-dnssec 作为带 DNSSEC 功能的权威名称服务器。
正确的 DNS 配置至关重要,需设置以下记录:
| 主机名 | 类别 | 类型 | 优先级 | 值 |
|---|---|---|---|---|
| IN | A/AAAA | 任意 | 1.2.3.4(服务器IP) | |
| spam | IN | CNAME | 任意 | mail.domain.tld. |
| webmail | IN | CNAME | 任意 | mail.domain.tld. |
| postfixadmin | IN | CNAME | 任意 | mail.domain.tld. |
| @ | IN | MX | 10 | mail.domain.tld. |
| @ | IN | TXT | 任意 | "v=spf1 a mx ip4:SERVER_IPV4 ~all" |
| {{selector}}._domainkey | IN | TXT | 任意 | "v=DKIM1; k=rsa; p=您的DKIM公钥" |
| _dmarc | IN | TXT | 任意 | "v=DMARC1; p=reject; rua=mailto:; ruf=mailto:; fo=0; adkim=s; aspf=s; pct=100; rf=afrf; sp=reject" |
注意:
mail,可通过 DKIM_SELECTOR 环境变量修改/mnt/docker/mail/dkim/domain.tld/{{selector}}.public.key 路径下找到/mnt/docker/mail/dkim/domain.tld 文件夹即可可使用以下服务审计邮件服务器配置:
推荐使用 Traefik 作为反向代理,也可使用 Nginx、Apache 等替代方案。
# 创建 Traefik 的 Docker 网络(仅 IPv4) docker network create http_network # 创建所需文件夹和文件 mkdir -p /mnt/docker/traefik/acme && cd /mnt/docker \ && curl [***] -o docker-compose.yml \ && curl [***] -o .env \ && curl [***] -o traefik/traefik.toml \ && touch traefik/acme/acme.json \ && chmod 600 docker-compose.yml .env traefik/traefik.toml traefik/acme/acme.json
编辑 .env 和 traefik.toml 文件,根据需求调整配置,然后启动所有服务:
docker-compose up -d
PostfixAdmin 是用于管理邮箱、虚拟域和别名的 Web 界面。
Rainloop 是一个简单、现代且快速的 Web 邮件客户端,支持 Sieve 脚本(过滤器和假期回复)、GPG 加密。
首次启动容器时,需要几分钟时间生成 SSL 证书(如需)、DKIM 密钥对和更新 Clamav 数据库。默认包含自签名证书,建议替换为可信证书(详见下文 SSL 证书配置)。
可用 Web 服务列表:
| 服务 | URI |
|---|---|
| Traefik 控制台 | [***] |
| Rspamd 控制台 | [***] |
| 管理界面 | [***] |
| Web 邮件客户端 | [***] |
Traefik 控制台使用基本认证(默认用户:admin,密码:12345),可使用 htpasswd 生成加密密码。Rspamd 控制台密码在 docker-compose.yml 中定义。
查看启动日志:
docker logs -f mailserver
以下是简化的 docker-compose.yml 示例:
version: '3.8' services: mailserver: image: mailserver2/mailserver:latest restart: always depends_on: - mariadb - redis environment: - DBPASS=your_secure_password - RSPAMD_PASSWORD=your_rspamd_password - DKIM_KEY_LENGTH=2048 - ENABLE_POP3=true - DISABLE_CLAMAV=false volumes: - /mnt/docker/mail:/var/mail - /mnt/docker/mail/filter:/var/spool/sieve - /mnt/docker/mail/dkim:/etc/dkim - /mnt/docker/traefik/acme:/etc/letsencrypt ports: - "25:25" - "143:143" - "587:587" - "993:993" networks: - http_network mariadb: image: mariadb:10.5 restart: always environment: - MYSQL_ROOT_PASSWORD=your_root_password - MYSQL_DATABASE=postfix - MYSQL_USER=postfix - MYSQL_PASSWORD=your_secure_password volumes: - /mnt/docker/mysql:/var/lib/mysql networks: - http_network redis: image: redis:6-alpine restart: always volumes: - /mnt/docker/redis:/data networks: - http_network traefik: image: traefik:v2.5 restart: always command: - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.letsencrypt.acme.email=***" - "--certificatesresolvers.letsencrypt.acme.storage=/acme/acme.json" ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock - /mnt/docker/traefik/acme:/acme networks: - http_network networks: http_network: external: true
| 变量 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| VMAILUID | vmail 用户 ID | 可选 | 1024 |
| VMAILGID | vmail 组 ID | 可选 | 1024 |
| VMAIL_SUBDIR | 邮箱子目录名称 | 可选 | |
| DKIM_KEY_LENGTH | DKIM RSA 密钥对长度 | 可选 | 1024 |
| DKIM_SELECTOR | DKIM 选择器 | 可选 | |
| DEBUG_MODE | 启用详细日志(postfix,dovecot,rspamd,unbound) | 可选 | false |
| PASSWORD_SCHEME | 密码加密方案 | 可选 | SHA512-CRYPT |
| DBDRIVER | 数据库类型:mysql, pgsql, ldap | 可选 | mysql |
| DBHOST | 数据库地址 | 可选 | mariadb |
| DBPORT | 数据库端口 | 可选 | 3306 / 389 (sql/ldap) |
| DBUSER | 数据库用户名 | 可选 | postfix |
| DBNAME | 数据库名称 | 可选 | postfix |
| DBPASS | 数据库密码(或密码文件路径) | 必选* | null |
| REDIS_HOST | Redis 地址 | 可选 | redis |
| REDIS_PORT | Redis 端口 | 可选 | 6379 |
| REDIS_PASS | Redis 密码(或密码文件路径) | 可选 | null |
| REDIS_NUMB | Redis 数据库编号 | 可选 | 0 |
| RSPAMD_PASSWORD | Rspamd WebUI 密码 | 必选 | null |
| ADD_DOMAINS | 额外域名(逗号分隔) | 可选 | null |
| RELAY_NETWORKS | 无需认证的中继网络 | 可选 | null |
| WHITELIST_SPAM_ADDRESSES | 垃圾邮件白名单地址 | 可选 | null |
| DISABLE_RSPAMD_MODULE | 禁用的 Rspamd 模块 | 可选 | null |
| DISABLE_CLAMAV | 禁用防病毒 | 可选 | false |
| DISABLE_SIEVE | 禁用 Sieve 协议 | 可选 | false |
| DISABLE_SIGNING | 禁用 DKIM/ARC 签名 | 可选 | false |
| DISABLE_GREYLISTING | 禁用灰名单 | 可选 | false |
| DISABLE_RATELIMITING | 禁用速率限制 | 可选 | true |
| DISABLE_DNS_RESOLVER | 禁用本地 DNS 解析器 | 可选 | false |
| DISABLE_SSL_WATCH | 禁用 SSL 证书监控 | 可选 | false |
| ENABLE_POP3 | 启用 POP3 协议 | 可选 | false |
| ENABLE_FETCHMAIL | 启用 Fetchmail | 可选 | false |
| ENABLE_ENCRYPTION | 启用 GPG 自动加密 | 可选 | false |
| FETCHMAIL_INTERVAL | Fetchmail 轮询间隔(分钟) | 可选 | 10 |
| RECIPIENT_DELIMITER | 收件人分隔符(单字符) | 可选 | + |
*DBPASS 在使用 LDAP 认证时不需要
Zeyple 从 Postfix 队列捕获邮件,若找到收件人的 GPG 公钥则自动加密,然后将加密后的邮件放回队列。
将环境变量 ENABLE_ENCRYPTION 设置为 true。公钥环存储在 /var/mail/zeyple/keys。
确保公钥已上传至 GPG 密钥服务器,然后执行:
docker exec -ti mailserver encryption.sh import-key YOUR_KEY_ID
浏览所有邮箱目录并导入对应公钥:
docker exec -ti mailserver encryption.sh import-all-keys
/mnt/docker/traefik/acme:/etc/letsencrypt将证书文件放置在 /mnt/docker/mail/ssl/ 目录,命名规则:
fullchain.pemprivkey.pemchain.pem(可选)mkdir -p /mnt/docker/mail/clamav-unofficial-sigs-v /mnt/docker/mail/clamav-unofficial-sigs:/etc/clamav-unofficial-sigs/mnt/docker/mail、数据库和 DKIM 密钥docker-compose.yml 中的镜像名称为 mailserver2/mailserver:latestdocker-compose up -d免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429