Well - you probably want to open port 25 for SMTP, 143 for IMAP, and I use some 900 series ports for IMAP and SMTP over SSL.
I would advise running Postfix for mail instead of sendmail. It is quite a lot more secure. I run sendmail because I have an older installation and I haven't got the balls or time to do a migration :-(.
I use the cyrus imap server for mail - which is really fast and works nicely with outlook express or any other imap client. I use it with mail stored on a "reiser" filesystem, which is super efficient - it is basically a database with a filesystem front-end. Reiser also stores files in sub-sector space - so large numbers of small files do not use exteremely large amounts of space like with other systems.
Using this system I am able to very quickly access mailboxes with in excess of 10000 messages, which are located on the server, and are accessible from clients running all over (I typically have a connection from work, office at home, garage, at the same time).
One you have a working imap and smtp server (oh - you can use pop from cyrus too), you can hook up the stuff at
http://www.horde.org to run webmail. I have this set up on my home system, and it is providing address book and email functionality. Horde also had to-do and calendaring functionality, and will support authentication from the imap server, or ldap or other authentication.
This is a lot for one post, anyways - I can give you an account on my machine if you want to see how it's all setup, or walk you through the bits.