Running your own in-house mail server
There are a lot of companies out there now that offer email hosting, but the main problem that you will find with them is that they charge a monthly fee for each mailbox, which can add up to quite a yearly sum if you want to add a lot of mailboxes. There are people who have switched over to Google Apps for their email and this is a good choice if you need to use all of the features that come with it, but it can also be a waste of money if you only need the email service. The other big problem with these hosted email services, which you won't find mentioned a lot, is that you had better keep up with your payments, or they will just eventually delete all of the multiple gigabytes of emails that you have stored with them.
These two big problems are not relevant when you run your own email server and you also have the advantage that you can make your own backups of the email data, which can come in handy when someone wants to resurrect an old email, or has lost their inbox by creating and deleting a POP account.
As if to show that self hosted email is not dead yet, a client recently decided to stay with their Kerio server in the office, rather than switching everything over to Google Apps, with the main influence being how much they would have to pay for the transfer of the email data, along with the yearly fee that they would have to pay to Google. They have a leased line at their office, so their external email connections will not be slowed down, because they do not have the slow upload speeds that you would get with an ADSL line. One final problem that you have with externally hosted email is that you cannot just add as many email accounts as you want, because you have to pay for each one, while with your own server there is no charge for any extra accounts that you add.
It is also possible to run a calendar and chat service on the same server, so that a similar experience can be offered like Google, without the monthly fee. The power of modern CPUs allows a lot of services to be run on one server and if a lot of memory is installed, many of the services can also be adjusted to make use of it, which can help with the responsiveness of the connecting clients. The best way to guarantee this is to run a unix based operating system like Centos, which allows you to turn off all of the services that you do not need. With Centos it is also possible to compile the kernel to match the hardware that it is running on, which is a bit like tuning an F1 car. A Windows based server will have a load of services that Microsoft will insist cannot be turned off, even though they are of no help to the clients who are connecting, so it will need good hardware by default, while Centos can run very well on even an Atom based Mini ITX server, because of how it can be stripped down to the minimum required services.
The standard setup that I use for a mail server is Postfix for the SMTP, Dovecot for IMAP and POP, Roundcube for the webmail and Maia Mailguard with Spamassassin for if anti spam services are required. I have been using them for a few years, with one of my main clients and the have performed an excellent job.