1. What platforms does MyDNS support?
  2. Is there a web interface?
  3. Does MyDNS support zone transfers?
  4. How come my MX records don't work when I have a CNAME? Is this a bug in MyDNS?
  5. How do I use MyDNS but still allow external (recursive) lookups, like for "www.google.com"?
  6. How do I specify a MySQL socket file that isn't /tmp/mysql.sock?

What platforms does MyDNS support?

MyDNS has currently been compiled successfully on FreeBSD and Linux. If you compile it on another platform, please let me know. If you have modified MyDNS to compile on another platform, please send a patch to bboy@bboy.net.

Is there a web interface?

Yes. In the contrib directory of the MyDNS distribution, called admin.php (screenshot). It is, obviously, written in PHP.

If you write a web interface in another language, please mail me a copy, so that I can include it in the package.

Does MyDNS support zone transfers?

Since MyDNS stores all its data in a MySQL databases, it is very simple to keep your secondary (and tertiary, etc) nameservers synchronized with your primary nameserver. Here are two suggestions:
  1. Configure your slave nameservers to use the same database as the primary nameserver.
  2. Use MySQL's replication capabilities.

If you absolutely must use DNS-based zone transfers, MyDNS supports outgoing AXFR by enabling the allow-axfr option, as well as incoming AXFR via the mydnsimport program.

How come my MX records don't work when I have a CNAME? Is this a bug in MyDNS?

No. It's absolutely correct behavior according to RFC 1034, section 4.3.2.

When a CNAME exists for a name, every other record type for that name, while it may exist in the database, is essentially ignored. Using a CNAME with a wildcard makes matters even worse.

The issue is also mentioned in RFC 1912, section 2.4, which explains the problem more clearly than RFC 1034.

If you really need something that acts like a CNAME but can co-exist with MX and other resource records, check out David Phillips' ALIAS patch (see contrib/README.alias in the MyDNS source distribution).

How do I use MyDNS but still allow external (recursive) lookups, like for "www.google.com"?

To do this you need to use a program that does recursive DNS lookups. I recommend dnscache. You simply set up MyDNS to accept requests on your Internet-visible IP address, and dnscache to accept requests on 127.0.0.1. Detailed instructions can be found in the dnscache FAQ.

As of version 0.9.6, you can put something like this in your mydns.conf file, and MyDNS will listen on all addresses except 127.0.0.1:

listen = *
no-listen = 127.0.0.1

How do I specify a MySQL socket file that isn't /tmp/mysql.sock?

Configure your MySQL client library, not MyDNS. This will have the pleasant side-effect of making all other properly-written MySQL client applications work without additional configuration.

Basically, just add a line reading "socket=/path/to/my/socket.file" in the [client] section of your my.cnf file. Example:

[client]
socket=/usr/local/var/mysql/mysql.sock