1

我正在尝试通过 PowerDNS HTTP API 为我的域添加 SPF、DMARC 和 DKIM 记录。这是我找到的代码示例:

curl -X PATCH --data '{"rrsets": [ {"name": "example.org.", "type": "TXT", "ttl": 86400, "changetype": "REPLACE", "records": [ {"content": "Example text", "disabled": false } ] } ] }' -H 'X-API-Key: changeme' http://127.0.0.1:8081/api/v1/servers/localhost/zones/example.org. | jq .

这行得通,但是当我尝试插入另一个 txt 记录时,只更改内容,PowerDNS 删除旧记录并插入新记录。这是由 curl 中的"changetype": "REPLACE"参数引起的,但根据文档,我可以使用两个 changetype:REPLACE(具有此效果)和 DELETE(它将简单地删除记录)。

有没有人有办法解决吗?

4

1 回答 1

2

请记住,在 DNS 中,我们所说的 RRset 是资源记录,这意味着给定资源类型可能有多个结果。

正如您在https://doc.powerdns.com/md/httpapi/api_spec/#url-apiv1serversserver95idzones中看到的那样,省略号表示您可以在“记录”元素中放置多个项目,因此您应该将所有 TXT立即记录在那里。

所以像(为清楚起见而格式化)

  "records":
    [
      {
        "content": "Example text 1",
        "disabled": false,
      },
      {
        "content": "Example text 2",
        "disabled": false,
      },
      {
        "content": "Example text 3",
        "disabled": false,
      },
    ],

等等

之后的文档文本清楚地说明:

记录:新记录列表(替换旧记录)。

于 2018-04-15T21:32:34.563 回答