当我尝试使用 SPF 语法创建 TXT 记录时,收到错误“CharacterStringTooLong (Value is too long) encountered with {Value}”。如何修复此问题?

上次更新时间:2017 年 3 月 23 日

当我尝试将 SPF 格式的 TXT 记录添加到域时,我收到了错误消息“CharacterStringTooLong (Value is too long) encountered with {Value}”。如何解决此问题?

简要描述

TXT 记录的 DNS 上限为 255 个字节;有关更多信息,请参阅 RFC 1035 第 2.3.4 节。如果 SPF 记录中的某个字符串超过了 255 个字节,则由于 SPF 格式问题,该 SPF 记录无法拆分成多个字符串,并且同一个记录不能拥有两个 SPF TXT 值。此外,SPF 记录的查找限制为 10,其中包括重定向。有关更多信息,请参阅 RFC 4408

注意:如果您的记录是标准的 TXT 记录(不使用 SPF 格式或语法),请参阅如何解决创建 TXT 记录时遇到的“TXTRDATATooLong”错误?

解决方法

要解决次问题,您可以创建多个记录,而不是只使用一个。

在本例中,我们创建了 2 个记录,每个记录包含大约半数的所需记录内容。您可以在一个 TXT SPF 记录中存储一些经过验证的 IP 地址,然后将其余的内容存储在另一个记录中。例如,spfva.example.com 包含半数经过验证的 IP/CIDR,spfvb.example.com 则包含另一半。您可以使用“include”SPF 宏来引用所有 SPF 记录,然后在您的域或子域中仅将其用作 TXT 记录。

或者,您也可以包括 3 个记录,如下所示:

spfva.example.com "v=spf1 ip4:1.2.3.4 ip4:5.6.7.8/31 ?all"
spfvb.example.com "v=spf1 ip4:9.10.11.12/21 ip4:13.14.15.16/28 ?all"
"v=spf1 mx include:spfva.example.com include:spfvb.example.com ?all"

注意:IP 地址、CIDR 和域只是示例。请务必将其替换为您自己的网络设置。

SPF 限定词和结果包括以下内容:

限定词 结果
“+” 通过
“-” 失败
“~” 软失败
“?” 中性

在本例中,我们已将所有记录配置为“中性”,但是您的使用案例可能需要其他组合。

注意:SPF TXT 记录的内容未经 Route 53 进行分析。它可视为纯文本,就像任何其他 TXT 记录一样。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?