Docker is pretty portable by design. If you use bind mounts you can just scp the docker-conpose.yml and your bind mount volumes to your new server and you're done. If using Docker-managed volumes you'll need to docker cp the data out of them first before scp, then docker cp them into your volumes once you docker-compose up your containers.
I would recommend it based on my use and experience.
I’ve been using it for my personal email and for automated no-reply messages in a few projects with no delivery issues. I’m hosting on a Contabo VPS.
It handles spam with rspamd, sets you up with DMARC, DKIM, has an admin interface, web mail interface.