Not very familar with Zimbra but if memory serves me, Postfix is able to do this. I do not know what effect messing with Postfix directly will have on Zimbra. I may misunderstand how Postfix is integrated into Zimbra.
Found this:
http://www.postfix.org/rewrite.html#masquerade
"Address masquerading is a method to hide all hosts inside a domain behind their mail gateway, and to make it appear as if the mail comes from the gateway itself, instead of from individual machines.
Address masquerading is disabled by default. To enable, edit the masquerade_domains parameter in the main.cf file and specify one or more domain names separated by whitespace or commas. The list is processed left to right, and processing stops at the first match. Thus,
masquerade_domains = foo.example.com example.com
strips any.thing.foo.example.com to foo.example.com, but strips any.thing.else.example.com to example.com.
A domain name prefixed with ! means do not masquerade this domain or its subdomains. Thus,
masquerade_domains = !foo.example.com example.com
does not change any.thing.foo.example.com and foo.example.com, but strips any.thing.else.example.com to example.com.
The masquerade_exceptions configuration parameter specifies what user names should not be subjected to address masquerading. Specify one or more user names separated by whitespace or commas. For example,
masquerade_exceptions = root
By default, Postfix makes no exceptions.
Subtle point: by default, address masquerading is applied only to message headers and to envelope sender addresses, but not to envelope recipients. This allows you to use address masquerading on a mail gateway machine, while still being able to forward mail from outside to users on individual machines.
In order to subject envelope recipient addresses to masquerading, too, specify (only available with Postfix versions after 20010802):
masquerade_classes = envelope_sender, envelope_recipient, header_sender, header_recipient
If you do this, Postfix will no longer be able to send mail to individual machines."