D("example.com",REG_MY_PROVIDER,DnsProvider(DSP_MY_PROVIDER),A("@","1.2.3.4"),// The naked or "apex" domain.A("server1","2.3.4.5"),AAAA("wide","2001:0db8:85a3:0000:0000:8a2e:0370:7334"),CNAME("www","server1"),CNAME("another","service.mycloud.com."),MX("mail",10,"mailserver"),MX("mail",20,"mailqueue"),TXT("the","message"),NS("department2","ns1.dnsexample.com."),// use different nameserversNS("department2","ns2.dnsexample.com."),// for department2.example.comEND);
Set TTLs
dnsconfig.js
var mailTTL =TTL("1h");D("example.com",REG_MY_PROVIDER,NAMESERVER_TTL("10m"),// On domain apex NS RRsDefaultTTL("5m"),// Default for a domainMX("@",5,"1.2.3.4", mailTTL),// use variable toMX("@",10,"4.3.2.1", mailTTL),// set TTLA("@","1.2.3.4",TTL("10m")),// individual recordCNAME("mail","mx01"),// TTL of 5m, as defined per DefaultTTL()END);
Variables for common IP Addresses
dnsconfig.js
var addrA =IP("1.2.3.4")varDSP_R53=NewDnsProvider("route53_user1");D("example.com",REG_MY_PROVIDER,DnsProvider(DSP_R53),A("@", addrA),// 1.2.3.4A("www", addrA +1),// 1.2.3.5END);
NOTE: The IP() function doesn't currently support IPv6 (PRs welcome!). IPv6 addresses are strings.
dnsconfig.js
var addrAAAA ="0:0:0:0:0:0:0:0";
Variables to swap active Data Center
dnsconfig.js
varDSP_R53=NewDnsProvider("route53_user1");var dcA =IP("5.5.5.5");var dcB =IP("6.6.6.6");// switch to dcB to failovervar activeDC = dcA;D("example.com",REG_MY_PROVIDER,DnsProvider(DSP_R53),A("@", activeDC +5),// fixed address based on activeDCEND);
varDSP_R53=NewDnsProvider("route53_user1");varDSP_GCLOUD=NewDnsProvider("gcloud_admin");D("example.com",REG_MY_PROVIDER,DnsProvider(DSP_R53),DnsProvider(DSP_GCLOUD),A("@","1.2.3.4"),END);// above zone uses 8 NS records total (4 from each provider dynamically gathered)// below zone will only take 2 from each for a total of 4. May be better for performance reasons.D("example2.com",REG_MY_PROVIDER,DnsProvider(DSP_R53,2),DnsProvider(DSP_GCLOUD,2),A("@","1.2.3.4"),END);// or set a Provider as a non-authoritative backup (don"t register its nameservers)D("example3.com",REG_MY_PROVIDER,DnsProvider(DSP_R53),DnsProvider(DSP_GCLOUD,0),A("@","1.2.3.4"),END);
Automate Fastmail DKIM records
In this example we need a macro that can dynamically change for each domain.
Suppose you have many domains that use Fastmail as an MX. Here's a macro that sets the MX records.
Fastmail also supplied CNAMES to implement DKIM, and they all match a pattern that includes the domain name. We can't use a simple macro. Instead, we use a function that takes the domain name as a parameter to generate the right records dynamically.