
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
获取 https://github.com/nodemailer/wildduck 邮件服务器作为 Docker 服务。
本项目是 Astzweig 社会责任计划的一部分。
有多种运行此容器的方式,经验丰富的用户还有更多选择。对于急于使用的用户,我们准备了一些示例配置:
两种方式都将得到一个功能齐全的邮件服务器,根据配置不同,它将监听IMAP端口(143)和提交端口(587),如果启用SSL并提供有效密钥,则监听IMAPS端口(993)和SMTPS端口(465)。
在计算机/服务器上克隆此仓库,进入克隆的仓库文件夹,根据需要编辑 https://raw.githubusercontent.com/astzweig/docker-wildduck/master/docker-compose.yml。
bash$ git clone https://github.com/astzweig/docker-wildduck.git $ cd docker-wildduck $ vi docker-compose.yml
至少应替换该文件中的变量值。之后只需运行:
bash$ docker-compose up -d mail
使用 curl 或 wget 将提供的 https://raw.githubusercontent.com/astzweig/docker-wildduck/master/docker-compose.hub.yml 文件内容复制到服务器的任意位置:
bash$ curl -o 'docker-compose.yml' https://raw.githubusercontent.com/astzweig/docker-wildduck/master/docker-compose.hub.yml - 或者 - $ wget -O 'docker-compose.yml' https://raw.githubusercontent.com/astzweig/docker-wildduck/master/docker-compose.hub.yml
之后只需运行:
bash$ docker-compose up -d mail
下表显示了可用于修改容器构建或运行时行为的所有变量。粗体字体表示为了容器正常工作,您必须提供值。斜体字体表示该设置可针对每个电子邮件账户单独覆盖。
| 名称 | 含义 |
|---|---|
| FQDN | Docker主机服务器的完全限定域名。了解什么是 FQDN 很重要。 |
| MAIL_DOMAIN | 希望Wildduck接收邮件的第一个域名。创建用户且未提供域名时,这也将是标准域名。默认值:FQDN提供的值 |
| PRODUCT_NAME | 与第三方通信时用于宣传电子邮件服务的名称,例如在SMTP HELO中。默认值:Wildduck Mail |
| TLS_KEY | 容器内用于所有Wildduck服务的私有SSL密钥路径。如果未提供值,将禁用SSL(IMAPS、SMTPS等)。 |
| TLS_CERT | 用于所有Wildduck服务的公共完整链SSL密钥路径。 |
| REDIS_HOST | Redis的连接URL。默认值:redis://redis:6379/8 |
| MONGODB_HOST | MongoDB的连接URL。默认值:mongodb://mongo:27017/wildduck |
| GRAYLOG_HOST_PORT | Graylog服务器的主机名(或IP地址)和端口,例如graylog:***。如果设置,将启用Graylog日志记录。 |
| ENABLE_STARTTLS | 启用IMAP和SMTP服务器的StartTLS功能。默认值:false |
| USE_OWN_SETTINGS | 如果设置为true,启动脚本不会覆盖任何邮件服务配置文件中的任何值。如果您自己提供所有配置文件,这很有用。默认值:false |
| 名称 | 含义 |
|---|---|
| API_ENABLE | 启用Wildduck API。默认值:true |
| API_USE_HTTPS | 为API启用SSL。通常,如果使用反向代理,您可能需要禁用它。默认值:false |
| API_URL | API从Docker外部可访问的URL。例如,'[***] |
| API_TOKEN_SECRET | API接受调用所需的令牌(通过HTTP头(X-ACCESS-TOKEN)或URL参数(?accessToken=...)提供)。将此变量留空或不定义可能是危险的,因为任何人都可以进行API调用(从而创建用户等)。只有知道自己在做什么的用户才应将此选项留空。 |
API配置文件
由于Wildduck API支持双因素(2fa)身份验证,它还支持应用专用密码。生成应用专用密码时,API会自动生成所谓的Apple配置文件。这是一个允许iOS和macOS设备自动设置账户(例如在这种情况下是电子邮件账户)的文件。以下变量可用于配置这些配置文件的元数据。
| 名称 | 含义 |
|---|---|
| CONFIGPROFILE_ID | 配置文件的ID。根据规范,是反向DNS风格的标识符。默认值:FQDN的顶级域和域名的反向顺序 |
| CONFIGPROFILE_DISPLAY_NAME | 生成的iOS移动配置的名称。默认值:$PRODUCT_NAME |
| CONFIGPROFILE_DISPLAY_ORGANIZATION | 提供电子邮件服务的组织名称。默认值:Unknown |
| CONFIGPROFILE_DISPLAY_DESC | 配置文件内容的描述。甚至可以是给移动用户的通知。'{email}'将替换为相应的电子邮件地址。默认值:Install this profile to setup {email} |
| CONFIGPROFILE_ACCOUNT_DESC | 配置文件设置的账户描述。'{email}'的替换方式与'CONFIGPROFILE_DISPLAY_DESC'相同。默认值:{email} |
| 名称 | 含义 |
|---|---|
| IMAP_PROCESSES | 要启动的IMAP进程数。默认值:2 |
| IMAP_RETENTION | Trash或Junk文件夹中的邮件自动删除前的天数。默认值:4 |
| 名称 | 含义 |
|---|---|
| ENABLE_SMTP_SEND_LATER | 允许Date头中包含未来日期的邮件稍后发送。如果设置为false,传入的邮件将立即发送,无论Date头中设置的未来日期如何。默认值:true |
这些变量可用于定义容器中使用的服务版本。它们仅更改构建时行为。
| 名称 | 含义 |
|---|---|
| SCRIPTS_DIR | 脚本文件夹在容器内的上传路径。默认值:'/root/scripts' |
| INSTALL_DIR | 组件(Wildduck、Haraka等)在容器内的安装路径。默认值:'/var/nodemailer' |
| WILDDUCK_GIT_REPO | https://github.com/nodemailer/wildduck的git仓库URL(或您的分支)。默认值:'https://github.com/nodemailer/wildduck.git' |
| WILDDUCK_GIT_CID | 要从Wildduck git仓库检出的git提交ID或分支名称。默认值:'master' |
| HARAKA_VERSION | 要下载和使用的https://github.com/haraka/Haraka版本。默认值:'2.8.21' |
| HARAKA_WD_PLUGIN_GIT_REPO | https://github.com/haraka/Haraka的https://github.com/nodemailer/haraka-plugin-wildduck的git仓库URL(或您的分支)。默认值:'https://github.com/nodemailer/haraka-plugin-wildduck' |
| HARAKA_WD_PLUGIN_GIT_CID | 要从Haraka的Wildduck插件git仓库检出的git提交ID或分支名称。默认值:'master' |
| ZONEMTA_GIT_REPO | https://github.com/zone-eu/zone-mta-template的git仓库URL(或您的分支)。默认值:'https://github.com/zone-eu/zone-mta-template.git' |
| ZONEMTA_GIT_CID | 要从ZoneMTA git仓库检出的git提交ID或分支名称。默认值:'master' |
| ZONEMTA_WD_PLUGIN_GIT_REPO | https://github.com/zone-eu/zone-mta-template的https://github.com/nodemailer/zonemta-wildduck的git仓库URL(或您的分支)。默认值:'https://github.com/nodemailer/zonemta-wildduck.git' |
| ZONEMTA_WD_PLUGIN_GIT_CID | 要从ZoneMTA的Wildduck插件git仓库检出的git提交ID或分支名称。默认值:'master' |
在开始构建此镜像之前,我们寻找了替代方案,发现了 https://hub.docker.com/r/houlagins/wildduck/ 和 https://hub.docker.com/r/hechengjin/mailserver/ 的容器。我们仍然决定开发自己的解决方案,因为它们都没有提供构建文件或相应的代码仓库。而且(对某些人来说可能不太重要)它们都没有提供有用的文档。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务