SOA Record Explained

The Start of Authority record controls zone ownership and secondary refresh behavior

Every normal authoritative DNS zone has exactly one SOA record at the zone apex. In BIND zone files it is usually the first resource record after directives such as $TTL. If the SOA is missing or malformed, named-checkzone will reject the zone.

Example SOA Record

@   IN  SOA  ns1.example.test. hostmaster.example.test. (
                2026051501  ; serial
                7200        ; refresh
                3600        ; retry
                1209600     ; expire
                3600        ; negative cache ttl
)

SOA Fields

FieldPurposeExample
Primary nameserverThe primary source for the zone data, written as a domain name.ns1.example.test.
Responsible mailboxA mailbox written as a DNS name, not as a literal email address.hostmaster.example.test.
SerialA version number that secondary servers use to decide whether to transfer a new copy.2026051501
RefreshHow often secondaries check the primary for a new serial.7200
RetryHow long a secondary waits before retrying a failed refresh.3600
ExpireHow long a secondary may serve stale data if it cannot refresh.1209600
Negative cache TTLUsed in negative responses such as NXDOMAIN, together with the SOA TTL behavior of the authoritative server.3600

Responsible Mailbox Format

The second SOA name represents an email address. The first unescaped dot becomes @, so hostmaster.example.test. represents [email protected]. If the local part itself contains a dot, escape it: first\.last.example.test. represents [email protected].

Serial Number Strategy

The serial must increase whenever the zone changes. A common convention is YYYYMMDDnn, where nn is the change number for that date. For example, 2026051501 is the first change on 2026-05-15 and 2026051502 is the second.

BIND compares SOA serials using DNS serial number arithmetic, not simple unlimited integers. Avoid huge jumps unless you understand RFC 1982 behavior, and keep the process simple enough that operators will not accidentally publish an older serial.

Choosing Timing Values

Refresh and retry values mostly affect secondary authoritative servers. Shorter values can make secondaries notice changes sooner, but they also increase polling. For many small zones, values around 1 to 4 hours for refresh, 15 minutes to 1 hour for retry, and 1 to 2 weeks for expire are common starting points. Match the values to your operational needs and the behavior expected by your DNS provider.

Checking an SOA edit? Validate the whole zone before publishing it.

Open the Validator