On Wed, Apr 15, 2026, at 08:08, Daniel Salzman wrote:
Hi Bron,

Welcome aboard!

Hi Daniel, thank you!

First of all, I have to say that the ALIAS record type (and similar alternatives) is rather a workaround until
HTTPS/SVCB alias mode is widely supported. We added this type primarily for use with our Redis backend
and we aren't philosophically ready to add processing of it to the server itself. However, I believe we can find
a solution for your needs.

I think that your use case, where the target ALIAS zone is locally available, is not common. Usually, a full DNS resolver
is necessary, which is the biggest issue. Our server is focused on high performance, so performing the resolution
while responding to queries is not optimal. In your case it is not even necessary.

Yes, absolutely -we're not keen to make our server more expensive.  We switched to Knot in the first place because our old backend was being hammered by DDoS attacks, even behind Cloudflare caching frontends.

Possible options:
- Using our Redis backend in combination with https://gitlab.nic.cz/knot/knot-dns/-/blob/master/scripts/redis_unalias.py
   Sorry for the lack of documentation.
- If the dynamic records are uniform across the zones, cannot you use something like (ignore the random zone names)?:

knotc> zone-begin --
OK
knotc> zone-set -- test A 192.168.1.1
OK
knotc> zone-diff --
[.] +test. 3600 A 192.168.1.1
[e92bd5f.4738fa5efafc1ebdc3.] +test.e92bd5f.4738fa5efafc1ebdc3. 3600 A 192.168.1.1
[63da60e39bb6cd76fa.] +test.63da60e39bb6cd76fa. 3600 A 192.168.1.1
[96e07.] +test.96e07. 3600 A 192.168.1.1
[aa.] +test.aa. 3600 A 192.168.1.1
[center.] +test.center. 3600 A 192.168.1.1
[collector.] +test.collector. 3600 A 192.168.1.1
[e6a69.] +test.e6a69. 3600 A 192.168.1.1
[ecbecfc1abcc.] +test.ecbecfc1abcc. 6536 A 192.168.1.1
[hawking.] +test.hawking. 16183 A 192.168.1.1
[noc3598.] +test.noc3598. 3600 A 192.168.1.1
[records.] +test.records. 3600 A 192.168.1.1
knotc> zone-commit --
OK

It's sadly not 100% uniform across all zones.  We have default records, which can be overridden by individual customers.  

  - If you insist on the dynamic ALIAS resolution, a new query module could be implemented.

I do think that the ALIAS resolution the way I did it is an exact match for what we want, it's a layer of indirection for the records which are "a service provided by us" - the kind of thing you'd just use a CNAME for if it wasn't for how CNAMEs and MX records behave so unfortunately.

What do you think? Maybe more details about your deployment would help. Feel free to send
me relevant zone snippets.

Our goal is to be able to switch all the records with IPs starting 103.168 to IPs in a separate datacenter when transitioning traffic to the other site (either deliberately, or for disaster recovery)

Here is a zone which is absolutely vanilla, no special records.  It's one of my family's domains:

lorinna.net.	3600	IN	SOA	( ns1.messagingengine.com.
	postmaster.messagingengine.com.
				2026041300	;serial
				86343		;refresh
				600		;retry
				1209600		;expire
				3600		;minimum
	)
lorinna.net.	3600	IN	NS	ns1.messagingengine.com.
lorinna.net.	3600	IN	NS	ns2.messagingengine.com.
lorinna.net.	3600	IN	MX	10 in1-smtp.messagingengine.com.
lorinna.net.	3600	IN	MX	20 in2-smtp.messagingengine.com.
lorinna.net.	3600	IN	A	103.168.172.37
lorinna.net.	3600	IN	A	103.168.172.52
lorinna.net.	3600	IN	TXT	"v=spf1 include:spf.messagingengine.com ?all"
*.lorinna.net.	3600	IN	MX	10 in1-smtp.messagingengine.com.
*.lorinna.net.	3600	IN	MX	20 in2-smtp.messagingengine.com.
*.lorinna.net.	3600	IN	A	103.168.172.37
*.lorinna.net.	3600	IN	A	103.168.172.52
_dmarc.lorinna.net.	3600	IN	TXT	"v=DMARC1; p=none;"
fm1._domainkey.lorinna.net.	3600	IN	CNAME	( fm1.lorinna.net.dkim.fmhosted.com.
	)
