Migrando seus e-mails com IMAPSYNC

Transferindo mensagens entre servidores de e-mails via IMAP
EXEMPLO
POSTFIX X ZIMBRA
imapsync
–host1 xxx.xxx.xxx.xxx –port1 993 –ssl1 –user1 email@dominio.com.br –password1 ***
–host2 localhost –port2 993 –ssl2 –authmech1 PLAIN –user2 email@dominio2.com.br –password2 ***
-noauthmd5

A ferramenta imapsync, desenvolvida sob licença GPL é útil e funcional para migrar mensagens de um servidor de e-mails para outro.
Algumas opções básicas:

–host1 e –host2:
Seguidas pelo nome ou endereço IP do servidor IMAP indicam o servidor de origem e o de destino das mensagens (ambas as opções são obrigatórias)

–port1 e –port2:
Após estes parâmetros informam a porta em que os seus servidores estão escutando e esperando por conexões IMAP (143, 993 etc)

–user1 e –user2:
Com estas opções informaremos o login do usuário em ambos os servidores, que não necessariamente precisam ser o mesmo.

–ssl1 e –ssl2:
Caso algum dos servidores utilize conexão segura SSL você deverá informar estes parâmetros para um, ou ambos os servidores, de acordo com a necessidade.

–authmech1 e –authmech2:
O mecanismo de autenticação usado por cada servidor

–password1 e –password2:
A senha dos usuários em ambos os servidores pode ser fornecida na linha de comandos usando-se estas opções, ou se estas opções forem omitidas você receberá um prompt as solicitando na hora de executar o comando.

–passfile1 e –passfile2:
Alternativamente você pode gravar a senha em um arquivo separado e informa-lo através destas opções. isto evita que a senha fique registrada no histórico de comandos e também o desconforto de ter que digita-la caso tenha que acessar estas contas muitas vezes (não se esqueça de assegurar as permissões de acesso a estes arquivos o mais restritiva possível).

Opções de restrição
As opções a seguir permitem selecionar quais pastas/mensagens serão sincronizadas/copiadas/movidas.
–folder:
Informa o nome da pasta a ser sincronizada. Caso necessário você pode usar esta opção várias vezes para informar que deseja sincronizar várias pastas. Perceba que as pastas deverão existir em ambos os servidores com o mesmo nome. Caso não existam serão criadas antes que as mensagens sejam transferidas;

–folderrec:Da mesma forma que a opção anterior, mas funciona recursivamente. Ou seja se dentro da pasta “Acompanhar” você tem duas outras “Processos” e “Serviços”, ao invés de usar a opção –folder 3 vezes (uma para cada pasta), bastaria usar esta nova opção uma vez só para a pasta “Acompanhar”

–include:Se você tem um conjunto de pastas que o nome possui alguma similaridade você poderá usar esta opção para sincronizar aquelas que combinem com a sua expressão regular.

–exclude:
Complementa a opção anterior fazendo o imapsync ignorar as pastas que combinem com o padrão fornecido. Por exemplo você poderia querer sincronizar a pasta “Mensagens-20..” (com a opção –include – o .. seriam substituídos por dois caracteres quaisquer na hora da procura por pastas) mas ignorando a pasta “Mensagens-2009″ (adicionando também a opção –exclude)

–minage – Não sincroniza mensagens mais novas que N dias. Útil se você deseja apenas copiar as mensagens recebidas no últimos dias
–maxage – Não sincroniza mensagens mais velhas que N dias. Caso use ambas as opções ao mesmo tempo, esteja atento a ordem em que elas serão usadas pois isto pode influenciar nas mensagens que serão sincronizadas, conforme a representação abaixo, onde somente as mensagens dentro do período representado por “+” serão sincronizados:
passado |————- maxage ++++++++> hoje (somente mensagens mais recentes)
passado |+++++++++++++ minage ——–> hoje (somente mensagens mais antigas)
passado |—- maxage ++++ minage —–> hoje (mensagens dentro do intervalo especificado)
passado |+++ minage —— maxage ++++> hoje (mensagens que não estão dentro do intervalo especificado)
–maxsize – Ignora as mensagens que sejam maior do que o tamanho estabelecido com esta opção.

Opções de teste
Estas opções podem ser usadas para testar se o comando está funcionando como você espera que estivesse
–dry:
Não faz absolutamente nada mais além de mostrar as mensagens sobre o que seria feito se você não usa-se esta opção.

–justfoldersizes:
Somente exibe o tamanho das pastas

–debug:
Ativa o modo de depuração incrementando a quantidade de informações sobre o processo que está sendo feito

–debugimap:
Ativa o modo de depuração sobre os comandos enviados/recebidos dos servidores IMAP

–justconnect:
Somente testa se é viável conectar a ambos os servidores IMAP

–justlogin:
Não só testa a viabilidade de conexão, mas testar a autenticação dos usuários também.

Outras opções úteis
–delete:

Exclui as mensagens do servidor de origem logo após a transferência. Isso é útil para quem precisar mover as mensagens de um servidor para o outro, pois sem esta opção as mensagens serão apenas copiadas de um servidor para o outro (veja que não é “delete1″ e sim “delete”).

–delete2:
Excluir do servidor de destino, todas as mensagens que não tiverem uma cópia no servidor de origem. Se você pretende manter ambos os servidores sincronizados esta

–expunge1:
Expurga as mensagens do servidor de origem ao invés de deleta-las. Lembre-se que no IMAP, o processo de “delete” na verdade apenas marca a mensagem para a exclusão e a oculta da listagem de mensagens. Para realmente excluir a mensagem você deve expurgar, com esta opção.

–expunge2:
Expurga as mensagens no servidor de destino

–uindexpunge:
Expurga somente as mensagens que não possuírem mais uma cópia no servidor de origem. Para que ela possa funcionar é obrigatório também informar a opção “–delete2″

–ignoresize:
Ignora o tamanho das mensagens e simplesmente as transfere. Dica: Para copiar mensagens de/para um servidor Gmail eu tive que usar esta opção

–allowsizemismatch:
Alguns servidores reportam um tamanho de mensagem (RFC822) diferente do que a mensagem realmente tem (as vezes algumas dezenas de bytes é suficiente para estragar tudo) e por isso o imapsync emite um erro não copiando as mensagens. Esta opção diz ao imapsync para ignorar o tamanho informado pelo servidor. Para usar esta opção é recomendável usar também a opção anterior.

–idatefromheader:
Ao enviar a mensagem para o servidor de destino esta opção informa que a data da mensagem é exatamente a que consta no cabeçalho da mensagem. Pode parecer algo imbecil, mas se você não usar esta opção as mensagens poderão ser listadas no novo servidor com a data em que você as transferiu, ao invés da data correta que deve ser exatamente (ou mais próximo possível do que consta em seu cabeçalho).
Agora na prátic