Mailcow is pretty straightforward to setup and has good documentation. No matter what you choose though be prepared to put a decent amount of work into it. I also recommend using an SMTP relay like SendGrid or Mailgun. That way you don't have to worry about deliverability as much. If you're not planning on sending a lot of email (<100 emails a day for SendGrid) you can use their free tiers.