fm2._domainkey.lorinna.net.	3600	IN	CNAME	( fm2.lorinna.net.dkim.fmhosted.com.
	)
fm3._domainkey.lorinna.net.	3600	IN	CNAME	( fm3.lorinna.net.dkim.fmhosted.com.
	)
mesmtp._domainkey.lorinna.net.	3600	IN	CNAME	(
	mesmtp.lorinna.net.dkim.fmhosted.com. )
_autodiscover._tcp.lorinna.net.	3600	IN	SRV	( 0 1 443
	autodiscover.fastmail.com. )
_caldav._tcp.lorinna.net.	3600	IN	SRV	0 0 0 .
_caldavs._tcp.lorinna.net.	3600	IN	SRV	0 1 443 d27457.caldav.fastmail.com.
_carddav._tcp.lorinna.net.	3600	IN	SRV	0 0 0 .
_carddavs._tcp.lorinna.net.	3600	IN	SRV	( 0 1 443 d27457.carddav.fastmail.com.
	)
_imap._tcp.lorinna.net.	3600	IN	SRV	0 0 0 .
_imaps._tcp.lorinna.net.	3600	IN	SRV	0 1 993 imap.fastmail.com.
_jmap._tcp.lorinna.net.	3600	IN	SRV	0 1 443 api.fastmail.com.
_pop3._tcp.lorinna.net.	3600	IN	SRV	0 0 0 .
_pop3s._tcp.lorinna.net.	3600	IN	SRV	10 1 995 pop.fastmail.com.
_submission._tcp.lorinna.net.	3600	IN	SRV	0 0 0 .
_submissions._tcp.lorinna.net.	3600	IN	SRV	0 1 465 smtp.fastmail.com.
mail.lorinna.net.	3600	IN	MX	10 in1-smtp.messagingengine.com.
mail.lorinna.net.	3600	IN	MX	20 in2-smtp.messagingengine.com.
mail.lorinna.net.	3600	IN	A	103.168.172.65

And here's one where the apex A record and www A record are pointed to an external system, but the rest is managed at Fastmail.

miv.org.au.	3600	IN	SOA	( ns1.messagingengine.com.
	postmaster.messagingengine.com.
				2026041300	;serial
				86223		;refresh
				600		;retry
				1209600		;expire
				3600		;minimum
	)
miv.org.au.	3600	IN	NS	ns1.messagingengine.com.
miv.org.au.	3600	IN	NS	ns2.messagingengine.com.
miv.org.au.	3600	IN	MX	10 in1-smtp.messagingengine.com.
miv.org.au.	3600	IN	MX	20 in2-smtp.messagingengine.com.
miv.org.au.	3600	IN	A	178.62.49.34
miv.org.au.	3600	IN	TXT	(
	google-site-verification=3xg8-ieU1iufBCuguKrrUSGTEnrDYy7aSnPLvN66XHk )
miv.org.au.	3600	IN	TXT	"v=spf1 include:spf.messagingengine.com ?all"
*.miv.org.au.	3600	IN	MX	10 in1-smtp.messagingengine.com.
*.miv.org.au.	3600	IN	MX	20 in2-smtp.messagingengine.com.
*.miv.org.au.	3600	IN	A	103.168.172.37
*.miv.org.au.	3600	IN	A	103.168.172.52
_dmarc.miv.org.au.	3600	IN	TXT	"v=DMARC1; p=none;"
fm1._domainkey.miv.org.au.	3600	IN	CNAME	fm1.miv.org.au.dkim.fmhosted.com.
fm2._domainkey.miv.org.au.	3600	IN	CNAME	fm2.miv.org.au.dkim.fmhosted.com.
fm3._domainkey.miv.org.au.	3600	IN	CNAME	fm3.miv.org.au.dkim.fmhosted.com.
mesmtp._domainkey.miv.org.au.	3600	IN	CNAME	(
	mesmtp.miv.org.au.dkim.fmhosted.com. )
