The best method I found was to use Gmail.
I setup Gmail to download via POP all of my email accounts behind the scenes. I then connect to Gmail via IMAP through all of my devices. On my Android devices, I use the standard Gmail app. On Windows PCs I use Outlook. A little extra steps setting up Gmail and you can automatically label all mail coming from different accounts automatically. Plus you can set it to email through your existing email provider so it looks transparent to the outside world.
Viola. Everything sync'd and full message history on any device. I actually have 15 years of emails stored on Gmail servers.
Downsides?
Since gmail is regularly checking some accounts, it may take some extra time for an email to appear, its not instant. In times when I needed an email right away, I logged in directly to gmail and manually force it to fetch. In practice, its maybe 10 min delay. Email sent to the gmail account shows up instantly.
And some have issues with all their email traffic on gmail.
Overall though, its the best way to handle email for free. I've also set up calendar syncing with outlook as well. The only other way I know of is to pay for Exchange hosting.