Why are you doing this?
I guarantee you that any self-hosted system will have more downtime, and more overall management time than just sticking with Google or another provider.
I wouldn't put the e-mail server and the Web/database server on the same machine. In fact, if you're going to do this right, you probably want a mail server in a datacenter that does nothing but receive the incoming mail and hold it back in case your local e-mail server is down. And once you've done that, you might as well be using a "cloud" e-mail provider.
That said, I have used Zimbra, and it works. I will also support the recommendation of Roundcube.