_autodiscover._tcp.miv.org.au.	3600	IN	SRV	( 0 1 443 autodiscover.fastmail.com.
	)
_caldav._tcp.miv.org.au.	3600	IN	SRV	0 0 0 .
_caldavs._tcp.miv.org.au.	3600	IN	SRV	0 1 443 d442465.caldav.fastmail.com.
_carddav._tcp.miv.org.au.	3600	IN	SRV	0 0 0 .
_carddavs._tcp.miv.org.au.	3600	IN	SRV	( 0 1 443 d442465.carddav.fastmail.com.
	)
_imap._tcp.miv.org.au.	3600	IN	SRV	0 0 0 .
_imaps._tcp.miv.org.au.	3600	IN	SRV	0 1 993 imap.fastmail.com.
_jmap._tcp.miv.org.au.	3600	IN	SRV	0 1 443 api.fastmail.com.
_pop3._tcp.miv.org.au.	3600	IN	SRV	0 0 0 .
_pop3s._tcp.miv.org.au.	3600	IN	SRV	10 1 995 pop.fastmail.com.
_submission._tcp.miv.org.au.	3600	IN	SRV	0 0 0 .
_submissions._tcp.miv.org.au.	3600	IN	SRV	0 1 465 smtp.fastmail.com.
mail.miv.org.au.	3600	IN	MX	10 in1-smtp.messagingengine.com.
mail.miv.org.au.	3600	IN	MX	20 in2-smtp.messagingengine.com.
mail.miv.org.au.	3600	IN	A	103.168.172.65
www.miv.org.au.	3600	IN	A	178.62.49.34

And here's one that runs entirely separately, just using Fastmail for DNS:

dkim2.com.	3600	IN	SOA	( ns1.messagingengine.com.
	postmaster.messagingengine.com.
				2026040300	;serial
				86265		;refresh
				600		;retry
				1209600		;expire
				3600		;minimum
	)
dkim2.com.	3600	IN	NS	ns1.messagingengine.com.
dkim2.com.	3600	IN	NS	ns2.messagingengine.com.
dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
dkim2.com.	3600	IN	A	134.209.211.166
dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
*.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
_dmarc.dkim2.com.	3600	IN	TXT	( "v=DMARC1; p=none; rua=mailto:dmarc@dkim2.com"
	)
ed25519._domainkey.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=ed25519; p=H4AK/+/8XXxmn/bnyOHaqPpyJtrqBf80sgZpnepMPUQ=" )
fm1._domainkey.dkim2.com.	3600	IN	CNAME	fm1.dkim2.com.dkim.fmhosted.com.
fm2._domainkey.dkim2.com.	3600	IN	CNAME	fm2.dkim2.com.dkim.fmhosted.com.
fm3._domainkey.dkim2.com.	3600	IN	CNAME	fm3.dkim2.com.dkim.fmhosted.com.
mesmtp._domainkey.dkim2.com.	3600	IN	CNAME	(
	mesmtp.dkim2.com.dkim.fmhosted.com. )
sel1._domainkey.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa;   p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvwtNJpRLYM99Ya2Vm5Th/BUxw7MazipAvYMHJA80TD9P1F5gx6eHMT8kErqOG5w7ngZPAoEvH0Dq2rfyGC7gqp93RR7xCD/YNm72/uq9NC+zv1gQ3IqeHbKJEd8MQMj4CL+0fhRyAPpMWEPirYGSgVDxKjJHwa0XLlt00iI6DV1m/IhbH2hzcd6WfBBdiFLV+ovTS8InQDedl12aJtRJv/gKLA+6+Nd4DlTb3mBT2JvT0WoIbJ43pZpBR8ItXHOGT75mxMILEcWI2EhtPq/GaJHWbn7RxgyV0I44bTUiKut+8udflCjSpiOBXlFNp20bUQTjNxKNcCiLGFzc8cYFIwIDAQAB"
	)
