FREQUENTLY ASKED QUESTIONS
    How to I try out MaraDNS?

       Read the quick start guide, which is the file named
       0QuickStart in the MaraDNS distribution.

    What license is MaraDNS released under?

       None, actually. MaraDNS is released to the public domain.

    How do I get MaraDNS to bind to multiple IP addresses?

       The current method is to run multiple copies of MaraDNS,
       each using its own mararc file.

       E.g:

	   maradns -f /etc/mararc.1
	   maradns -f /etc/mararc.2
	   etc.

       If you just want to bind to all IP addresses your computer
       has, bind to the IP "0.0.0.0".

       I don't think this will be too hard to correctly
       implement, since I already have code for specifying
       multiple IP addresses with the IP ACL code used by the
       zone server. Until then, I will add this workaround to the
       FAQ.

    How do I report bugs in MaraDNS?

       Before reporting a bug that MaraDNS has, please read the
       relevant man pages. The man pages should be installed when
       one installs MaraDNS, and, in addition, are available in
       the doc/man directory of the MaraDNS source tarball. (It
       is also possible that you are reading the man page right
       now)

       Some MaraDNS man pages (namely, the man pages for maradns,
       askmara, zoneserver, and mararc) have a section, titled
       "BUGS", which list already known bugs which I feel are not
       important enough to fix before the 1.0 release of MaraDNS.
       Bug reports which mention one of these bugs will be
       cheerfully ignored (or given a polite "thanks for the
       report, in this man page the bug is already mentioned"
       message if I am in a particularly good mood).

       Subscribe to the mailing list by sending mail to list-
       subscribe@maradns.org with "subscribe" as the subject
       line, and describe the bug by sending email to
       list@maradns.org.

    I am on a slow network, and MaraDNS can not process recursive
    queries

       MaraDNS, by default, only waits two seconds for a reply
       from a remote DNS server. This default can be increased by
       adding a line like this in the mararc file:

	   timeout_seconds = 5

       Note that making this too high will slow MaraDNS down when
       DNS servers are down, which is, alas, all too common on
       today's internet.

    How do I get MaraDNS to automatically start up at system boot
    time

       The procedure for doing this depends, of course, on the
       exact UNIX or UNIX-like system one is using (yes, boy and
       girls, MaraDNS has a Windows port). On most Linux systems,
       this is done by adding the following lines to the file
       /etc/rc.d/rc.local:

	   /usr/local/sbin/maradns > /dev/null &

       One of these days, I will add scripts to place in
       /etc/rc.d/init.d

    When I try to run MaraDNS, I get a Fatal error: Error running
    populate_main program or a Fatal error: init_cache() failed
    error message.

       This error message should not be visible. If it appears,
       subscribe to the mailing list (see above), and describe
       your problem by sending email to list@maradns.org. Be sure
       to include the following information:

       * The contents of your /etc/mararc file

       * The contents of any files in /etc/maradns

       * The full output MaraDNS generates

    I am trying to register a domain under the .au or the .de
    name space, and my registrar is not taking my domain name

       Both the German registrar and the Australian registrars
       require a RR_ANY request to return NS and SOA records.
       MaraDNS can do this if you add the following line to your
       mararc file:

       default_rrany_set = 15

    After I start MaraDNS, I can not see the process when I run
    netstat -na

       Udp services do not have a prominent "LISTEN" when netstat
       is run.	When MaraDNS is up, the relevant line in the
       netstat output looks like this: udp 0 0 127.0.0.4:53
       0.0.0.0:*

       While on the topic of netstat, if you run netstat -nap as
       root, you can see the names of the processes which are
       providing internet services.

    What string library does MaraDNS use?

       MaraDNS uses her own string library, which is called the
       "js_string" library. Man pages for most of the functions
       in the js_string library are in the folder doc/man of the
       MaraDNS distribution

    Why is MaraDNS public domain instead of BSD or GPL licensed?

       So that MaraDNS can be integrated with Python without
       trouble. While Python is, I believe, currently GPL
       compatible, Python was not GPL-compatible at the time I
       decided on a license for MaraDNS.

    Why does MaraDNS use a multi-threaded model?

       The multi-threaded model is, plain and simple, the
       simplest way to write a functioning recursive DNS server.
       There is a reason why MaraDNS, pdnsd, and BIND 9 all use
       the multi-threaded model.

    I feel that XXX feature should be added to MaraDNS

       Before sending mail to the list with a feature request,
       please read the UNIMPLEMENTED FEATURES section of the
       MaraDNS man page, which has a list of feature requests
       other people have already sent me. If you do not see your
       requested feature in this section of the man page, send an
       email to the mailing list so that I can add your feature
       request to the UNIMPLEMENTED FEATURES section of the
       MaraDNS man page.

       Feature requests which include a patch which implements
       the feature in question are may even be implemented by
       MaraDNS, as long as the patch comes with a declaration
       that the patch is public domain.

       Note that MaraDNS is currently "frozen". In other words,
       new features will not be added until after the 1.0
       release.

    Is there any process I need to follow to add a patch to
    MaraDNS?

       Yes. Send a patch to me in email, along with a statement
       that you place the contents of the patch in to the public
       domain. If I find that the patch works well, I will
       integrate it in to MaraDNS.

    Can MaraDNS act as a secondary nameserver?

       Yes, but not in the same manner as traditional DNS
       servers.

       MaraDNS' philosophy for the 1.0 release is simplicity and
       security.  Since it is simpler to make the programs that
       handle the getting and serving of zone files separate
       applications, I have elected to use this approach for the
       1.0 release.

       I feel that one of UNIX's great strengths is the ability
       to use a series of small, simple programs together to
       perform complex tasks. This is the approach I am taking
       with MaraDNS 1.0.

       The "core" of a DNS server ideally is doing little more
       than the following:

       * Converting data from external sources in to the DNS
	 server's internal format using modules.

       * Caching data loaded from "slow" sources of data.
	 (External DNS servers, SQL servers, etc.)

       * Converting DNS packets to requests for data from said
	 sources.

       * Converting data from said sources into DNS packets.

       (Now, with the way I coded the recursive section of
       MaraDNS, I have strayed from that ideal, but that is
       another story)

    What is the difference between an authoritative and a
    recursive DNS server?

       A recursive DNS server is a DNS server that is able to
       contact other DNS servers in order to resolve a given
       domain name label. This is the kind of DNS server one
       points to in /etc/resolve.conf An authoritative DNS server
       is a DNS server that a recursive server contacts in order
       to find out the answer to a given DNS query.

    The getzone client isn't allowing me to add certain hostnames
    to my zone

       For security reasons, MaraDNS' getzone client does not add
       records which are not part of the zone in question. For
       example, if someone has a zone for example.com, and this
       record in the zone: P1.1.1.10.in-
       addr.arpa.|86400|dns.example.com.

       MaraDNS will not add the record, since the record is out-
       of-bailiwick.  In other words, it is a host name that does
       not end in .example.com.

       There are two workarounds for this issue:

       * Create a zone file for 1.1.10.in-addr.arpa., and put the
	 PTR records there.

       * Use rcp, rsync, or another method to copy over the zone
	 files in question.

    I have having problems transferring zones from MaraDNS' zone
    server to a BIND zone transfer client

       BIND is rather picky about what kind of data it will
       accept from a zone server. Make sure the following is true
       with your domain:

       * Make sure that the authoritative NS records are at the
	 top of your zone, immediately after the SOA record

       * Make sure that your authoritative NS records are NS
	 records for your zone

       * To work around a known bug in MaraDNS, make sure you
	 have at least one non-NS record between the
	 authoritative NS records for your zone and any
	 delegation NS records that exist in the zone.

       Here is an example bad zone file:

       Sexample.com.|86400|example.com.|hostmaster@example.com.|1|86400|3600|6048000|86400
       Nbad.example.com.|86400|ns1.example.com.
       Nbad.example.com.|86400|ns2.example.com.
       Nsubdomain.example.com.|86400|ns.subdomain.example.com.
       Aexample.com.|12345|10.2.3.4
       Here is the same zone file, with corrections:

       Sexample.com.|86400|example.com.|hostmaster@example.com.|1|86400|3600|6048000|86400
       Nexample.com.|86400|ns1.example.com.
       Nexample.com.|86400|ns2.example.com.
       Aexample.com.|12345|10.2.3.4
       Nsubdomain.example.com.|86400|ns.subdomain.example.com.
    Is MaraDNS portable?

       While I intend to have MaraDNS be a portable DNS server
       which will compile on a variety of unices, right now all
       of MaraDNS's work development is being done on Linux.  In
       terms of proprietary OSes, I know that SCO Open Server,
       SCO UNIXware and Solaris have issues running a UDP or TCP
       server in a chroot() environment. Word is that, with
       Solaris and UNIXware, placing /dev/tcp and /dev/udp in the
       chroot() jail will allow a server like MaraDNS to
       function.

       See below for why MaraDNS may have problems as a recursive
       nameserver in Solaris.

    How do I compile MaraDNS on OpenBSD?

       There are two ways to do this:

       To use the native thread support add -pthread to the
       CFLAGS variable.

       To use the GNU pthread library, install the pth package
       and add -L/usr/local/lib/pth to the linker.

       (Florin Iucha provided this tip)

    Can I use MaraDNS in Windows?

       Yes.

       Provided, of course, that one has the Cygwin environment
       which emulates a UNIX environment in Windows.

       MaraDNS should now compile fine on Cygwin systems. If not,
       join the mailing list and let me know; I will correct this
       FAQ entry.

    What kind of Python integration does MaraDNS have

       The mararc file uses the sam syntax that Python uses; in
       fact, Python can parse a properly formatted mararc file.
       There is currently no other integration with Python.

    I am using MaraDNS on Solaris, and MaraDNS gives me an
    annoying error message

       There was a known issue with MaraDNS having memory leaks
       when used as a recursive nameserver on the Solaris
       operating system. This problem does not exist in Linux, so
       I can not currently verify that this issue is resolved.
       Until I can get access to a Solaris box, or a Solaris
       developer sends me a patch which fixes this problem (and
       confirms that the patch works), MaraDNS will output this
       annoying error message.
