With only one public IP you can only redirect one service to one internal host, so public_ip:25 -> internal_ip_1:25, and public_ip:80 -> internal_ip2:80. One service, one host. Jails typically work this way, but also setups with several internal servers on a DMZ/LAN. If you have two smtp servers you're out of luck. You can only attach one to public_ip:25 (well, you could do something with round-robin routing I guess).
You can run several physical webservers behind a single port 80, but you'd need a reverse proxy like Squid or nginx to differentiate between the different Hosts being requested.