dev.dkim2.com.	3600	IN	A	134.209.211.166
mail.dkim2.com.	3600	IN	A	134.209.211.166
mailman.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
mailman.dkim2.com.	3600	IN	A	134.209.211.166
mailman.dkim2.com.	3600	IN	A	134.209.211.166
mailman.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.mailman.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
sympa.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
sympa.dkim2.com.	3600	IN	A	134.209.211.166
sympa.dkim2.com.	3600	IN	A	134.209.211.166
sympa.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.sympa.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
test1.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
test1.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.test1.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
ed25519._domainkey.test1.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=ed25519; p=hwjviTXyzUXSCWayBqE17s/4NSynQKxw58jayHudRAI=" )
rsa1024._domainkey.test1.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIubB7x1q3rNGDWgObuKSOyYVtVKmcJpIvtWdRzg71iGRGqMdEE18GAOk+6j+GAcHTppkh4qR1d9vOl4S1L8ClAvSFUz0azi31fLQcMpZbagyseSq9FnF4nHL/7MAA2brAXkVCQ1rZLKNHMwkXGggkA9kg+LloNfSML+utkhN3gQIDAQAB"
	)
sel1._domainkey.test1.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqRtvI17L4pHwF58KhyjiN7d74ZHDZia1IOzuXA6hygEuxt0+0Ey9PJvrDpKp/JsJIiJ0Ji8hrQfeMbAX5wHpz8GAkRlWOdorPuZiMZegTU9oD9nWRO/GcAu7Ub4V1pF6AwwfykCmzKbomX7jWa1y0oNgMHMUeZAi1XveQ6cfebJOwtgqWMOTSenY8+p8hU97YFxwKXO0FsAQYvNMMSZAXPM00V/ZaxiZ1UZUCMM/uesVkU7pIOzItGEjoWUrPkIos1GGf+2nBncqNgmivPkJPFeaJXOIL1iHqKJrSzZuTxCWPTQ+JVPyeAgDk0xyGK3RbiyItPjVZhBs7sZekNGVCwIDAQAB"
	)
sel2._domainkey.test1.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqiTwabnGlrGDoPlSHpfiWjsbwucsezwm/iU9bjloGqothOM7XNIrS1ub2f5BNz9yQjOhWGJ+fo8DOnF9YdUKXkBxuUdt49eyClLDaUG4Q35hJBWFF1MsmihtJpo6PzXGZYP/c4mPc2vXTPd3hbAqkftMgUCOCUIUyUEXhMl/R6/XkXATcyDId3TsSyQUJk3U+2r/wQJGz5JkOxyDX1NEawfh3GDuppCUFZFWnsrEvolBGDqZk8RG2FNmRysglRau4z9GG8jieXG4NjIT/yOh3pjbYGq4tgrMVZ7AcrIpCRbEJTUCExgrh3iQRXReVPy2qhcgY6BQLF2ahiTBUm2wAwIDAQAB"
	)
sel3._domainkey.test1.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr8xHmZoXE3P12DNh5jhFAJjtI9kosn3bISKWYNyn2PAn8E+Ik70iScLj8bFUNcjlLRtBDo5KZ323gdoYS3AUBSJlbkLJKCnQnH6pY+rawmt5kCNJm15DTFlOyZhaMWUilFyVzzGDqXf3d/VzFiX+13GnDdwR1QOnbOTMKx9Y0+nEhlnqRwv3YFjAO1aQOdFzguxMi5wiZQIFtmwwY8GgFIVrEqFq4UCU/hc/E2YcYjHv5zg2KR/zJivfXdLOceHqzJTYdOca/IDqfat2IgOooVVsfHZCCScOutZe9JwWYt98EOiFfvmLs3pvJnBLyGM2BOZUpJnkXSDCnTKxboRnqQIDAQAB"
	)
