【问题标题】:Unable to setup DKIM TXT-Value as DNS-Record无法将 DKIM TXT 值设置为 DNS 记录
【发布时间】:2016-04-18 07:55:50
【问题描述】:

我有一个通过 Google Cloud DNS 编辑 DNS 的域名。而且我有一个使用该域名的 Google Apps for Work 帐户。

我想设置 DKIM 身份验证,但是当我尝试保存相应的 TXT 记录时,我收到标签无效的错误。

我之前也做过同样的事情,而且效果很好。我检查了旧的设置,发现旧的 DKIM 记录大约是长度的一半。对于 Google Cloud Platform 中的 TXT 记录来说,新的似乎太长了。

有人有解决办法吗?

【问题讨论】:

  • 你解决了吗?我遇到了同样的问题。

标签: google-apps google-cloud-dns


【解决方案1】:

是的,您必须按照本文所述拆分记录:

https://support.google.com/a/answer/173535

如果您的域提供商将 TXT 记录值的大小限制为 255 个字符,则您无法将 DKIM 密钥作为单个条目输入 DNS 记录。在这种情况下,将键拆分为多个带引号的文本字符串,并将它们一起输入到 TXT 记录值字段中。例如,将 DKIM 密钥拆分为如下两部分:

的 “v = DKIM1; K = RSA; P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAraC3pqvqTkAfXhUn7Kn3JUNMwDkZ65ftwXH58anno / bElnTDAd / idk8kWpslrQIMsvVKAe + mvmBEnpXzJL + 0LgTNVTQctUujyilWvcONRd / z37I34y6WUIbFn4ytkzkdoVmeTt32f5LxegfYP4P / w7QGN1mOcnE2Qd5SKIZv3Ia1p9d6uCaVGI8brE / 7zM5c /”, “+ zMthVPE2WZKA28 QomQDH7ludLGhXGxpc7kZZCoB5lQiP0o07Ful33fcED73BS9Bt1SNhnrs5v7oq1pIab0LEtHsFHAZmGJDjybPA7OWWaV3L814r / JfU2NK1eNu9xYJwA8YW7WosL45CSkyp4QeQIDAQAB” PRE>

两个带引号的字符串必须保持在同一行 - 在 Cloud DNS 界面的同一个框中,而不是在两个单独的框中。

【讨论】:

  • 我努力让它工作,直到我将两个单独的引用字符串添加到同一行“TXT 数据”而不添加另一个项目/行。您在答案中显示它的方式看起来像您说的应该是两个 TXT 记录项。当您制作类似的单独记录时,Google Cloud DNS 会做一些奇怪的事情,因此它最终无法通过 mxtoolbox.com 和 dmarcanalyzer.com 的测试。将两个带引号的字符串组合成一行后,由一个空格分隔,例如 "v=DKIM1; k=rsa; p=MIIBI...M5c/" "zMt...QAB" 全部在一条记录中,现在它通过了 DKIM 验证。
【解决方案2】:

我刚刚遇到了同样的问题。

google DKIM 密钥文本字符串比大多数其他 DKIM 密钥长(可能更高的位数),并且不符合每个 TXT 字段 255 长度限制。

解决此问题的方法是执行两个 TXT 条目,并以 \ 结束第一个条目,或者在第一个条目中使用 (,在第二个条目中使用 )

