Speaking as a hobbyist here, I have done what you're asking about for the last eight years and I have very close to zero problems, however there was some ground work that had to be laid. Oh, disclaimer, I'm also a sys admin for a major hosting company (I won't tell you who) so my definition of "easy" may not match yours.
0) If you're hosting at home, make sure you have an ISP that doesn't suck (i.e. use a local ISP). I use a local ISP that has DSL/FTTC (If you happen to live in an area served by the FTTC) connections), so I pay the local ILEC for a DSL line and the ISP for the connection. If you're hosting at a VPS/colo, make sure you pick a good one that will help you out: sell you a dedicated IP AND either give you control of your reverse DNS or setup your reverse DNS for you to your specifications. This is actually a critical part. I have stayed on a 1.5Mbit DSL line for years because anything faster in my area removes my choice of ISP and that is unacceptable to me.
1) Setup your preferred e-mail infrastructure. A dedicated VM/box (I'm using a low-powered Via C7-based server. It draws 30W and handles more than just my e-mail) with whatever SMTP/IMAP server you want. I happen to use Postfix/Dovecot tied together with Procmail so I can do my own mail rules and interpose SpamAssassin in the chain to catch all the crap that comes in. You can use whatever MTA/MDA you want, but if you plan on using webmail, you should probably have an IMAP server for it to feed from.
a) Make your SMTP/IMAP servers secure. This involves setting up TLS/SSL, creating some certs (Self-signed is okay if any users of the system know to accept the "unverified" cert the first time they connect), and enabling SMTP AUTH. There are HOWTOs aplenty on how to do this.
b) Setup your filtering software, because spam handling is all on you. Personally I use SpamAssassin with whitelists/blacklists, some customized scoring for built-in rules, and a very old bayesian filter (Old meaning it has been in use for years and is very well trained, not that it has been neglected for years). I have
2) Contact your ISP or VPS/colo provider to make sure they don't filter ports and to request changes to your reverse DNS entries. I have a single IP address and I had problems with organizations like Comcast blocking me until I had my reverse DNS changed to my domain name.
3) Make sure you aren't part of the problem. I have a cron job that alerts me if I start picking up a lot of "undeliverable" bounce messages and I clean them out so I'm not annoying other mail admins by repeated attempts to deliver crap. You should also check various RBLs to make sure your IP isn't on any of their lists and if it is, contact them to get removed. I haven't had any problems with RBLs in years due to steps 0-2.
4) Happy mailing. Like I said in the beginning, I've used this setup for years and it has worked for me and several others. I routinely e-mail people on Yahoo, Gmail, Hotmail, Comcast, Cox, and other big ISPs and have not had any significant problems in years.
I've tried several webmail programs, squirrelmail, roundecube, even some "groupware" and "group office" ones, they all have their pros and cons, but they all talk IMAP on their back end, and you may end up having multiple devices accessing your e-mail like I do (desktop, laptop, phone, tablet, etc).
To keep your bayesian filter updated, make sure you have a "spam" and "not spam" folder. Personally I have three, a "really spam" folder (For anything scoring 20 or higher), a "probably spam" folder (For anything marked as spam), and a "not spam" folder for anything that was mistakenly marked as spam. I almost never have to think about the "really spam" folder because I have never found anything in there that shouldn't be. I do go through the "probably spam" folder weekly looking for false-positives, and there have been a few. Those get moved to the "not spam" folder. Weekly I have a script kicked off from cron that trawls those three folders, reinforcing my spam rules and trimming back the false positives. This has so thoroughly solved my spam problem that using a Gmail or other account bugs me because it lets so much crap through. I have deployed variations of this to servers handling a few dozen accounts and had it run smoothly for months with no intervention required.