test2.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
test2.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.test2.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
rsa1024._domainkey.test2.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcSzEVS5IaMQZWJaqmA7dnD1fHuks1mqzY9RfQn9skWCYJZxHx0d45oSSrMt8lSKZiN4FLgbBl0jiLWXq+oPP3rUEhQrqElzyzo1Swn1Phsq45ij655pXFgZpfXvS95nP2GGDrQLcZhi5VNDg9ACoitB1CtxTipRXm8anlzLtg2QIDAQAB"
	)
sel1._domainkey.test2.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAolQDA1kFcPW13OQNJv7zEGhf18S+PU8oGUOSScVYRJELDUxZzv0i1OsyNW5T2hZlmTDFRszoxstj1o8JBn9nYm6zfdvr4w8JS5SrAEx8MzI4N/SghA334hbXtXQZ3br179XVgTMGJL0OMWw2Qp0c9HQAtQNF3ckeMiPncWp8e58in5YCjvHhezl8/VGrBx+CsDKxT8JFs/0QluC6AFQuM9ZIsm3RPwf4BsPE0/ADpuA5GUUdYUzhNt2Uq9Wr82BJLt8cy1a9FVEGKxdMhgJ7Gx4hx8GpM/oaiQYMO9VmNZVz8n87BkNOnjlpYFCtfb9FH8/mYPwqaSa0DmcahfeHVQIDAQAB"
	)
sel2._domainkey.test2.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3i4wXkWpIYib21p0CZx1dobNCYababIxIZAJO5SEGiK++C7jLgnpqg+lvTKS7eR5q1MO3ZCY19Bgm/PcigLvuLtMzap4yY+h9hnsQYzrdcAamzrpB3cjiNoCNhT0Zp7kRI6Rx0t2Uc91e0CvaFf8zAJIF4VUyQNXx9Gn/SEtNr0iQCNsPptGA1PUGUwDQUGze7fkXtnBOrgvNjILfnUC7MA6W+2+mCYtHzOkRB+t6SMutR2cDSXabjYBL5/1bweL6ABDouGgBnIj9LrY6RcbzrBpLuUAuXi71dLEHs0KW0UdImyUpE1i+thKqhNGaYnaL8KrTlDUC8g62T2kQNuHJQIDAQAB"
	)
sel3._domainkey.test2.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuDOUuL/rLDi7fohdOw/sk31eGe5CtX9UEw5pSQv/EyYwW9lxZqi9SwU8Of+z7uHLMFJi+YbYV25CYDUrDIE71WLKou3FL0WyH0U4DrZoR7CBnMjRz92Lqh+VV1PJz0t5mU8YD0O+JJ80jScKIIcC8r1qysQI9Y7EdIAWFZlYS97c6WhKVg94xeOAaRDnpbr80H29g9pqGs4Yk4Hc1r5OXptj12sBMO7JCz/4dQ2Di0JsPOwEjWNbV9ysz8EcSW/+RoFG5Iomf4/q/aW7T6tUGqdj8M0eQ0TO0xW0lc4jqKUHH85LbdZFhcDIBUg8ML6mRgSVy779MxMP7+uw3iVLQQIDAQAB"
	)
test3.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
test3.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.test3.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
ed25519._domainkey.test3.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=ed25519; p=reUWo3pXLWHk5dILIK4NoCR3F2iACFdQ/FlhvVvMtxc=" )
sel1._domainkey.test3.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAju2t0p4xwgCT4UCRgfNZ27U6nhQ5sHSV23hR2TBngda8yAChPInsdVyjJv+cSeZf7tG7yKrzKTM9KaKK8BzBguYrJ9DRJqg7MPPsXlZJ53Ydku3GKLcuiBmDrwUxyBGAMFxndVs+uNJkF2qi+RK0Dgd45wMZiJJF1K3bPjkkQub4Ex4MXvbIqqThthlYiKUGHFBPKg7DALkdoIlegrAP4xZ43Cszd5u9AvNdjvAr31ajjaGrGuQH+gW5kXdwZpDiQgvi0Obnr7AZeVSyr4I5CTNLoj4ed4I0AOJ3TsoZM1fFzHr/rqhL+oEKW3tA7UYGaRoXFDei0qLXhRGTJjzscQIDAQAB"
	)
