We run a mac network here in the office. We have an internal DNS server to manage the network. Everything is resolved to a local ip (for mail.mydomain.com etc). However, we also have an external DNS server for when our users are not in the office. However, isn't it a pain to have to manage two lists? Whenever you change something you have to change another? And you can't have one be a slave of another because the ip are sometimes different (for example mail.mydomain.com would point to a local ip in local dns server but an external ip in the external dns server). Any tricks?
If you're running BIND on your public DNS server, you could configure it to perform what's known as "split DNS". This is where queries from one location get one set of responses, and queries from another location get another set of responses. Other DNS server implementations may support this as well, but there is an excellent howto for BIND which explains the details on how to configure it.
I'll amend that to say that when you configure BIND in this way, each "location" that you're splitting gets its own zone file, so you still have two lists to manage, but they're at least on the same server rather than different servers.