On 04/12/17 23:15, Steve Litt wrote:
On Mon, 4 Dec 2017 12:53:15 -0800 (PST)
Joseph Tam <jtam.h...@gmail.com> wrote:

"Davide Marchi" <dan...@msw.it> writes:

UW-IMAP's mailutil, imapsync, YippieMove and Larch.

Whatever you use, *don't* use UW-IMAP's mailutil unless you got lots
of time to kill.  It is dreadfully slow -- I used it to export some of
my users' mailboxes to Gmail or other remote mail servers, and I could
almost cut&paste the messages faster.

Like Aki said, if you have the same mailbox format and FS access on
both sides, rsync is much simpler.  You can also try exporting the
old mailboxes via NFS, and with some artful symlinks, march through
your user mailboxes replacing the symlinks with the instantiated
local copies and have almost zero downtime.

Joseph Tam <jtam.h...@gmail.com>

Another possibility is to use an email client like Claws-Mail, which is
very fast, create two accounts: One for the old IMAP, one for the new
one, and just copy trees.

I've never used Claws-Mail - so I don't know how well it does. But I've done a lot of data migrations between imap servers and accounts - and on many occasions I had to use Outlook or Thunderbird to do it. It is extremely inefficient, specially if the user has a large number of subfolders - as neither software seem to be able to copy subfolders in block. The other problem I stumbled on is that you can initiate a large transfer (5000 emails at once), the connection, the client or even the server chokes at some point for various reasons - and more often than not it restarts the transfer from the beginning - and you end up with lots of duplications. Specially if transferring through a non-local, slower link (ADSL or something similar), I had to end up moving blocks of a few hundred emails at a time - then rinse and repeat. Not very happy memories when you are dealing with 30,000 emails mailboxes with 100 subfolders!

To answer the OP, if you have full access to the destination server, and the two servers are not Maildir or mbox storage (so copying directly is not an option), another possibility might be to use getmail. I am about to test this in a few weeks time. Getmail has an option to download email from all folders of the originating account. I think I would script it with the following options:

1. Download 100 emails at a time - so that if something goes wrong it doesn't risk screwing up a large batch (getmail has this option).
2. Download emails from all folders of the account.
3. Delete emails from source after downloading - so that if things go wrong, or you have to interrupt the process, you know what has already been transferred.
4. Check for success exit code, and repeat until everything is copied.

I haven't tried the above yet, but I think it should be quite robust and efficient, and able to run unattended once started.

Reply via email to