安装 MOX 参考:
使用 Docker 部署 Mox Mail 邮局
在 Linux 上使用 Docker 部署 Mox 邮件服务器时,很多人会遇到:
| |
但多数情况下,并不是域名没开启 DNSSEC,而是:
Mox 使用的 DNS 解析器没有真正进行 DNSSEC 验证。
本文介绍如何使用 Unbound 为 Docker 中的 Mox 提供支持 DNSSEC 的 DNS 解析。
适用环境:
| |
为什么会出现 DANE inactive
Mox 启用 DANE 时,会验证:
- MX 记录
- TLSA 记录
- DNSSEC 签名
只有 DNSSEC 验证成功,DANE 才会生效。
Docker 默认 DNS:
| |
只是 Docker 的内部转发器:
- 不验证 DNSSEC
- 不返回
ad - 不适合 DANE
因此即使域名已经开启 DNSSEC,Mox 仍可能提示:
| |
推荐架构
推荐:
| |
不要使用:
| |
也不推荐:
| |
禁用 systemd-resolved
Ubuntu / Debian 默认启用了systemd-resolved,会占用 127.0.0.53:53并接管 /etc/resolv.conf,这会导致:
- Unbound 无法监听 53
- Docker 使用错误 DNS
- DNSSEC 验证失效
停止并禁用:
| |
重建 /etc/resolv.conf:
| |
安装 Unbound
安装:
| |
确认支持 DNSSEC:
| |
输出中应包含:
| |
初始化 trust anchor
检查:
| |
不存在则执行:
| |
配置 Unbound
创建配置:
| |
写入:
| |
这里使用:
| |
是为了让 Docker 中的 Mox 能访问宿主机 Unbound。
公网访问则通过:
| |
限制。
启动 Unbound
检查配置:
| |
启动:
| |
确认 53 端口已经被 Unbound 接管:
| |
验证 DNSSEC
普通测试:
| |
DNSSEC 测试:
| |
返回结果必须包含:
| |
例如:
| |
其中:
| |
测试是否生效
测试故意损坏 DNSSEC 的域名:
| |
正确结果应为:
| |
如果还能解析出 IP:
| |
让 Docker 中的 Mox 使用 Unbound
docker-compose.yml:
| |
这样:
| |
域名侧还需要完成
开启 DNSSEC
在 DNS 服务商后台启用 DNSSEC。
添加 DS 记录
如果注册商没有 DS:
| |
配置 TLSA
Mox 会自动生成:
| |
对应的 TLSA 记录。
推荐检测工具
本地:
| |
| |
在线:
总结
DANE 是否生效,关键不只是:
| |
更重要的是:
| |
因此:
- Docker 默认 DNS 不适合 DANE
- 建议禁用 systemd-resolved
- 使用支持 DNSSEC 的 resolver
- 推荐使用 Unbound
- 正确配置 DS 与 TLSA
完成后,Mox 才能真正启用:
| |