本镜像包含 Mailman 3 的 Web 管理界面(Postorius)和邮件归档器(Hyperkitty),是 Mailman 3 套件的核心组件之一。镜像基于 GitLab 仓库 的最新源码构建。目前镜像仅提供 latest 版本,未来将区分 latest(开发版)和 stable(稳定版),计划在 Mailman Suite 3.1 版本发布后实现版本分离。
INSTALLED_APPS)以满足定制需求。本镜像适用于需要部署完整 Mailman 3 套件的场景,尤其适合:
以下参数必须在部署前设置,无默认值或默认值无法满足生产需求:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SERVE_FROM_DOMAIN | Django 服务域名,将添加到 ALLOWED_HOSTS,同时替换默认 SITE(SITE_ID=1) | 未设置 |
HYPERKITTY_API_KEY | Hyperkitty 归档器 API 密钥,需与 Mailman Core 配置的密钥完全一致 | 未设置 |
MAILMAN_ADMIN_USER | 默认管理员用户名,用于创建初始管理员账户 | 未设置 |
MAILMAN_ADMIN_EMAIL | 默认管理员***,用于创建初始管理员账户 | 未设置 |
SECRET_KEY | Django 密钥,用于 cookie 签名、会话加密等安全功能 | 未设置 |
以下参数已设置合理默认值,仅在需要自定义时修改:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
DATABASE_URL | Django 数据库连接 URL,格式为 driver://user:password@host:port/dbname | sqlite:///opt/mailman-web-data/mailmanweb.db(默认 SQLite 数据库) |
MAILMAN_REST_URL | Mailman Core REST API 地址 | [***] |
MAILMAN_REST_USER | Mailman Core REST API 用户名 | restadmin |
MAILMAN_REST_PASSWORD | Mailman Core REST API 密码 | restpass |
MAILMAN_HOSTNAME | Mailman Core 发送邮件到 Hyperkitty 的容器 IP | mailman-core(默认与 Core 容器名关联) |
SMTP_HOST | 发送邮件的 SMTP 服务器地址 | 容器网关 IP(通过 ip route 自动获取) |
SMTP_PORT | SMTP 服务器端口 | 25 |
SMTP_HOST_USER | SMTP 认证用户名(如需要) | 空字符串(默认不启用认证) |
SMTP_HOST_PASSWORD | SMTP 认证密码(如需要) | 空字符串 |
SMTP_USE_TLS | 是否启用 SMTP TLS 加密 | False(默认不启用) |
DJANGO_LOG_URL | Django 日志文件路径 | /opt/mailman-web-data/logs/mailmanweb.log |
DJANGO_ALLOWED_HOSTS | Django ALLOWED_HOSTS 额外条目(独立于 SERVE_FROM_DOMAIN) | 未设置(默认仅包含 SERVE_FROM_DOMAIN) |
POSTORIUS_TEMPLATE_BASE_URL | Mailman Core 访问 Web 容器模板的基础 URL | [***](默认允许 Core 从 Web 容器获取模板) |
MAILMAN_WEB_SOCIAL_AUTH | 社交登录提供商列表(默认包含多个提供商) | 默认值参考 settings.py,覆盖可禁用社交登录 |
***推荐使用 项目 GitHub 仓库 提供的 docker-compose.yaml 进行部署,该配置已集成 Mailman Core、数据库(PostgreSQL)、Web 容器及 Nginx 反向代理。
以下为简化版 docker-compose.yaml(完整配置请参考 ***仓库):
yamlversion: '3' services: mailman-web: image: maxking/mailman-web:latest container_name: mailman-web depends_on: - mailman-core - db environment: # 必须配置的环境变量 - SERVE_FROM_DOMAIN=lists.example.com # 替换为实际域名 - HYPERKITTY_API_KEY=your-hyperkitty-api-key # 与 mailman-core 保持一致 - MAILMAN_ADMIN_USER=admin - MAILMAN_ADMIN_EMAIL=*** - SECRET_KEY=your-django-secret-key # 建议使用随机字符串 # 可选配置的环境变量(示例) - DATABASE_URL=postgres://mailman:mailmanpass@db:5432/mailmandb - MAILMAN_REST_URL=[***] - SMTP_HOST=smtp.example.com - SMTP_PORT=587 - SMTP_USE_TLS=True - SMTP_HOST_USER=*** - SMTP_HOST_PASSWORD=smtp-password volumes: - mailman-web-data:/opt/mailman-web-data ports: - "8000:8000" mailman-core: image: maxking/mailman-core:latest container_name: mailman-core depends_on: - db environment: - HYPERKITTY_API_KEY=your-hyperkitty-api-key # 与 mailman-web 保持一致 # 其他 mailman-core 环境变量... volumes: - mailman-core-data:/opt/mailman/core - mailman-core-logs:/opt/mailman/logs db: image: postgres:13 container_name: mailman-db environment: - POSTGRES_USER=mailman - POSTGRES_PASSWORD=mailmanpass - POSTGRES_DB=mailmandb volumes: - mailman-db-data:/var/lib/postgresql/data volumes: mailman-web-data: mailman-core-data: mailman-core-logs: mailman-db-data:
若需快速测试,可使用 docker run 命令启动(生产环境建议使用 Docker Compose):
bashdocker run -d \ --name mailman-web \ -p 8000:8000 \ -e SERVE_FROM_DOMAIN=lists.example.com \ -e HYPERKITTY_API_KEY=your-api-key \ -e MAILMAN_ADMIN_USER=admin \ -e MAILMAN_ADMIN_EMAIL=*** \ -e SECRET_KEY=your-secret-key \ -e DATABASE_URL=sqlite:///opt/mailman-web-data/mailmanweb.db \ -v mailman-web-data:/opt/mailman-web-data \ maxking/mailman-web:latest
创建 Django 超级用户
容器启动后,需执行以下命令创建管理员账户(用于登录 Django 管理后台):
bashdocker exec -it mailman-web python manage.py createsuperuser
配置反向代理
需通过 Nginx 等 Web 服务器反向代理容器的 8000 端口,以支持 HTTPS 和域名访问。***仓库提供 Nginx 配置示例。
SSL 证书配置
建议通过 Let's Encrypt 获取免费 SSL 证书,并在 Nginx 中配置 HTTPS(因 Django 配置默认启用 USE_SSL=True)。
容器数据通过卷 mailman-web-data 持久化,包含数据库文件、日志、静态资源等,需确保该卷在升级或重启时保留。
HYPERKITTY_API_KEY 必须在 mailman-web 和 mailman-core 容器中设置为相同值,否则无法正常归档邮件。docker-compose.yaml 配置)。SECRET_KEY 应使用随机高强度字符串,避免泄露;敏感信息(如 SMTP 密码)建议通过环境变量注入,而非硬编码在配置文件中。来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 等镜像仓库
无需登录使用专属域名加速