So you have 2 choices:
Domain aliases would be a fast solution if you don't care what the underlying accounts are named: ManagingDomains - Zimbra :: Wiki
Though personally I would:
Admin console gui > domains > make a new domain
For a moment leave the old domain intact.
zmprov cd domain.com zimbraAuthMech zimbra
Also leave the admin, spam, ham, and the wiki account untouched right now.
To move any accounts you've already created over:
In the admin console gui you can just change the drop down box in the individual account > general tab to the other domain (just to the right of where you assign a username).
zmprov equilavent would be ra (renameAccount)
Then you need to set that domain as default so users don't have to type in the complete 'email@example.com' to login they can just type 'user':
See this article if you need to script for a large number of users Bulk Provisioning - Zimbra :: Wiki
zmprov mcf zimbraDefaultDomainName domain.com
Note: As of 5.0beta2/3 there's a command to rename the entire domain:
When you've done all that & mail send/receive works fine, let us know - and I'll explain actions on those 4 special accounts.
zmprov -l renameDomain (or 'rd' for short) domain.com newDomain.com