Route 53 不允许我向客户端的现有 SPF 记录中添加内容,因为字符串太长

Route 53 不允许我向客户端的现有 SPF 记录中添加内容,因为字符串太长

我正在尝试向 Route 53 中客户端现有的 SPF 记录添加 2 个条目,但出现以下错误:

*CharacterStringTooLong(值太长)遇到'“v=spf1

ip4:27.127.198.240 ip4:52.63.207.103 include:spf.antispamcloud.com include:spf.protection.outlook.com include:transmail.net include:spf.levart.com.au include:spf.smtp2go.com include:servers.mcsv.net a:spf.inspectionmanager.com a:spf.propertyspace.com include:e.jobadder.com ~all"', Duplicate Resource Record: "google-site-verification=LoYtmNmUIF8G2zgInlqxcJDvlrV19_w5I72mD9*

我尝试添加的两个条目是:

  1. a:spf.inspectionmanager.com
  2. a:spf.propertyspace.com

有人可以告诉我拆分字符串的正确方法以绕过 255 个字符的限制吗?

答案1

有一个博客关于拆分长度 > 255 个字符的 TXT 记录的帖子,其结论如下:

您需要将长值拆分为 255 个字符的部分,并将输入括在双引号中。您可以使用我们的 DNS 记录拆分器来执行此操作。

尽管他们写的是有关 google cloud dns 的内容,但对于 Route53 来说也是如此。

您可以查看 octodns 包,它可以处理 Route53(和其他)的字符长度分割就像这样

class _ChunkedValuesMixin(_ValuesMixin):
    CHUNK_SIZE = 255
    _unescaped_semicolon_re = re.compile(r'\w;')

    def chunked_value(self, value):
        value = value.replace('"', '\\"')
        vs = [value[i:i + self.CHUNK_SIZE]
              for i in range(0, len(value), self.CHUNK_SIZE)]
        vs = '" "'.join(vs)
        return '"{}"'.format(vs)

因此,只需将文本分成 255 个字符的块,并用双引号将块括起来",它就可以工作了。

答案2

亚马逊在这里解释道:当我尝试使用 SPF 语法创建 TXT 记录时,出现错误“遇到 {Value} 的 CharacterStringTooLong(值太长)”。我该如何修复此问题?

解决方法是创建多个记录,而不是一个

您可以将一些经过验证的 IP 地址存储在一个 TXT SPF 记录中,然后将其余 IP 地址存储在第二个记录中

相关内容