I'm self-hosting my mail server using mailcow[0] for little over a year now and everything works fine. It comes with a admin interface to manage accounts and the SoGo webmail client[1].
Getting it up and running was also pretty easy. Create some DNS records as described in the documentation, cloning the repository and starting everything using docker-compose.