c0ffee.net hosts self-hosting guides on running a mail server, FreeBSD and OpenBSD on laptops, and DNS.
Commenters repeatedly recommend its mail server guide and FreeBSD laptop post as excellent, thorough walkthroughs.
I used to run Postfix + Dovecot + Rspamd with all the bells and whistles enabled [1], but I recently switched to OpenSMTPD + spamd on OpenBSD.
Unlike rspamd, which has pluggable modules for everything under the sun (RBLs, word filters, Bayesian filtering + learning), spamd uses plain ol' graylisting with some PF integration to throttle spammers connections to 1 character/second for maximum annoyance.
With Rspamd, I never got any spam in my Inbox. With spamd, I get maybe 1 spam mail every two weeks. To me, spamd's ridiculous simplicity is worth the tradeoff.
You do have to be careful with graylisting large mailers like Gmail, since they rarely retry the mail from the same IP address. For this, OpenBSD's smtpctl now has the spfwalk [2] command to whitelist the big guys. That's what I use in my current setup [3], which was linked here a few days ago.
[1] https://www.c0ffee.net/blog/mail-server-guide/
[2] https://poolp.org/posts/2018-01-08/spfwalk/
[3] https://github.com/cullum/dank-selfhosted
Any cloud VPS service that provides ISO upload will allow you to use OpenBSD. Vultr has OpenBSD 6.4 and 6.5 images pre-configured that you can get installed on a VPS (I’m using a $3.50/mo one).
For an even better experience, try it on an old ThinkPad following this guide [0]. You might like how suspend/resume just works, how your brightness and volume hotkeys just work, how the documentation is awesome, and how all the software you need is just one pkg_add away. I’d say that, compared to Linux on the desktop, OpenBSD can be a much more cohesive experience without a desktop environment installed and without endless configuration for basic features.
[0]: https://www.c0ffee.net/blog/openbsd-on-a-laptop/
I set up my own mail server following the guide here: https://www.c0ffee.net/blog/mail-server-guide/
I also referred to https://www.gmass.co/blog/smtp-server-linux/
I also looked at OwnCloud, but ended up just syncing from my phone to local Mac and doing backups off that regularly.
You could also rsync to other devices. A raspberry Pi with a SSD at home would work fine. If you have a VPN set up on your own network (eg. an ASUS router), you could use it to host photos/backups/music. If you home IP address is dynamic, use a free DDNS provider so you can always connect to your home site.
Just make sure you get a copy of those photos sooner than later!!
I host my own postfix server on FreeBSD and use the Evolution IMAP client on Linux. I haven't been in a situation where I need web access to mail in years so for me it's equivalent.
I started out about 6 months ago with this great guide:
https://www.c0ffee.net/blog/mail-server-guide/
The cost of a convenience like having a free email account is participating in the demise of the protocol-based networks that we have replaced with centralized products. There's many other great IMAP clients and maybe some of the features of Gmail/Inbox can be recreated using server side rules and scripts.
I wish FreeBSD booted faster. I recall it took nearly a minute from turning my machine on (with an SSD and a recent Intel i5 processor) before I was prompted for my login credentials. It's little things like that which make the system feel a bit dated, at least to someone like me who is an outsider to FreeBSD but has used Linux for a decade. I also wished FreeBSD needed less configuration to use as a desktop (see https://www.c0ffee.net/blog/freebsd-on-a-laptop/ for what I mean). Also, does Zoom work on FreeBSD?
I've only been running it for about a year, but I simply don't get spam --- perhaps partially because it isn't my main email address.
I went by this article, https://www.c0ffee.net/blog/mail-server-guide/ but I only set up Postfix and the various DNS records (MX, DKIM, etc.). I didn't set up Dovecot because I just use Mutt on the same server. And I haven't bothered to set up any kind of spam filter.