To update a MaraDNS install from 1.0 to 1.2, download the MaraDNS 1.2 tarball, and type in the following command:
./configure ; makeThis is followed by:
make installNo configuration files will be overwritten by the installation of the new MaraDNS 1.2 binaries (making backups of all data files, naturally, is always a good idea).
bind_address = "127.0.0.1" chroot_dir = "/etc/maradns" maradns_uid = 99 maxprocs = 96 default_rrany_set = 3 verbose_levul = 1This will run fine in MaraDNS 1.0. However, when we try to run this file in MaraDNS 1.2, we will get this error message:
FATAL ERROR: Unknown mararc variable verbose_levul Please look for the uncommented string "verbose_levul" in your mararc file and remove this line. The line this error is on looks like this: verbose_levul = 1This misspelled mararc variable needs to either be completely removed from the mararc file, or disabled by commenting out. The following mararc snippet will work identically in MaraDNS 1.0 as the above snippet, and will parse in MaraDNS 1.2 without a fatal error:
bind_address = "127.0.0.1" chroot_dir = "/etc/maradns" maradns_uid = 99 maxprocs = 96 default_rrany_set = 3 # Comment out the misspelled mararc variable #verbose_levul = 1
timestamp_type = 0
csv2["EXAMPLE.COM."] = "DB.EXAMPLE.COM"Is converted as if the line were:
csv2["example.com."] = "DB.EXAMPLE.COM"This affects both csv1 and csv2 zone names. Since hostnames in both csv1 and csv2 host names are converted to lower-case, the impact of this change should be minimal.
upstream_servers["."] = "10.1.2.3"However, this line would do nothing unless the upstream_servers dictionary variable was first initialized, e.g:
upstream_servers = {} upstream_servers["."] = "10.1.2.3"MaraDNS 1.2.07 now mandates the initialization line or exits with a fatal error when parsing a mararc file. The reason for this is to make debugging mararc files easier.
csv2_tilde_handling = 0The above line is also accepted by MaraDNS 1.2 releases starting with 1.2.12.04; this allows MaraDNS 1.2 and 1.3 use the same configuration file.
The reason for this change is because MaraDNS now can use tildes to separate records. A MaraDNS 1.2 csv2 zone file that looked like this:
example.com. 10.1.2.4 www.example.com. A 10.1.2.5 example.com. MX mail.example.com. mail.example.com. 10.1.2.6 example.com. TXT 'Hello, world!'Now can look like this:
example.com. 10.1.2.4 ~ www.example.com. A 10.1.2.5 ~ example.com. MX mail.example.com. ~ mail.example.com. 10.1.2.6 ~ example.com. TXT 'Hello, world!'The way MaraDNS figures out whether to use tilde to separate records is by looking between the first and second record to see if a tilde is present. If so, MaraDNS requires tildes to be between all records. If not, MaraDNS' csv2 parsing is almost completely 1.2 compatible, the only difference being that tildes can not be in TXT records.
Note that, if tildes are used to separate records, the following restrictions are added to TXT records:
Another MaraDNS 1.3 change only affects the unusual case when one has delegation NS records. Let us suppose we have a zone file with the following records:
example.com. A 10.1.2.3 ~ www.example.com. A 10.1.2.4 ~ joe.example.com. NS ns.joe.example.com. ~ ns.joe.example.com. A 10.1.2.5In MaraDNS 1.2, if we send a recursive request for www.joe.example.com, MaraDNS will convert the request in to a recursive request. In MaraDNS 1.3, we will get the following answer:
joe.example.com. NS ns.joe.example.com. ~ ns.joe.example.com. A 10.1.2.5If the old MaraDNS 1.2 behavior is desired, such as for someone who is using the same nameserver to both give out delegation records and to recursively resolve records, add the following line to one's mararc file:
recurse_delegation = 1
bind_star_handling = 0
If, for whatever reason, you wish to disable this feature, add the following lint to your mararc file:
max_mem = 0
csv2["*.example.com."] = "db.example.star"However, this does not work. The correct way to support star records is to have the star in the zone file, not the mararc file, like this:
*.example.com. A 10.2.3.4Have csv2["*.example.com."] will result in a zone file for the domain name "*.example.com." (with a literal star in the domain name), which is usually not what one wants.