使用 sendmail+dkim-milter 调试 dkim=fail

使用 sendmail+dkim-milter 调试 dkim=fail

我正在设置一个带有 sendmail MTA 的 CentOS 服务器,以发送 DKIM 签名的邮件(发送域为 @brighter.do)。我已成功通过 dkim milter 路由邮件;但是,它们到达我的 GMail 帐户时,身份验证结果为 dkim=fail,没有更多信息。我该如何开始调试这个问题(除了谷歌搜索“调试失败的 dkim”和其他相关术语)?

我使用了这些说明。我所做的唯一额外配置更改是将我的应用程序用户添加到/etc/mail/trusted-users、添加EXTRA_FLAGS=-R/etc/sysconfig/dkim-milter并将规范化切换为relaxed/relaxed(这似乎没有改变任何东西)。我已使用 ssh-keygen -l -f app1 验证密钥为 2048 位。(似乎太小的密钥会导致 GMail 拒绝有效的 DKIM 签名,但这似乎不是我的问题。)

我的相关DNS记录的内容是:

APP1._DOMAINKEY.BRIGHTER.DO. TXT k=rsa; p=AAAAB3NzaC1yc2EAAAADAQABAAABAQC3pJ4UJW/KBQ2D6N/6kl37yqJ0F4NcKPGApyHw4wl2zohdOPp8rELvQnRgvmQUMu3hrgicD9W9LbnGx/CzakZAA4RcJk9kI51v+Y8L5j3lZURFC1ZIXoRFgfafyo31XN3rc+V0hNMXUGcxVI09oYtyS+2AuC9cULP4Nu030I3yYFd2NOwmKPY57PU3ybwGKEvuWsB/9PyWC6KVlULlkg7TB
APP1._DOMAINKEY.BRIGHTER.DO. TXT CwbMnGyavwIeoJpNlb1fINdDGWDAJvfTTpMGvIkQAehknbgBqL4IgciWQ/2xw6bMhma7MRJHzZsd7JfbNramQIpsxX6hZUkZja6HpoFJzBi1vbnLcM2n8Xhat/A1Q/F
_DOMAINKEY.BRIGHTER.DO. TXT o=~ [email protected]

我收到的标题是:

Delivered-To: [email protected]
Received: by 10.140.42.166 with SMTP id c35csp248278qga;
        Wed, 23 Mar 2016 14:10:12 -0700 (PDT)
X-Received: by 10.98.72.213 with SMTP id q82mr7347661pfi.164.1458767412258;
        Wed, 23 Mar 2016 14:10:12 -0700 (PDT)
Return-Path: <[email protected]>
Received: from DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM (outbound.brighter.do. [54.201.111.245])
        by mx.google.com with ESMTPS id m22si6801929pfi.43.2016.03.23.14.10.12
        for <[email protected]>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Wed, 23 Mar 2016 14:10:12 -0700 (PDT)
Received-SPF: pass (google.com: domain of [email protected] designates 54.201.111.245 as permitted sender) client-ip=54.201.111.245;
Authentication-Results: mx.google.com;
       dkim=fail [email protected];
       spf=pass (google.com: domain of [email protected] designates 54.201.111.245 as permitted sender) [email protected]
Received: from DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM (localhost [127.0.0.1])
    by DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM (8.14.4/8.14.4) with ESMTP id u2NLAB8k007870
    for <[email protected]>; Wed, 23 Mar 2016 21:10:11 GMT
X-DKIM: Sendmail DKIM Filter v2.8.3 DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM u2NLAB8k007870
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brighter.do; s=app1;
    t=1458767411; bh=HiluaVoCYKZyFY1h3gE73EqhCFuKBJzE8SqwhrLX5/c=;
    h=Date:Message-Id:To:Subject:MIME-Version:From;
    b=RfNNbBaAUNX+y3cdSqb+NkgC8GHa0wd/vV4LC72DQ8jbSWIHfqxZD6Qi3xGtKVnyU
     2j9FDAtI7X1B7dsPuFIw9F5m+1YoFuV+/3vCQ/zsXxCoExwml7DrxnYuWI0e5MeKma
     3K4T+R/tpNgKYVSU00RNCorLsvyia/fD8+wFTY4ZyoYOTZ4tK6gwcO4loPERiPAAOL
     HI11YagXgreCk3efJXanF8Df9ALLmTZMjMLXHHIHnSsypzhtEXYmua+EWQEZzIiVis
     paAmh9w8sRfeFww4PraRN7Caxznm51ZUIecdST29xRL276LsEgb5Nsy6TIEJyOov/N
     7AilYKXwuotHg==
