50 000 users should be easy enough with Cyrus IMAPd. You can run it with Linux, *BSD or Solaris, at least. I've been administering a Cyrus installation with vast more than 50 000 users since 2003, no problems so far and the server is mostly idle. It supports POP3, IMAP, with both plain text logins and TLS/SSL and more exotic authentication mechanisms, too. With saslauthd you can make it work with stuff like OpenLDAP.
When it comes to Cyrus, one server with enough RAM should be more than enough for your workload. Cyrus loves RAM, but is not very CPU-intensive; in my case CPU usage is hovering under 10%. Get one or two servers more for fault-tolerance and setup for example Heartbeat v2 (or whatever it is called nowadays) for automatic failover with active-passive setup, should something go wrong. Have some kind of shared storage (like SAN) for your e-mails.
For webmail, one server should work just fine load-wise. Get SquirrelMail, RoundCube, Horde, or whatever you are familiar with. Get another server so you get fault-tolerance. Put a load-balancer in front of those.
For receiving e-mail and for authenticated SMTP, Postfix + amavisd-new + SpamAssassin/dspam should be a wonder combo. Use stuff like Postfix-policyd and policyd-weight if you see it necessary.