Recently, I had to transfer a client's domain to another web hosting account. Actually, the domain was transfered to the same web hosting provider but it was a different account. So the steps taken here could be used to transfer the domain settings to a different web hosting provider as well as another account. Remember there will be some down time so I would advise these steps be implemented when it's late or when you expect there to be low activity on your web site and the email accounts. The downtime will occur depending on whether you are transferring the domain to a new web hosting provider or whether you are transferring the domain to another web hosting account. The latter refers to the same web hosting provider yet a new account.
If you are transferring to a new web hosting provider then you would need to change the DNS settings. There is a way to receive and send email in the midst of the transfer if you set up additional MX servers but let's leave that for another day of discussion. For now, however, we're assuming that you've already changed your DNS settings or your are only simply transferring to another hosting account with the same provider. All the step-by-step images are specifically for the control panel CPanel. If you are using Plesk or some other control panel Webmin then please contact your web hosting provider's tech support team. They should be able to guide you.
The process to transfer your domain to another web account yet from within the same web hosting provider is called 'unassigning the domain'. There are some previous steps you should take to back up your email first before you delve into unassigning your domain.
SET UP YOUR NEW ACCOUNT WITH THE HOSTING PROVIDER
First set up your web hosting account with the your provider. It will make things easier later. Some providers will not allow you to initially set up an account when the domain is already associated with another provider or account. I underline the world 'initially' as this applies only to a brand new account. This is the case for Bluehost anyways. The workaround for this is to simply get a new domain. Some hosting providers will offer a free domain with new accounts so you can use this opportunity to register a new domain and then use that domain to set up the account. The reason for this is that when you first set up an account they will use the domain name as the account name. Every other domain is considered an 'add-on domain'.
Setting up the new account will allow you later simply transfer the files over from one account to another using a good ftp program. I personally use Ipswitch but I believe CuteFTP has that capability as well as many others.
BACK UP EMAIL: BEFORE TRANSFERRING THE DOMAIN
IMPORTANT: First, back up all your email accounts' folder and files. My current web host is Bluehost and it uses a Linux OS; thus, for my particular account, the email folders are located /home1/[account's name]/mail. For some reason, Bluehost has a number '1' immediately after 'home'. It may simply be/home/[your account's name]/mail for your account. If you've set up your email accounts as IMAP then the download process could take awhile. Click on the image for a larger view.
A technician told me to the do the following though I did not test it and I suggest an alternative way to backing up your email (read below). Here is what he suggested: if you have your email set up on your client program using IMAP protocol then change your email accounts to POP protocol. This action will download all your emails to your client program on to your local computer. Essentially, you are downloading your emails off the server. This could take awhile so just be patient. IMPORTANT: please note this step should be completed for every email account. Once you've unassigned your domain and re-established your email accounts in your web hosting account then you may change the settings back to use IMAP. Now, the only problem I had with his suggestion is that, at least within Mozilla Thunderbird, one can't readily change from IMAP to POP. Also, I'm not convinced (though, again, I haven't test his procedures) that the client program will 're-upload' all the emails you just downloaded from the servers (since you previously set your email account to use POP).
So here is my suggestion: simply back up all the folders, sub-folders and files from within the mail folder as suggested earlier in the first section. It's the same as backing up your email. Once you've re-created your email accounts in your new web hosting account then simply re-upload the sub-folders and files to the appropriate folder. That's it. It's simpler. Remember, if the file sizes are large then re-synching your email accounts with IMAP may take awhile. Just be patient.
BACK UP DATABASE
Don't forget to back up our database tables for this account just in case. I do not believe unassigning will delete those tables and database but it's always a good idea to back them up.
UNASSIGNING THE DOMAIN TO TRANSFER
Click on the Domain Manager once you login to your CPanel control panel.
Select your domain from the domain list. It's in your lower left corner.
Then click the unassign link.
TRANSFERRING OR UPLOADING THE BACKED UP EMAIL
Re-upload your backed up email to the servers.
If you've changed to another web hosting provider then you will need to update your incoming and outgoing mail server settings in your email client's program. In my case, this would be Mozilla Thunderbird. If they are the same web hosting provider then most likely the incoming and outgoing mail servers will be the same so no need to change anything here.
Then reload your database and it's tables.