So, my server's primary hostname is internet.practiceofcode.com. This is defined as an A record, and the reverse lookup has been correctly configured:
# host -t a internet.practiceofcode.com
internet.practiceofcode.com has address 118.127.56.29
I have assigned this hostname as the MX value for a number of other domains:
# host -t mx radic.com.au
radic.com.au mail is handled by 10 internet.practiceofcode.com.
The zone file for that domain is as follows:
$ORIGIN radic.com.au.
$TTL 3600 ; 1 hour
radic.com.au. IN SOA internet.practiceofcode.com. hostmaster.practiceofcode.com. (
2011101002
3600 ; refresh
3600 ; retry
604800 ; expire
3600 ; minimum
)
NS internet.practiceofcode.com.
NS backup.practiceofcode.com.
MX 10 internet.practiceofcode.com.
MX 50 backup.practiceofcode.com.
TXT "v=spf1 a mx ?all"
However, when using named-checkzone to validate it, it (seemingly erroneously) tells me that internet.practiceofcode.com. is a CNAME:
# named-checkzone radic.com.au. radic.com.au.zone
zone radic.com.au/IN: radic.com.au/MX 'internet.practiceofcode.com' (out of zone) is a CNAME 'internet.practiceofcode.com.' (illegal)
zone radic.com.au/IN: loaded serial 2011101002
I'm running Debian Squeeze:
# cat /etc/debian_version
6.0.2
And Bind 9.7.3:
# named-checkzone -v
9.7.3
Zone file for practiceofcode.com.:
$ORIGIN practiceofcode.com.
$TTL 3600 ; 1 hour
practiceofcode.com. IN SOA internet.practiceofcode.com. hostmaster.practiceofcode.com. (
2011101002
3600 ; refresh
3600 ; retry
604800 ; expire
3600 ; minimum
)
NS internet.practiceofcode.com.
NS backup.practiceofcode.com.
MX 10 internet.practiceofcode.com.
MX 50 backup.practiceofcode.com.
A 72.32.231.8
TXT "v=spf1 a mx -all"
www CNAME practiceofcode.com.
internet A 118.127.56.29