There is absolutely no need to run OS X Server just to get a web development environment. In fact there are a few good reasons not to!
Just run normal OS X and add the sites to your Hosts file and add the virtual hosts to your Apache conf. If you use Xampp or MAMP (as the built in OS X Apache is a bit rubbish) it's very easy to set up.
- Domains always map to a site on the same box's Web Service - Check
- Local & External IPs often change - Check
- It would nice if it worked on any network - Check
- Sites only need to be accessible locally - Check (Just turn on the firewall or set Apache to only serve pages on localhost)
Configuration should stay put even after rebooting - Check
Need to be able to add new domains at a whim - Admittedly not as friendly as the OS X server interface, but still not very hard to use.
You just do not need OS X server for a personal web development, as you have found out changing IP address will screw up DNS resolution. Also OS X server is optimised for background (service) applications, far from ideal when developing.
Also since you get OS X with your Mac and OS X server costs $500+ it's not really worth it...
To actually answer your question!
Don't use the DNS server use the host file - this ensures that you will get to your virtual hosts regardless of your IP address with the minimum of fuss.
Although... if you had to use OS X Server's DNS server you could create a virtual Ethernet interface assign that a static IP address and use that IP address for your DNS A records. I haven't tested this though.
OK, first things first: Go to you local book store (or library if it's got a decent selection of technical books) and pick up a copy of DNS & BIND - any edition will be sufficient, though if you're buying one buy the latest. Then read this book cover to cover, or at least read through chapters 1, 2, 3, 5 and 6.
I am absolutely serious about this - If you try to set up DNS without a solid understanding of what's going on you are in for a wold of pain, suffering and mysterious breakage. Spending a day with a good book on DNS will pay for itself the first time you have a problem.
Now to actually answer your questions :-)
Re: the issue of being flagged as spam: Hosting your own DNS may or may not solve the problem of your system being flagged as a spam source -- The question you haven't asked/answered is WHY you are being flagged as a spam source (Is it your IP, the lack of SPF records, a bad reverse-DNS entry, or is your server perhaps misconfigured and really being used to send spam?).
You need to answer that question first, then pursue solutions based on what you discover.
If after investigating the incident problem you still want to host your own DNS (either as part of a solution to the incident problem, or just for the experience) . . .
I'm pretty sure the error you're getting from GoDaddy is their way of saying you're missing glue records -- In plain English "You want us to use ns1.xxx.com
as a nameserver for xxx.com
, but we have no way of finding that server".
Prior to using a host within in your own zone as an NS you need to create glue records for it. You can do this in GoDaddy's domain manager's "Host" box -- Add a domain host for each NS you want to use, and the system should then let you specify those hosts as the domain's nameservers.
BIG IMPORTANT WARNING
Before you flip the switch check, double-check and triple-check that the servers you're about to set as the authoritative NS are working properly (they resolve all the names they're supposed to resolve, you can query them from a machine off your network, etc.).
Many admins (probably every one who has ever set up DNS) probably has a horror story about screwing up and knocking their domain off the internet for a while -- Don't be a statistic like the rest of us :-)
Best Answer
Although maybe a little odd, I don't know of any specific standard or specification that prohibits doing such a thing within public DNS in general. There could possibly be some quirk of the GoDaddy platform that causes some sort of issue when using loopback addresses, or perhaps it was removed just because it's 'non-standard' or 'odd'.
If the machines are all on the same network and don't leave it, then could you perhaps create these records on your internal DNS?