PowerDNS 的多个 TXT 记录 API

Multiple TXT records with PowerDNS API

我正在尝试通过 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" 参数引起的,但根据文档,我可以使用两个更改类型:REPLACE(具有此效果)和 DELETE(这将简单地删除记录)。

有人有解决办法吗?

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

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

类似(为清楚起见格式化)

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

等等

后面的文档文字清楚地说:

records: List of new records (replacing the old ones).