I'm a web developer who also handles hosting setups. I often get clients who have an existing site hosted by some local company and it's a real PITA to try to setup a PHP/MySQL site on their hosting, so I prefer to just host sites through a LiquidWeb VPS that I have, with Linux, Apache, MySQL, PHP (LAMP) etc.

I'm trying to figure out how to smoothly move email hosting. The last time I changed the host for a client, it took a day or two for the new domain name settings to propogate, so some emails were going to their old host and some were going to their new host. Is there an easier way to handle that?

How hard is it to setup a seperate host for the email and their website, so that I can just leave email alone and only move the website? When I set the DNS for their domain name I'm just given an option for the domain name itself, not sub-domains such as mail.

The reason it has taken some time in the past is most likely due to MX record caching. Right before a move, it's common practice to set the DNS TTL to a low value, such as five minutes or even one minute. If you're going through something like GoDaddy you can change this yourself, or you can ask your hosted DNS provider to change it.

An MX record is the DNS setting for a domain that lets other mail servers know where to send mail. It can be completely separate from the web server (www.example.com), and often is.

Unfortunately, the transition period for mail transfers is hard to avoid. The only way to avoid it is if the MX record for that domain is pointing at the same host on both sides such as with a Google Apps setup. This is because changing the MX record is a DNS change, and DNS changes can take a long time to fully take hold. Some servers cache records for way longer than the TTL on that record says they should, and that cascades. So when you move MX records, both servers need to be able to correctly receive mail until all traffic switches to the new host.

How hard is it to setup a seperate host for the email and their website, so that I can just leave email alone and only move the website?

This is what the MX DNS record is designed for. It tells mailers which servers at a domain are the servers responsible for receiving mail. This is how mail destined to, say, example.com can be handled by ASPMX.L.GOOGLE.COM instead.