【问题标题】:splitting DNS IN TXT records over multiple lines for DMARC et al为 DMARC 等人在多行上拆分 DNS IN TXT 记录
【发布时间】:2015-06-01 09:27:50
【问题描述】:

dmarc.org,建议可以将 DNS 的 IN TXT 记录以特殊形式写入区域文件中,以使它们不会溢出文本编辑器中的行。

使用 常用命令行工具:

% dig +short TXT _dmarc.example.com.
"v=DMARC1\; p=none\; rua=mailto:dmarc-feedback@example.com"

要发布这样的记录,域所有者的 DNS 管理员 在相应的区域文件中创建如下条目 (遵循常规区域文件格式):

; DMARC record for the domain example.com

_dmarc  IN TXT ( "v=DMARC1; p=none; "
                 "rua=mailto:dmarc-feedback@example.com" )

我已经尝试在我的实际区域文件中使用 NSD 执行示例;但是,当我随后查询域时,实际上我也得到了包含多行的结果。

% dig +short TXT _dmarc.example.su
"v=DMARC1\; " "p=reject\; " "rua=mailto:rua-dmarc@example.su"

这是预期的吗?这是否可能会破坏一些应该解析这些 TXT 记录以获取 DMARC / SPF / DKIM / 等的软件?

【问题讨论】:

  • 对于多行 TXT 记录如何在内部处理的参考可能有助于了解这里是否存在问题
  • 拆分是可能的,但这不是解决方案。我已经实现了这一点,但仍然从 gmail、yahoo、google、rocketmail 收到“DKIM 失败”报告。并且 Mxtoolbox mxtoolbox.com/dkim.aspx 也报错。
  • @OzBob 我有点怀疑每个人都会有这个问题;事实上,我仍然在自己的配置中使用了上述拆分,但我仍然经常收到来自 Google 的 rua 电子邮件,所以,您的问题可能与其他问题有关。

标签: dns dmarc


【解决方案1】:

TXT 记录的各个组成部分每个最多只能包含 255 个字符,因为它们以<length><data ...> 格式在线传输。

任何可能需要超过 255 个字符的代码都应该能够将多个组件合并为一个字符数组。

在主文件格式中,字符串周围的大括号表示多个组件将包含在单个 TXT 记录中 - 如果没有它们,这将创建两个单独的 TXT 记录,并且这两个记录的相对顺序将是未定义的并且主题改变。

【讨论】:

    【解决方案2】:

    这很难说,因为这取决于 DMARC 检查器的最终实现。但是,即使在 DMARC 文档中有详细说明,DMARC 记录也不会太大,以至于您可能会溢出您的编辑器。

    在我的例子中,使用 Ubuntu Trusty (14.04) 上的最后一个 opendmarc 包和 Postfix,在处理一些奇怪/格式错误的 DMARC DNS 记录时导致守护进程崩溃(但不完全是你提到的情况)。

    我会简单地添加单行方法并确保安全,这不仅是因为检查器软件可能会损坏,而且更糟糕的是您的邮件会被拒绝,因为实际上政策似乎并没有得到一致是!

    所以我只是添加这样的东西:

    _dmarc.example.su    IN TXT "v=DMARC1; p=reject; rua=mailto:rua-dmarc@example.su"
    

    【讨论】:

    • 好吧,我也想指定ruf,然后行变大了
    • 在我看来仍然不够长的行将其分成几行。请记住,DKIM 记录中包含一个完整的公共证书,它们通常在一行中创建,没有理由担心将它们全部放在一行中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    相关资源
    最近更新 更多