Actually, the mail situation would be MUCH simpler, and would still allow two mail servers on one host, both “reachable” via Port 25…
The same solution could also be used for Web - or is already in use for such.
The key to this is the fact that both very common internet protocolls allow for a name-based “routing”. No one accesses a mail server by IP, a DNS FQDN is often used, and usually a simple one, eg: mail.domainname.tld or www.domainname.tld.
SSH, rsync and a lot of “technical” protocolls, on the other hand, are often equally used by FQDN or IP, often IP, as it is shorter. This basically disallows named based internal routing.
An example with NethServer 7:
2 Internal Mailservers, one for mail.domain1.tld, the other for mail.domain2.tld.
A third “Mailgateway”, also NS7, using mail forwarding by name…
Containerization, like NS8 uses, makes this all on a single host (node) possible, but also migration to other nodes in the cluster, while also providing the option to double check the situation before committing!
(Race conditions like above are a classic!)
Special care would be needed when alölocating names, SPF, MX and other DNS entries, but it’s possible and works rock solid (Like most NS7 stuff, :-)! ).
IPv6 would alleviate a lot of problems, and introduce a lot of new issues (Not exposing the internal architecture to the Internet), but IPv6 has been implemented since over 20 years, but still hasn’t really “arrived”. We still need IPv4.
My 2 cents