以下是我输入 DKIM 密钥值的方法:
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwztXzIUqic95qSESmnqX U5v4W4ENbciFWyBkymsmmSNOhLlEtzp/mnyhf50ApwCTGLK9U7goo/ijX/wr5roy XhReVrvcqtIo3+63a1Et58C1J2o4xCvp0K2/lM6hla4B9jSph7QzjYdtWlOJqLRs o0nzcut7DSq/xYcVqvrFDNbutCfG//0wcRVUtGEyLX/a/7mAAkW6H8UEYMPglQ9c eEDfTT6pzIlqaK9cHGOsSCg4r0N8YxnHFMRzKaZwmudaXTorSbCs7e681g125/vJ e82VV7DE0uvKW/jquZYtgMn7+0rm+2FDYcDx/7lzoByl91rx37MAJaUx/2JHi1EA nwIDAQAB"
此值中没有新行(我专门复制粘贴并在文本编辑器中测试了它)。但出于某种原因,我一直收到 TXT 太长的错误:
TXTRDATATooLong 出现在“v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwztXzIUqic95qSESmnqX U5v4W4ENbciFWyBkymsmmSNOhLlEtzp/mnyhf50ApwCTGLK9U7goo/ijX/wr5roy XhReVrvcqtIo3+63a1Et58C1J2o4xCvp0K2/lM6hla4B9jSph7QzjYdtWlOJqLRs o0nzcut7DSq/xYcVqvrFDNbutCfG//0wcRVUtGEyLX/a/7mAAkW6H8UEYMPglQ9c eEDfTT6pzIlqaK9cHGOsSCg4r0N8YxnHFMRzKaZwmudaXTorSbCs7e681g125/vJ e82VV7DE0uvKW/jquZYtgMn7+0rm+2FDYcDx/7lzoByl91rx37MAJaUx/2JHi1EA nwIDAQAB”
我真的不知道该怎么做才能解决这个问题。
答案1
不幸的是,TXT 记录中每个字符串 255 个字符的限制不是 Route53 的限制,而是由 DNS 协议本身强加的。但是,每个 TXT 记录可以有多个字符串,每个字符串长度为 255 个字符。您需要将 DKIM 拆分为多个字符串以用于 TXT 记录。您可以通过控制台执行此操作,方法是输入括在引号中的每个字符串,每行一个字符串。
重要的提示:不要按照说明使用“每行一个字符串”——用一个空格分隔字符串,例如"foo" "bar"
not "foo"\n"bar"
。使用DKIM验证器验证签名是否被正确读取。
答案2
您可以将其分成几段引用文本,每段的最大长度为 255。您不必让每段都精确。
例如,如果你的值如下所示:
"v=DKIM1; k=rsa; p=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza bcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc"
你可以在任意地方将其切碎:
"v=DKIM1; k=rsa; p=abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz" "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzab" "cdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabc"
请注意,每个块之间的是单个空格,而不是换行符!
不出所料,谷歌的设置说明如下糟糕的。我只是撰写了完整的指南有关如何在 Route53 上执行此操作。
答案3
AWS Route53 上的 DKIM
您必须将 DMARC 记录拆分为 255 个字符的部分。如果您恰好使用 AWS Route53 托管 DNS,请将每个带引号的部分插入"..."
记录中。
不要使用换行符来分割各部分,因为那将是单独的 TXT 条目。
v=DKIM1; k=rsa; p=ABC123longkeypart1ABC123longkeypart2
变成
"v=DKIM1; k=rsa; p=ABC123longkeypart1" "ABC123longkeypart2"
使用 Terraform 和 Route53
当使用 Terraform 来配置您的 Route53 记录时,您也必须将 DKIM 密钥拆分为最多 255 个字符的部分。
由于 Terraform 负责引用 TXT 条目,因此您只需在每个部分之间提供引号,如下所示\"\"
。
v=DKIM1; k=rsa; p=ABC123longkeypart1ABC123longkeypart2
变成
resource "aws_route53_record" "some_domain_dkim" {
zone_id = "${aws_route53_zone.some_domain.zone_id}"
name = "google._domainkey.some_domain.com."
type = "TXT"
ttl = "3600"
records = [
"v=DKIM1; k=rsa; p=ABC123longkeypart1\"\"ABC123longkeypart2"
]
}
也可以看看:https://www.terraform.io/docs/providers/aws/r/route53_record.html#records
答案4
在 AWS Route 53 上,创建或编辑 DKIM 的 TXT 记录,并选择“使用向导”选项,而不是快速输入方法。记录名称应为 default._domainkey.yourdomain.com(或 apropos),记录类型为 TXT。您已经知道所有这些,但粘性位是 256 个字符的记录。
在记录值框中剪切并粘贴 sudo cat /etc/opendkim/keys/yourdomain.com/default.txt 输出的“括号内的所有内容”
删除引号,并将每个带引号的字符串放在其自己的行中(不带引号),然后点击提交按钮。
返回并编辑它,您将看到已添加引号。引号中的这些引号字符串位于三行单独的行上,从而导致多个记录而不是一个记录,因此编辑记录值并将换行符替换为空格(自动换行将使其看起来相同,但在区域记录中保存时其字符不同,并且由于我无法理解的原因,它显示为拆分为<256 个字符块的单个记录,而不是三个单独的记录。
感谢上述 Overbyrd 指出这一点。
这是为了快速轻松地输入 AWS 信息,并提供更多背景信息,以防我自己或其他人需要挖掘有关 AWS Route 53 DNS TXT DKIM EC2 256 字符 opendkim 问题长记录问题的信息。