 的轻量级Docker镜像(压缩后242Mb),集成mailman2、exim4邮件服务器和apache2 Web服务器,旨在提供稳定、便捷的邮件列表管理解决方案,支持通过Web界面创建和管理邮件列表。
Debian buster是仍提供mailman2软件包的最新Debian版本,本镜像利用这一特性,提供了包含邮件列表管理(mailman2)、邮件传输(exim4)和Web管理界面(apache2)的一体化容器,适合快速部署自用或组织级邮件列表服务。
推荐从Docker Hub拉取预构建镜像:
shdocker pull d3fk/mailman2
d3fk/mailman2:latest:自动构建(代码仓库更新或每周触发),包含最新安全修复和功能更新d3fk/mailman2:stable:基于稳定版本构建,代码冻结,适合生产环境Docker Hub仓库地址:[***]
通过环境变量自定义容器行为,常用变量如下:
| 变量名 | 描述 | 默认值 |
|---|---|---|
URL_HOST | Web界面访问域名(用于URL生成) | - |
EMAIL_HOST | 邮件列表域名(用于生成列表地址) | - |
MASTER_PASSWORD | 邮件列表管理员主密码 | "example" |
LIST_ADMIN | 列表管理员***地址(用于创建管理员账户) | - |
LIST_LANGUAGE_CODE | 默认语言代码 | "en"(英语) |
URL_ROOT | Web界面根路径(避免被爬虫识别),需以/结尾,空字符串表示根目录 | "lists/" |
URL_PATTERN | Web访问协议,可选"http"或"https" | "http" |
SSL_FROM_CONTAINER | 是否由容器提供HTTPS(启用mod_ssl并自动重定向80→443),字符串布尔值 | "false" |
SSL_SELFSIGNED | 当SSL_FROM_CONTAINER=true时,是否生成自签名证书(false则使用现有证书) | "false" |
ENABLE_SPF_CHECK | 是否启用SPF检查(防止邮件身份伪造),字符串布尔值 | "false" |
以下是基本部署命令,需根据实际DNS配置修改环境变量:
shdocker run --rm -d --name mailman \ --add-host mails.example.com:127.0.0.1 \ # 将EMAIL_HOST映射到本地 --hostname mails.example.com \ # 设置容器主机名(影响exim配置) -p 80:80 -p 25:25 -p 465:465 \ # 映射端口(根据需求调整) -e URL_HOST=lists.example.com \ # Web访问域名 -e EMAIL_HOST=mails.example.com \ # 邮件域名 -e LIST_ADMIN=*** \ # 管理员*** -e MASTER_PASSWORD="your_secure_password" \ # 管理员主密码 d3fk/mailman2
部署后查看容器日志,获取DKIM公钥和DNS配置信息:
shdocker logs mailman
日志末尾会显示DKIM TXT记录,需添加到DNS解析以启用DKIM验证。
为确保邮件正常发送和接收,需配置以下DNS记录:
| 记录类型 | 名称 | 内容说明 |
|---|---|---|
| A | URL_HOST | 指向容器所在服务器IP,用于Web界面访问 |
| A | EMAIL_HOST | 若URL_HOST与EMAIL_HOST不同,需单独配置A记录指向服务器IP |
| PTR | 服务器IP | 反向解析至EMAIL_HOST,用于邮件服务器身份验证 |
| MX | 域名 | 优先级最高的MX记录指向EMAIL_HOST,声明其为邮件接收服务器 |
| TXT | default._domainkey.EMAIL_HOST | DKIM公钥记录(从容器日志获取) |
| TXT | 域名 | SPF记录,例如:v=spf1 mx -all(允许MX记录指定的服务器发送邮件) |
| TXT | _dmarc.域名 | DMARC记录,例如:v=DMARC1; p=quarantine; sp=quarantine; adkim=s; aspf=s |
容器默认定义以下卷用于持久化关键数据,可通过Docker命名卷或主机目录挂载实现数据持久化:
| 卷路径 | 用途说明 |
|---|---|
/var/log/mailman | mailman日志 |
/var/log/exim4 | exim4邮件服务器日志 |
/var/log/apache2 | apache2 Web服务器日志 |
/var/lib/mailman/archives | 邮件列表归档数据 |
/var/lib/mailman/lists | 邮件列表配置和成员数据 |
/etc/exim4/tls.d | DKIM证书和TLS配置 |
持久化示例(使用主机目录挂载):
shdocker run --rm -d --name mailman \ --add-host mails.example.com:127.0.0.1 \ --hostname mails.example.com \ -p 80:80 -p 443:443 -p 25:25 \ -e URL_HOST=lists.example.com \ -e EMAIL_HOST=mails.example.com \ -e LIST_ADMIN=*** \ -e MASTER_PASSWORD="secure_pw" \ -e URL_PATTERN="https" \ -e SSL_FROM_CONTAINER="true" \ -e SSL_SELFSIGNED="true" \ -v $(pwd)/mailman-lists:/var/lib/mailman/lists \ # 挂载邮件列表数据 -v $(pwd)/dkim-cert:/etc/exim4/tls.d \ # 挂载DKIM证书 d3fk/mailman2
容器支持三种HTTPS配置方式:
外部HTTPS终结(推荐)
URL_PATTERN="https" + SSL_FROM_CONTAINER="false",由反向代理/负载均衡器(如Nginx、Traefik)管理SSL证书,容器通过HTTP与代理通信。
容器自签名证书
URL_PATTERN="https" + SSL_FROM_CONTAINER="true" + SSL_SELFSIGNED="true",容器自动生成自签名证书(适合测试,生产环境不推荐)。
自定义SSL证书
URL_PATTERN="https" + SSL_FROM_CONTAINER="true" + SSL_SELFSIGNED="false",通过卷挂载自定义证书至容器:
sh-v /path/to/your/cert.pem:/etc/ssl/certs/ssl-cert-snakeoil.pem \ -v /path/to/your/key.pem:/etc/ssl/private/ssl-cert-snakeoil.key \
容器暴露以下端口,可根据需求映射至主机:
| 容器端口 | 用途 | 建议映射场景 |
|---|---|---|
| 80 | HTTP Web界面 | 未启用HTTPS时使用 |
| 443 | HTTPS Web界面 | 启用容器HTTPS或自定义证书时 |
| 25 | SMTP(邮件接收) | 需开放至互联网以接收外部邮件 |
| 465 | SMTPS(TLS直连) | 用于客户端TLS加密发送邮件 |
| 587 | SMTPS(标准提交端口) | 替代465的标准加密邮件端口 |
代码仓库提供compose.yaml模板,可通过环境变量文件(.env)配置参数:
yaml# compose.yaml示例 version: '3' services: mailman: image: d3fk/mailman2 container_name: mailman hostname: ${EMAIL_HOST} extra_hosts: - ${EMAIL_HOST}:127.0.0.1 ports: - "80:80" - "443:443" - "25:25" environment: - URL_HOST=${URL_HOST} - EMAIL_HOST=${EMAIL_HOST} - LIST_ADMIN=${LIST_ADMIN} - MASTER_PASSWORD=${MASTER_PASSWORD} - URL_PATTERN=https - SSL_FROM_CONTAINER=true - SSL_SELFSIGNED=false volumes: - ./lists:/var/lib/mailman/lists - ./dkim:/etc/exim4/tls.d - ./ssl-cert.pem:/etc/ssl/certs/ssl-cert-snakeoil.pem - ./ssl-key.pem:/etc/ssl/private/ssl-cert-snakeoil.key restart: unless-stopped
代码仓库k8s目录提供Deployment、Service等资源模板,支持通过ConfigMap/Secret注入环境变量和证书,适合生产环境规模化部署。
--hostname影响exim4的primary_hostname配置,建议设为EMAIL_HOSTENABLE_SPF_CHECK=true时,确保容器能获取发件人真实IP(非代理IP)本项目基于MIT许可证开源。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429