sel2._domainkey.test3.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAynXlN4POdoj82RpdpD7iG8RR/RF1TjQxy65Fu/12cV0YYX1mZLOHcvSUkxkxMKSxdZnv/7UKuQcbdQXC7jBah/JQNYzLVDUe3bKbrjsypczRPYKajxnEYCsjvoKDR9g2XtlppGrchst77wcj3SWplz2MGBk5E2SGVo1TuvuRt2S0iiye8+Z2KBaVUE3t55YxRHhjIfudboyq4Vqt6o1/6gl7eieZjqfqIBcU8k1xgEG5EG5GYCV12cUzvFU4Q5jPIzDWydppSN+jsIdSRbA8E0GweeRYumuNHryfDexZ04GafvjDwC+b9PCD5r8xiyt7N8gPNG052smGeK39N9Y/TQIDAQAB"
	)
sel3._domainkey.test3.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmJR1PxhxeO2eZlHPZfikAOyn/95rjszoGWRZti+0VyitapUVvla9noM3w0rbFEbVwW4Y3ILqY7j1C1jiM02okbYNYwE0CC1WSTGUrSoyRV7nGFJ5n6vcLCLqE9EFJwFnUCCXDTz+90D4aiXgasm/MAJJMkBQzdrrpQTwnLGVfWYGenqUWJ1+yn8kXmDq/wub0oE5G3DEE7noCgxpzkEd6tqCIJ3Z1wcA9qnUsTBjmDLPEZAwc4ajwZ/cfXceDXnprUKlFvq9tfMReKfObT2g6/iBsesBLCsuYgHKRydNqT1+YU0GmkSQkXutgyH5o4WzkUsPim2saIiTkVPTCtbWBwIDAQA"
	)
test4.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
test4.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.test4.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
ed25519._domainkey.test4.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=ed25519; p=fJAwKEPblCYdjrEIPeyOFy6AeXZUBALBdGQRjSPe97c=" )
sel1._domainkey.test4.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqxfEjz2MPZ7ZiE/uQkgPOC7mn0CweB5MZgHMqgGPQodj2DpbILnxBivC64VV5/JItBaNCtEL3UFY1YzlJOKzqjJacF66u9en4m6L6uC31vrHmVME6+rx7B5nMBlkwPheamx8Dyf+wNo3/9UCKxSdFdtiJLpLGC7Tg2ry7tpxST4Joaf9fIggc3Zmaraidk0S0uJKQq6ZKoZtjJkt0Bd+LGEnGC6C9/lrjHarnImc1bcELpJrzmneOmJO1/b4C8TXawu7luKn6dTWhujAOam+sO4vXxwpCDEa2saSrB6ru2Ef4ittBVn8fYDCwCjqbniU3B/g7BcBYnnMLUvQecZEqwIDAQAB"
	)
sel2._domainkey.test4.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApolcHH25pnffLSu90xCKJINg7wItlff/H1x529bcRoYDl171r7rqnXA4dBaVSQoIK+vHsoizucMNw1dvdlxgdjOjBxJQOzF5gT4rvFjXn6gJG41MJcAolxA12FAM3XAlYmy2tE5jIU9TXenLgnXzLuf+YYLWsU2XHFO7yQkOwakgLFVQ7hljB1lCA6gWdERj1pa/v0njvBCK2k4+n70cS0CVE4n1zeKUSM/WHhqrW1ty2N4DW47JpBlbmJLepMuR3wPnkE7vL4OR+2HmZ+x6DzdZbzo0FFvh7jdfjlX/BB84ixaXIsJfEzWZMRc6DF+7oQIJ7WkyAETX2CXp/GpQwwIDAQAB"
	)
