This document has been placed in the public domain by Sam Trenholme Sometimes, people may wish to have local names point to external entries with CNAME records. For example, it may be desirable to have the shortcut "google" for "www.google.com". One way one may wish to do this is as follows:
	Cgoogle.example.com.|86400|www.google.com.
MaraDNS, in her default configuration, will not complete the record. In other words, some people may expect Mara to output the following for "google.example.com":
	Cgoogle.example.com.|86400|www.google.com.
	Awww.google.com.|900|66.102.7.104
Instead, Mara simply outputs:
	Cgoogle.example.com.|86400|www.google.com.
I call this a "dangling CNAME record", since the CNAME record is not resolvable by some stub resolvers. In order to resolve dangling CNAME records, MaraDNS can be configured thusly: This will cause dangling CNAME records to be fully resolved; here is what the two MaraDNS servers do to resolve such a record:
  1. A stub resolver asks 192.168.1.1 the IP address for, say "google.example.com"
  2. 192.168.1.1 asks 192.168.1.2 the IP address for "google.example.com"
  3. 192.168.1.2 tells 192.168.1.1 "google.example.com is a CNAME for www.google.com, and I don't have an IP for it"
  4. 192.168.1.1, seeing that it has a CNAME without an IP, asks 192.168.1.2 the IP for "www.google.com"
  5. 192.168.1.2 recursively resolves the IP for www.google.com, and gives this IP for 192.168.1.1
  6. Now that 192.168.1.1 has a complete record, it will send this record to the stub resolver. In other words, 192.168.1.1 will tell the stub resolver that google.example.com is a CNAME for www.google.com, and then give out the IP for www.google.com.
If dangling CNAMEs are not as issue for a given setup, or if they are resolved by the above setup with two instances of MaraDNS, the warnings about dangling CNAMEs can be turned off by adding this to a mararc file:
	no_cname_warnings = 1