The file must first have a SOA record, followed by one or more NS records, followed by other records. The initial NS and SOA records must be RR for this zone. NS records after any non-NS record must be part of another zone. The resolution algorithm will not break if non-CNAME records share records with a CNAME record, but this is not a good idea to do.
Letter | Type | RFC1035 §3.2.2 value |
A | A | 1 |
N | NS | 2 |
C | CNAME | 5 |
S | SOA | 6 |
P | PTR | 12 |
@ | MX | 15 |
T | TXT | 16 |
U | any | determined in third field of line |
A: Has three fields field one: the domain name field two: the ttl for the name in seconds field three: the ip address, in dotted decimal notation Example: Ahost.example.com.|7200|10.1.2.3A records are described with grueling detail in RFC1035. In short, an A record is an IP address for a given host name.
N: Has three fields field one: the domain name of the record field two: the ttl for the name in seconds field three: the domain name this NS points to. Example: Nexample.com.|86400|ns.example.com.NS (N here) records are described in RFC1035
C: Has three fields field one: the domain name of the record field two: the ttl for the name in seconds field three: the domain this CNAME record points to Example: Calias.example.org.|3200|realname.example.org.CNAME (which C is short for) records are described in RFC1035
S: Has nine fields field one: the domain name of the record field two: the TTL of the record field three: the origin of the domain field four: the email address for this domain (in the RFC822, not BIND format) field five: the serial for the domain field six: the refresh (how often to see updates) for the domain field seven: the retry (how often to try when down) for the domain field eight: the expire (how long before the slave gives up) for the domain field nine: the minimum (and default) TTL for the domain Example: Sexample.net.|86400|example.net.|hostmaster@example.net.|19771108|7200|3600|604800|1800SOA (S here) records are described in RFC1035
P: has three fields field one: the IP we wish to point to (in in-addr.arpa form) field two: the ttl for the name in seconds field three: the FQDN for the IP in question Example: P3.2.1.10.in-addr.arpa.|86400|ns.example.com.PTR (P here) records are described in RFC1035
@: has four fields field one: The host that people send email to field two: the ttl for this record field three: The preference for this MX host field four: The name of this MX host Example: @example.com.|86400|10|mail.example.com.MX (@ here) records are described in RFC1035
T: has three fields field one: The host someone wants to get additional information about field two: the ttl for this record field three: The desired text. Any data becomes the record up until a new line is reached. The new line is not part of the TXT record Example: Texample.com.|86400|Example.com: Buy example products onlineTXT (T here) records are described in RFC1035
U: has four fields field one: The host someone wants a data type normally unsupported by MaraDNS for field two: the ttl for this record field three: The numeric code for this data type (33 for SRV, etc.) field four: The raw binary data for this data type Example: Uexample.com|3600|40|\\010\\001\\002Kitchen sink dataThe above example is a "Kitchen Sink" RR (see draft-ietf-dnsind-kitchen-sink-02.txt) with a "meaning" of 8, a "coding" of 1, a "subcoding" of 2, and a data string of "Kitchen sink data". Since this particular data type is not formallized in a RFC at this time, the most appropriate method of storing this data is by using the catch-all "unsupported" syntax.
# Zone file for example.com (example file) # The SOA record must be first, followed by all authoritative NS # records for this zone. Sexample.com.|86400|example.com.|hostmaster@example.com.|19771108|7200|3600|604800|1800 Nexample.com.|86400|ns1.example.com. Nexample.com.|86400|ns2.example.com. # Some 'IN A' records Aexample.com.|86400|10.1.2.3 Amx.example.com.|86400|10.1.2.4 Ans1.example.com.|86400|10.0.0.1 Ans2.example.com.|86400|192.168.0.1 # An 'IN MX' record @example.com.|86400|10|mx.example.com. # An 'IN CNAME' record Cwww.example.com.|86400|example.com. # An 'IN TXT' record Texample.com.|86400|Example.com: Buy examples of products online! # An 'A' record showing the use of percent as a shortcut for the name # of this zone (in this case, 'example.com.') Aftp.%|3600|10.7.8.9 # A 'TXT' record showing the use of the backslash which allows any # octal code in the record Tpercent.%|7200|Get 50\045 off all \%items\% at example.com! # A 'PTR' record which, while marked as unauthoritative, allows this # program to work with nslookup when bound on IP 127.0.0.3 # NOTE: This record is not part of the example.com domain, and, # therefore, can not be transferred with the getzone client P3.0.0.127.in-addr.arpa.|1234|nslookup.bug.workaround.