Care to make that playbook publicly available? I would also be interested to try out hosting my own email, but am somehow afraid of setting it up wrong.
Careful though: This isn't deployed outside of test machines yet. I'm still working on the proper backup/restore scenarios, consider a couple improvements etc. - the readme outlines what I would like to do next.
Plus: While I self-host my mails for a while (without an automated setup of sorts, the one off snowflake sort of thing, so quite different from this here), I don't claim to be an expert here. Check what I did, take it as a template, don't use it without a basic understanding.
If there are some postfix/dovecot gurus out here and would like to point out obvious flaws in my setup - go ahead!
I'm pretty sure I followed one of those previously.
I wouldn't do that again, though (hence my stumbling around with ansible). If the machine goes down/you want to recreate it or duplicate it for a friend's setup (without dd-ing everything and trying to figure out what to change later) you're back to square one. It's probably month or years after you read the guide that created your system, you don't have the link handy anymore, forgot all you learned about gotchas in the doc that were slightly different for your deployment.
These guides aren't bad per se. My current system is a heavily customized result of various "Here's how I do mails" guides as well and it works like a charm, for quite some time. But I could never reproduce it again, which caused my reluctance to jump from GMail as my primary account to the self-hosted one - even if that one works for me, for years.
IF all my critical data (password reset mails, banking information etc. etc.) end up on a host I'm responsible for, I want to be able to replace that thing ASAP if something goes wrong.
Currently (unfinished, see my link above), but:
time ansible-playbook -K -i hosts site.yml
real 6m29.708s
user 0m9.623s
sys 0m3.243s
(Most of the time is spent in downloading packages/installing them: Got a faster network? This will be faster as well)
That's from a bare bone installation (nothing on there but ssh, my unprivileged user with sudo privileges) to a running mail (smtp/imap), calender/contacts & xmpp server.
I don't claim that MY project is the way to go, quite frankly I'd be very uncomfortable to push others to use it. But I do believe that infrastructure that is this essential should be easy to recreate/reproduce, even for laymen/single persons.