sel3._domainkey.test4.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiy1mVSb6jt4Y4m0V2M3/e/azZBQUGjahidiAgIE/4ZrJn65azagf3byfJwSvyxbnUSNvvJRf4aEiktKVOWKm9HbFMB8bS972Uj6IhviNrbrI7fdos/wv7SB7lCEVETKHC8lot7mw3xD86RLzhBFlBpgKreQrN0bXGC7vkMLE5Noxxj1BdVOEL7RQf96NGgi08ksgvlOMAcEVsVrGYJbrqAW85QJYe/0oQTb9BB86gRqweaZprFPDKB0/UUlRMNNR3+Zwrp7ibb8c0QXaDJ4V+5k2ABw8Cp99uXHeK8K50nfakQnY5EUlQ8lpCIG2JHLHTF7s4TbnXJST7Jy5RSmNywIDAQAB"
	)
test5.dkim2.com.	3600	IN	MX	10 mail.dkim2.com.
test5.dkim2.com.	3600	IN	TXT	"v=spf1 a mx -all"
_dmarc.test5.dkim2.com.	3600	IN	TXT	"v=DMARC1; p=none"
ed25519._domainkey.test5.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=ed25519; p=IAG1F5P3LD1Q8Y67PeW7YJLuvrM19wpaof+dzdC679I=" )
sel1._domainkey.test5.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0YUNs4TOful7xAtEh/PcKbVRvxBOOC52crCwqRCeVUnsvyOPx/qtY0oA2qPZVzDFU/h3fyz54eqYMiOIbxJavt3+nDNf8VfyHxQfc6+JdHdcHAJDpM1EMgN5awMxvc76csMVN6hnYFeOuSZECQy8Kr2C8QPCTcoMeNmR0udfKBo17Gjx4Wg9QDlc0CrzdenXscs0+D/3Y47lN1KllQeBAR7wvTVFoFKvSZ2CvwW264Syx76viMd0+JaK0YdhAcphMuHeNWzCKA+pMVD45gtikpkOQo+MBQIV96lNXa3fEw20S1IZfCMZHMSBbLmsiDY4luCe6kA08khNaE/zBi1GbQIDAQAB"
	)
sel2._domainkey.test5.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwSkJ+kfygUujU2u3tquvkjpPV/Gluz9k7rNnDfQwSddbZLOtDSQRt5pA04fjUcS+PraUAg2arKuGv05Nuw/X0ts7bh3N0b2Iwbg1IEGGa6gXMmJ6Lj5T0O716rk0GOvdWqLz/466MzCH8viwPwSLY25EBDD3r1Y9o58xy6VhiUuMsqttjzsk743A0wKQHr5FEYim0qnfY0ePfAr0s36XItgQaXH9pkr2CPmqSXlIwKN99h2TJVcf86dMDqxuqUnI2OilwKcGtMk2/oMxC3A5gGgFkivxUIdoKs0Y/JruR6mvnoFREbC5GToWNGCgciYbxMfaQIRO9tJwyPGl8gPpiQIDAQAB"
	)
sel3._domainkey.test5.dkim2.com.	3600	IN	TXT	(
	"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsU7LuV9aZv8jiNflYQBEpGjGjzKF+PBBFSezLBkRsYQ8IKcmCa0v/BI2hC0h0DGqtOb4dz640F3oZFRyUcX5PsKinm6SChl1qOog4+3oNFs7bhe3NJm7MRgTCSKomEWKXJei303wy/iDKtm+KUL8mSFNlAr3FnVTxXq2LY+rUG786Ha7xvK7NeLN4+R22061QVf+rqWhMgZB0fEGzIAVx2C7P2dCMT1sZoPPXHajXmw36LbOUDp151tfH7LQ9qdPL+08FYjM4xoJdLy3kgHATb0bnebq0Mfxym2x14nI6YoOzqE+fcL4xJXqfVISC1Uyvx0ndNO6jajsBIbr2ihKewIDAQAB"
	)


... so basically my idea is to replace every current 103.168.172.x IP in our generated zones with an indirection to the actual service name, and then be able to update just that one zone file in order to change the IPs which are served for that service.

I'd be happy to re-implement that as a separate plugin, or as variables or some other way to do that indirection - I just want it to keep the DNS service fast, and allow me to switch all those records all at once.

Thanks,

Bron.
--
  Bron Gondwana, CEO, Fastmail Pty Ltd / Fastmail US LLC
  brong@fastmailteam.com