我正在尝试通过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(它将简单地删除记录)
有没有人有解决方案?
答案 0 :(得分:2)
请记住,在DNS中,我们谈论RRset是资源记录 set ,这意味着对于给定的资源类型可能会有多个结果。
正如您在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,
},
],
等
之后的文档文字明确说明:
记录:新记录列表(替换旧记录)。