BIND is a popular package for running DNS services. I like to run my own DNS servers, just so I can be in control of the records if I ever need to make a quick change.
This one's easy. I like using the bind-chroot package with this one as well, which places our BIND daemon into a chroot jail. Given the number of BIND exploits over the years, it's a nice security precaution.
A control script has been placed at /etc/init.d/named, so we've got service functionality again. An entry for named has even been added to chkconfig for us, although it is set to be off at all runlevels. Do a
to turn it on at levels 2345. Now, for each domain you want to set up, you'll have to place a zone entry into /var/named/chroot/etc/named.conf, and put the DNS record in /var/named/chroot/var/named/mydomain.com.zone. I set the zone entries up to point to /var/named/mydomain.conf, so I will create a symlink to each zone file from that directory.
Don't forget to email your ISP and get a reverse DNS entry set up for your mail server!