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
same as:
Code:
su zimbra
zmprov cd domain.com zimbraAuthMech zimbra
For a moment leave the old domain intact.
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 'user@domain.com' to login they can just type 'user':
Code:
zmprov mcf zimbraDefaultDomainName domain.com
See this article if you need to script for a large number of users Bulk Provisioning - Zimbra :: Wiki
Note: As of 5.0beta2/3 there's a command to rename the entire domain:
Code:
zmprov -l renameDomain (or 'rd' for short) domain.com newDomain.com
When you've done all that & mail send/receive works fine, let us know - and I'll explain actions on those 4 special accounts.