I use fetchmail to grab mail from an email provider and deliver it to my dovecot instance hosted at home. My mail provider is just used to store mail temporarly (up to a minute unless my server is down) and send email (I use their SMTP server).
That way, my data is stored at home but I don't have usual 'selfhosted mail server' issues. I can be down for days and my email will be received by my provider and I don't need to do/setup/maintain anything to ensure my mail will be deliverable!
With a custom domain and nothing that stay on their server, I can switch provider within a few minutes by updating the nameserver to point my domain to another server