Mail-in-a-Box [1] is very well-done, with a clean and modern mail server configuration. However it is not very customisable and requires a dedicated vm.
A VM/VPS running Ubuntu with one GB of RAM to be precise. Had to recreate a droplet when testing it because I only provisioned 512 MB of RAM.
So far, it has done its job quite nicely. Just make sure you don't plan on installing it next to a webserver. Its installer hijacks port 80/443 with its own nginx webserver.
Can I add "mailing list with a decent UI" to the tick list? Something like discourse's UI but with proper mailing list functionality, like Mailman. I know discourse has fairly theoretical mailing list mode but it's atrociously bad...
[1] https://mailinabox.email