I spent a little more time fiddling around, and I think I found a pretty reasonable way to set up monowall as a small but functional independent dns server.
First, you need to set up a standard hosts file with all of the names you want your monowall to serve. Second, you need to set up a dnsmasq.conf file containing the options you need, including things like mx options and so on. The one critical option line is "addn-hosts=/usr/local/etc/hosts". Use exec.php to copy both hosts and dnsmasq.conf into /tmp on the monowall.
Next, you need to store them in on the disk. I'm using a compact flash on a soekris 4801, btw, so ymmd. First, still in exec.php, find out which disk has the permanent monowall image on it, in my case, /cf, mounted on /dev/ad0a. Next, enable writing on that disk, e.g., mount -uw /dev/ad0a. Then create the local.etc directory: mkdir /cf/etc. Copy the two files into it: cp /tmp/hosts /tmp/dnsmasq.conf /cf/etc. Make them universally readable: chmod +r /cf/etc/*. Now you can disable writes on the cf: mount -ur /dev/ad0a.
Now you need to use the backup php page to snag the current config...xml onto your local machine. Insert these two lines right after the end of the <webgui>...</webgui> block:
<earlyshellcmd>/bin/mkdir -p /usr/local/etc</earlyshellcmd>
<earlyshellcmd>/bin/cp /cf/etc/* /usr/local/etc</earlyshellcmd>
This will install the two files into the memory filesystem before dnsmasq is started.
Use the restore php command to load the config...xml file into the monowall, and reboot. At this point, dnsmasq should be using the options you specified in the .conf file, and should be supplying dns information for all the names in the host file you uploaded.
Greg Shenaut