Received: (from ec2-user@localhost)
    by DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM (8.14.4/8.14.4/Submit) id u2NLABrt007869;
    Wed, 23 Mar 2016 21:10:11 GMT
Date: Wed, 23 Mar 2016 21:10:11 GMT
Message-Id: <201603232110.u2NLABrt007869@DUALSTACK.PROD-API-478862527.US-WEST-2.ELB.AMAZONAWS.COM>
To: [email protected]
Subject: Test message
X-PHP-Originating-Script: 500:PushComponent.php
MIME-Version: 1.0
From: Brighter <[email protected]>

注意:由于我对电子邮件管理几乎一无所知,因此我可能在这里遗漏了一些关键细节。在这种情况下,请帮助我改进问题,指出哪些其他信息会很有用 - 例如,要包含的其他配置文件。

答案1

我知道这个问题已经有两个月了,但是它是该主题在谷歌搜索结果中的顶级结果,所以我认为它值得一个答案。

我不知道你的第二和第三条 TXT 条目是做什么用的。我现在的 DKIM 工作正常,而且我只有一个类似于你的第一个 TXT 条目。

我遵循了数字海洋在 Ubuntu 上设置 DKIM 时,但它不能立即正常工作。我发现这一页对调试我的 DKIM 问题非常有帮助。

要验证您的 DNS TXT 条目是否被正确读取,请在 Linux 命令行上输入以下内容:

dig +short TXT APP1._domainkey.brighter.do

我使用 GoDaddy 作为 DNS,不需要将域名作为域密钥字符串的一部分。相反,我只需要名称字段中的子域部分,如下所示:

mail._domainkey

(我使用“mail”而不是“app1”来指定我的域密钥。)

我希望这能帮助任何遇到类似问题的人。一旦您让 DKIM 正常工作,您就会意识到它并没有那么令人困惑。祝你好运!

答案2

问题是您有 3 个 DNS 记录而不是 1 个,并且没有使用括号。

dig +short TXT APP1._domainkey.brighter.do
" v=DKIM1\; k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt6SeFCVvygUNg+jf+pJd+8qidBeDXCjxgKch8OMJds6IXTj6fKxC70J0YL5kFDLt4a4InA/VvS25xsfws2pGQAOEXCZPZCOdb/mPC+Y95WVERQtWSF6ERYH2n8qN9Vzd63PldITTF1BnMVSNPaGLckvtgLgvXFCz+DbtN9CN8mBXdjTsJij2Oez1N8m8Bi" "hL7lrAf/T8lguilZVC5ZIO0wQsGzJxsmr8CHqCaTZW9XyDXQxlgwCb3006TBryJEAHoZJ24Aai+CIHIlkP9scOmzIZmuzESR82bHeyX2za2pkCKbMV+oWVJGY2uh6aBScwYtb25y3DNp/F4WrfwNUPxQIDAQAB"

现在您看到有一个包含两个字符串“”的条目。添加 DKIM 记录时,请记住一行有 255 个字符。我尝试将所有内容放在一行中,想知道为什么 DKIM 在谷歌中失败了。在某些网络面板中,您最多只能输入 255 个字符。技巧是使用括号。检查系统是否没有删除它们。好的提供商喜欢卵巢癌有一个专门用于 DKIM 记录的输入选项。当你查看opendkim按照 Debian 安装指南操作,然后您会注意到可用于设置 DNS 记录的 txt 文件。它们还包含括号。

还有一个想法:始终在 dmarc 报告中查看测试了哪个选择器。例如,Google 会在报告中告诉您。我使用我认为的另一个选择器创建了 dkim。

相关内容