You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenDKIM TrustedHosts推荐配置及外发邮件签名问题咨询

OpenDKIM TrustedHosts推荐配置及外发邮件签名问题咨询

首先我得先把你的问题梳理清楚,方便大家一起分析:

我正在把邮件服务器迁移到新主机,遇到一个问题:OpenDKIM不会给外部发送的邮件(非内部邮件)签名。目前我的TrustedHosts文件内容如下:

127.0.0.1
::1
localhost
*.example.com

(example.com是我的邮件域名)
我用手机上的IMAP客户端发邮件时,只要把手机的IP加到TrustedHosts里,邮件就能正常签名了。
我看很多教程都是用类似我现在的配置,迁移前也是这么设的,但现在出了问题。难道我真的要把所有主机都 wildcard 进去吗?求推荐正确的配置方式。

好,现在来说说这个问题的核心和推荐的解决方案:

首先得明白OpenDKIM里TrustedHosts的作用——它是用来指定哪些来源的出站邮件值得被OpenDKIM签名,本质是告诉OpenDKIM:“这些来源发过来的邮件是我自己的合法邮件,不是垃圾邮件或者伪造的,帮我签个名”。

你现在遇到的问题,根源在于手机IMAP客户端发邮件时,请求的来源IP是你手机当前的公网IP,这个IP不在你现有的TrustedHosts列表里,而且*.example.com这个域名规则在这里不生效——因为TrustedHosts里的域名匹配的是发送邮件请求的来源主机的主机名,不是你手机的IP反向解析域名,也不是邮件的发件人域名。而手机客户端一般是直接通过IP连接你的SMTP服务器,不会用一个匹配*.example.com的主机名发起连接,所以自然不会被匹配到。

接下来是重点:绝对不要wildcard所有主机,这会带来很大的安全风险——任何能连接到你邮件服务器的外部主机,都能让OpenDKIM给它的邮件签名,相当于给垃圾邮件“背书”,很可能导致你的域名被反垃圾邮件组织拉黑。

那针对移动客户端的情况,推荐这几个更安全的方案:

  • 方案一:如果你的手机大多在固定网络环境(比如家里的公网IP),可以直接把这个固定IP加到TrustedHosts里,比如123.45.67.89(替换成你的实际公网IP)。但如果是动态IP的话,这个方法就不太方便,因为IP会变。
  • 方案二:配置你的邮件服务器(比如Postfix这类),要求SMTP客户端必须认证(也就是SMTP AUTH),然后让OpenDKIM对经过认证的客户端发送的邮件自动签名,不管来源IP。大多数主流邮件服务器都能和OpenDKIM集成实现这个功能,比如Postfix可以通过设置milter_macro_daemon_name,然后在OpenDKIM配置里启用RequireAuth相关参数,只要客户端用正确的账号密码登录了,不管它在哪个IP,邮件都会被签名,这是最灵活也最安全的方式,特别适合移动客户端这种IP不固定的场景。
  • 方案三:如果你的移动客户端是通过VPN连接到内部网络的,那可以把VPN的地址段加到TrustedHosts里,比如10.0.0.0/24,这样只要手机连了VPN,发邮件的请求来源就会匹配这个网段,OpenDKIM就会签名。

最后再补充一下TrustedHosts的正确写法:

  • IP地址可以写单个IP,也可以用CIDR网段格式(比如192.168.1.0/24表示整个内网段)
  • 域名的话,只有当发送邮件请求的来源主机的主机名完全匹配(或者通配符匹配)时才会生效,比如如果你的SMTP服务器的主机名是mail.example.com,而客户端是通过这个主机名连接的,那*.example.com才会匹配,但移动客户端一般不会这么做。

备注:内容来源于stack exchange,提问作者Tyler Montney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:24:39