@codingquark I used to have a good guide for setting that up bookmarked but I can't seem to find that anymore. It was a lot of initial setup (but still doable in an evening) the few times that I've done that, but postfix/dovecot will do what you want and doesn't require a lot of resources so it can piggy back on the same VM as something else if you've already got a server that's not at full load.
The main challenge is that the server software has tons of options you don't need.