I am sorry to say (
mydnight) that what you are attempting is not ever going to work using these tools.
The problem is that you have a single IP address visible to the rest of the world, and attempts to connect either to
www.myserver.com or to
mail.myserver.com will both turn into a TCP connection on xxx.yyy.zzz.foo:80. Then, your httpd accepts the connection, reads the Header info from it, and matches the server named in the header to one of your <VirtualHost> containers. So far, everything is fine.
However, when you attempt a permanent redirect to 192.168.0.2, the jig is up. A redirect header is sent back to the browser, who attempts to contact the given address. That address, however, is not permitted on the public Internet. Any public router worth its salt will unceremoniously drop any packet addressed to a Private Networking address, disrupting your attempted redirect.
The simplest way to make this work is to buy a second IP address, and arrange for mail.myserver.com to resolve to the second address. Then you can use iptables to translate the second external IP into the internal address of your Zimbra box. This might not, however, be the cheapest, since you will have to pay your ISP for a second address.