子域名的 DKIM 签名问题

子域名的 DKIM 签名问题

我所处的环境会从不同来源发送电子邮件。我们也是 Google Workspace 环境。

流程如下:用户 ([电子邮件保护]) 在 Gmail 中向电子邮件组发送电子邮件 ([电子邮件保护]) 位于我们的列表服务器 (postfix) 上,该组 ([电子邮件保护]) 由驻留在 domain.tld 中的 Google 用户组成。当电子邮件从 listserv.domain.tld 发送时,它会到达 Gmail,并在“查看原始”标题中显示“DKIM FAIL domain domain.tld”(SPF 配置正确,因此不会被标记为垃圾邮件/网络钓鱼)

[电子邮件保护]-> 电子邮件 ->[电子邮件保护](我们控制的 Postfix 服务器)-> 发送[电子邮件保护]发邮件给[电子邮件保护]订阅者(位于 domain.tld 中的 Google 帐户)-> DKIM 无法访问 domain.tld

查看电子邮件数据,d=domain.tld 而不是 d=listserv.domain.tld


因此,经过广泛的测试后,我相信我已经发现了需要做什么才能使其工作,但是我不知道如何去做。

要做什么:在 listserv.domain.tld 服务器上,使用 opendkim 配置并生成密钥/对(完成)在我们的 DNS 主机上,使用上面生成的公钥创建 listserv._domainkey.listserv.domain.tld(完成)

我无法弄清楚的问题是:我的假设是 postfix/mailman/opendkim 应该接收原始电子邮件,然后使用自己的 dkim 私钥对其进行签名,然后将其发送给[电子邮件保护]当邮件到达时,DKIM 域标头应该显示“DKIM PASS domain listserv.domain.tld”

但是,它仍然显示“DKIM FAIL domain domain.tld”

如果我从 Postfix 服务器的 CLI 发送电子邮件到[电子邮件保护]或者[电子邮件保护]存在“DKIM PASS domain listserv.domain.tld”。因此,如果电子邮件直接来自 @listserv.domain.tld,而不是通过/代表发送/从 @domain.tld 发送,则所有配置均正确

答案1

一封邮件可以有多个 DKIM 签名,通常在邮件处理过程中会评估所有签名。添加有效的签名不会改变邮件列表修改后d=listserv.domain.tld现有签名无效的事实。d=domain.tld

Google 的摘要显示会选择一个 DKIM 结果进行显示,并且可能优先考虑精确域匹配而不是子域。如果您查看实际邮件标头,您应该能够看到标头中每个单独签名的结果Authentication-Results,类似于以下内容:

Authentication-Results: mx.google.com;
       dkim=pass [email protected] header.s=bar header.b=VjtN0uuE;
       dkim=fail [email protected] header.s=foo header.b=e04DhOVX;
[...]

避免现有签名在消息修改后失效的唯一方法是从消息中删除签名。无效签名不应导致消息的处理比丢失签名更差,因此,为了修复 Google 汇总身份验证结果的方法中的外观问题,可能需要付出过多的努力。

相关内容