Tabela de conteúdos

go-imapsync: como planejar uma migração de e-mail

Trocar de servidor não precisa significar perder o histórico. O go-imapsync copia mensagens entre contas IMAP em uma direção: da origem para o destino. Conheça o processo, os limites e os cuidados antes de executar.

Ilustração cartoon de mensagens copiadas entre servidores, com a origem preservada

Ilustração conceitual, não uma tela do programa nem garantia de resultado.

Guia técnico: os comandos são para um administrador autorizado, em Bash no Linux. Não execute com caixas reais sem backup, conta piloto e aprovação do responsável. Para migrar uma conta Criare, combine o procedimento com o suporte.

O que é e quando usar

É uma ferramenta de linha de comando escrita em Go, distribuída como binário. Pode ajudar na troca de provedor ou servidor quando as duas contas permitem acesso IMAP compatível. A máquina que executa o programa precisa alcançar ambos os servidores; não precisa ser o servidor de e-mail.

Este guia toma como referência a versão 0.1.3, release mais recente consultada em 10/10/2026. É um projeto de escopo inicial, inspirado no imapsync tradicional, mas não implementa todas as funções dele. Veja a documentação da versão.

O que entra — e o que fica fora

A versão 0.1.3 não oferece XOAUTH2, migração por CSV ou tratamento especial de labels do Gmail. Não presuma funcionamento com provedores que exigem OAuth. Consulte os limites publicados pelo projeto.

Origem IMAP, máquina de migração e destino; cópia unidirecional sem alterar MX

Checklist antes da primeira conexão

Preparar o programa

Baixe o pacote correspondente ao seu sistema e arquitetura na release oficial 0.1.3. Confira a procedência e qualquer verificação de integridade disponibilizada. Um hash calculado sozinho, sem referência confiável, não autentica o download.

Extraia em uma pasta de trabalho protegida. No Linux, execute a partir dessa pasta:

./go-imapsync version
./go-imapsync --help

Os exemplos seguintes pressupõem o binário nessa pasta. Não é preciso instalar Go para executar o pacote pronto. Se sua arquitetura não estiver disponível, siga a compilação documentada no projeto em vez de baixar um executável desconhecido.

Preparar acesso sem senha no comando

Abra uma sessão Bash privada. Os endereços abaixo são fictícios: substitua pelos nomes e usuários confirmados para cada conta. Não use uma gravação de terminal nem habilite set -x.

umask 077
mkdir -p "$HOME/go-imapsync-logs"
 
read -rsp 'Senha da origem: ' GOIMAPSYNC_PASSWORD1
printf '\n'
read -rsp 'Senha do destino: ' GOIMAPSYNC_PASSWORD2
printf '\n'
export GOIMAPSYNC_PASSWORD1 GOIMAPSYNC_PASSWORD2
 
IMAP_ARGS=(
  --host1 imap.origem.example
  --user1 usuario@origem.example
  --host2 imap.destino.example
  --user2 usuario@destino.example
)

Variáveis de ambiente evitam colocar a senha nos argumentos e no histórico, mas não são um cofre. Administradores e processos com permissões suficientes podem acessá-las. Proteja também logs, nomes de pastas e endereços registrados.

Executar uma etapa por vez

O padrão documentado é IMAPS na porta 993. Confira a ajuda da versão instalada. Os parâmetros com final 1 pertencem à origem; os com final 2, ao destino.

1. Simule as pastas. Esta etapa consulta os servidores sem criar pastas no destino:

./go-imapsync "${IMAP_ARGS[@]}" --justfolders --dry

Se a hierarquia ou o login estiver incorreto, pare e corrija antes de continuar.

2. Crie somente as pastas. Este comando já altera o destino:

./go-imapsync "${IMAP_ARGS[@]}" --justfolders

3. Simule as mensagens. Examine o resumo e as falhas; uma contagem na simulação não significa que mensagens foram gravadas:

./go-imapsync "${IMAP_ARGS[@]}" --dry \
  --logfile "$HOME/go-imapsync-logs/plano.log"

4. Copie após a conferência. Este comando grava mensagens no destino:

./go-imapsync "${IMAP_ARGS[@]}" \
  --logfile "$HOME/go-imapsync-logs/copia.log"
rc=$?
printf 'Resultado: %s\n' "$rc"

O projeto documenta códigos 0 para sucesso, 1 para falha de execução e 2 para erro de uso/configuração. Leia também o relatório. Não encerre a origem apenas porque o comando terminou.

Referência: execução por etapas e boas práticas.

Se o servidor exigir STARTTLS

Não confunda IMAPS com STARTTLS. Para uma origem que exige STARTTLS na porta 143, o ajuste documentado é acrescentar estes parâmetros ao array antes das etapas:

IMAP_ARGS+=(--nossl1 --tls1 --port1 143)

Para o destino, os parâmetros equivalentes terminam em 2. Faça isso somente se o administrador confirmar esse modo. Não use –nossl1 sozinho como solução de erro. Não use –insecuretls em produção: corrija hostname, certificado ou cadeia de confiança.

Incremental não significa impossível duplicar

A identificação documentada usa os cabeçalhos Message-Id e Received, por pasta, não uma comparação integral de todos os bytes. Repetir a execução pode buscar mensagens novas, mas cabeçalhos ausentes ou modificados podem prejudicar o reconhecimento.

Mantenha os mesmos critérios entre rodadas e não altere –useheader por tentativa e erro em produção. Totais iguais também não provam que todas as mensagens corretas chegaram. O detalhe técnico está na implementação da identidade e no fluxo da cópia.

Ilustração cartoon de conferência de mensagens, anexos e backup após a cópia

Conferir a cópia é uma etapa própria: terminar o comando não substitui a validação.

Conferir e planejar a mudança

Piloto, cópia inicial, mudança coordenada e conferência final com origem preservada

Abra o Webmail do destino. Confira amostras em Entrada, Enviados e subpastas: corpo, anexos, datas e estado de leitura. Investigue diferenças de contagem por pasta.

Repita a simulação com os mesmos parâmetros para observar pendências:

./go-imapsync "${IMAP_ARGS[@]}" --dry \
  --logfile "$HOME/go-imapsync-logs/verificacao.log"

Combine separadamente a alteração da entrega de e-mail e dos aplicativos. Depois da mudança, pode ser necessária outra cópia para mensagens ainda recebidas na origem. Evite usuários reorganizando as duas caixas ao mesmo tempo.

Plano de retorno: se o destino já recebeu mensagens novas, apenas voltar o DNS ou o aplicativo não recupera esse conteúdo na origem. Preserve ambos os lados até a conferência e a aceitação do responsável.

Ao concluir, remova as credenciais da sessão:

unset GOIMAPSYNC_PASSWORD1 GOIMAPSYNC_PASSWORD2
unset IMAP_ARGS

Quando parar e pedir ajuda

Conclua somente após validar dados e uso real. Para planejamento de migração Criare: suporte@criarenet.com · (11) 2139-9400. Não envie senhas no chamado.

Leia também

Revisado em 10/10/2026. Exemplos conferidos documentalmente; não foi realizada migração de caixas reais para produzir este artigo.