谷歌云 DNS 解析器似乎不允许试用 \) 或前面的 (

在 Google Cloud DNS 工具上可能有一些方法可以将其转义 - 但并不明显。

好的,我有一个解决方案。

确保只输入 1 个 TXT 记录,而不是添加多个 TXT 记录 - 这是关键步骤。

如果您在设置 TXT 记录时单击“添加项目”,这实际上会创建另一条 TXT 记录,并且两条记录可以按任意顺序解析,并且 DKIM 不会验证。

诀窍是确保仅将分解的字符串放入第一个文本输入中,并将它们分解成足够小的片段,以便它们都以正确的顺序进行解析。

【讨论】:

  • 我遇到了同样的问题,但我的字符串不包含任何\` or (` 从那里拆分。我该怎么做?
  • DKIM 密钥位于引号“”之间的常规 TXT 记录数据中。 \ 或 ( ) 是特殊的转义字符,需要出现在 DKIM 信息之外的 DNS TXT RR 条目中,以告诉 DNS 解析器将多个 TXT 记录粘合在一起的顺序。这些需要以某种方式添加 - 但 Google Cloud DNS 前端似乎没有办法做到这一点。
  • @xbill - DNS 中的 TXT 记录可以有 1 个或多个字符串,这些字符串将被客户端解释为连接在一起 - 它们被输入并存储为不同的字符串。您可以使用“字符串 1”“字符串 2”在 BIND 主文件中指定此内容,并且 Cloud DNS API(和 Cloud Console)接受相同的格式。
  • Google Cloud DNS 接口太混乱了。您必须用空格分割字符串,用双引号将它们括起来,然后将所有内容粘贴到 UI 中的 SINGLE 字符串中。然后它工作。花了一个小时将所有这些信息拼凑在一起以使其正常工作。感谢您为我指明正确的方向。以前怎么会有人知道这一点!
【解决方案3】:

在 Gsuite 管理控制台生成 DKIM 记录时选择位长“1024”。这对我有用。

【讨论】:

    【解决方案4】:

    如何在 GCP Cloud DNS 中轻松将 DKIM 添加为 TXT:

    1. 将整个 DKIM 字符串复制/粘贴到 TXT 字段中
    2. 忽略 ...此域有空格但不是带引号的字符串...您可能会看到的相关 GCP 警告
    3. 在保存之前,请在 DKIM p= 值字符串的中间插入一个空格。

    就是这样。

    此方法已使用 Mailgun 和在 Google Cloud DNS 中配置的域名进行了测试。

    补充说明:

    • 保存后,GCP 会自动在每个空格分隔的字符串周围添加双引号
    • 您需要以这样的方式分隔 p= 字符串,以使保存后创建的双引号字符串不会超过 255 个字符

    示例(之前):

    k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlTtO1qRFaK955gz16Y8c1EMCqtaT4exCrwfor2yT438ZVjrUcqo2tPUNR4eqkD+xcKRQnWSw931uVUY6YJWtOrgrXTIrHnTkf5Xtg+jaXr0OhjdeVDIG/Le7oOVWncMf+9J4ZSRybOpb+XZPp/JLjis6pmCLrt5j82yBC9DCbsEPSOVVOC1mr5lq8irQs+qAv6M/DnjNcUrdiRBJyNrs2lfuvfs8BFceZAk1AwcVBcYCmZl5OkxZBn8liTC34FPJLLHm6jMp9+c0OaEtxo8zr3QX0ZYEWC3XqZ/p9fo4Pcg+fpyjee79wBVqUzhVAWdzE5+qAIn4e1Dmslyb6IX4mwIDAQAB
    

    示例(之后):

    k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlTtO1qRFaK955gz16Y8c1EMCqtaT4exCrwfor2yT438ZVjrUcqo2tPUNR4eqkD+xcKRQnWSw931uVUY6YJWtOrgrXTIrHnTkf5Xtg+jaXr0OhjdeVDIG/Le7oOVWncMf+9J4ZSRybOpb+XZPp/JLjis6pmCLrt5j82y BC9DCbsEPSOVVOC1mr5lq8irQs+qAv6M/DnjNcUrdiRBJyNrs2lfuvfs8BFceZAk1AwcVBcYCmZl5OkxZBn8liTC34FPJLLHm6jMp9+c0OaEtxo8zr3QX0ZYEWC3XqZ/p9fo4Pcg+fpyjee79wBVqUzhVAWdzE5+qAIn4e1Dmslyb6IX4mwIDAQAB
    

    向右滚动,您会看到新添加的空格 - 这会生成三个空格分隔的字符串,每个字符串少于 255 个字符:

    1. k=rsa;
    2. P = MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlTtO1qRFaK955gz16Y8c1EMCqtaT4exCrwfor2yT438ZVjrUcqo2tPUNR4eqkD + xcKRQnWSw931uVUY6YJWtOrgrXTIrHnTkf5Xtg + jaXr0OhjdeVDIG / Le7oOVWncMf + 9J4ZSRybOpb + XZPp / JLjis6pmCLrt5j82y LI>
    3. BC9DCbsEPSOVVOC1mr5lq8irQs + qAv6M / DnjNcUrdiRBJyNrs2lfuvfs8BFceZAk1AwcVBcYCmZl5OkxZBn8liTC34FPJLLHm6jMp9 + c0OaEtxo8zr3QX0ZYEWC3XqZ / p9fo4Pcg + fpyjee79wBVqUzhVAWdzE5 + qAIn4e1Dmslyb6IX4mwIDAQAB LI>

    示例(之后,通过 DIG 查看):

    ;; ANSWER SECTION:
    dkim.example.com.   300 IN  TXT "k=rsa;" "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlTtO1qRFaK955gz16Y8c1EMCqtaT4exCrwfor2yT438ZVjrUcqo2tPUNR4eqkD+xcKRQnWSw931uVUY6YJWtOrgrXTIrHnTkf5Xtg+jaXr0OhjdeVDIG/Le7oOVWncMf+9J4ZSRybOpb+XZPp/JLjis6pmCLrt5j82y" "BC9DCbsEPSOVVOC1mr5lq8irQs+qAv6M/DnjNcUrdiRBJyNrs2lfuvfs8BFceZAk1AwcVBcYCmZl5OkxZBn8liTC34FPJLLHm6jMp9+c0OaEtxo8zr3QX0ZYEWC3XqZ/p9fo4Pcg+fpyjee79wBVqUzhVAWdzE5+qAIn4e1Dmslyb6IX4mwIDAQAB"
    

    参考: DKIM TXT record value invalid, cloud-dns-discuss group message

    【讨论】:

    • 我在某处读到过不建议使用这种方法,因为超过 255 个字符(这是标准)取决于实现。现在服务器将加入这些字符串,以v=DKIM1;k=rsa;p=MIIBIjA... 而不是v=DKIM1; k=rsa; p=MIIBIjA... 结尾,这在某些接收服务器中是无效的。如上所述,我会推荐FlippingBinary's approach
    【解决方案5】:

    对我使用 Google Cloud DNS 的解决方案是使用此网页上的工具来“修复”Mailgun 提供的 DKIM 字符串: https://www.mailhardener.com/tools/dns-record-splitter

    更多详情:如何在 Google Cloud DNS 中输入 TXT 值 https://www.mailhardener.com/blog/how-to-enter-txt-values-in-google-cloud-dns

    【讨论】:

      【解决方案6】:

      只需添加第一个 txt k=rsa; DNS 记录中的 p=abc 并忽略警告。然后添加其余部分。这对我有用。在mailgun+Gcloud上测试过

      【讨论】:

      • 在 Google Cloud DNS 中使用 Mailgun 提供的值对我不起作用。仍然无法添加记录,抱怨“无效字符”。 Mailgun 说 DNS 名称应该是“k1._domainkey.mg.example.ch”。我的域是 .ch 之类的 example.ch 我想知道谷歌是否拒绝了它?然而,其他记录正确添加但只有 DNS 名称:“.example.ch”。 Mailgun 不提供有关 Google Cloud DNS 的说明。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 2014-06-11
      相关资源
      最近更新 更多