How to merge two zimbra mailboxes

SSH into your zimbra server.

Change to zimbra server:

su - zimbra 

Now type:

/opt/zimbra/bin/zmmailbox -z -m old@example.tld getRestURL "//?fmt=tgz" > /tmp/temp.tgz && /opt/zimbra/bin/zmmailbox -z -m new@example.tld postRestURL "//?fmt=tgz&resolve=modify" /tmp/temp.tgz

Make sure you replace old@example.tld and new@example.tld with proper addresses.

If the old mailbox is big you may encounter the following error:

ERROR: zclient.IO_ERROR (Read timed out) (cause: java.net.SocketTimeoutException Read timed out)

This is because the programmers of zmmailbox command have set a default timeout to avoid endless execution. Luckily for us, they have also supplied zmmailbox with the t option which let us specify the amount of time before the timeout error occurs. An infinite timeout is set with -t 0. So you may now want to rewrite the command like this:

/opt/zimbra/bin/zmmailbox -z -t 0 -m old@example.tld getRestURL "//?fmt=tgz" > /tmp/temp.tgz && /opt/zimbra/bin/zmmailbox -z -t 0 -m new@example.tld postRestURL "//?fmt=tgz&resolve=modify" /tmp/temp.tgz

Initially we have found the the idea in zimbra forums (https://forums.zimbra.org/viewtopic.php?t=62378) and we have also tried it many times in our own servers, especially with some multi giga byte accounts we manage and host.

Leave a comment

Your email address will not be published. Required fields are marked *

4 + 2 =