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 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
- Cópia IMAP: pastas e mensagens, incluindo conteúdo e anexos. Datas e estados suportados são enviados na inserção, sujeitos ao comportamento do destino.
- Não é envio SMTP: o programa grava mensagens na caixa de destino por IMAP.
- Não cria contas nem muda DNS: caixa, quota, MX e configuração dos aplicativos são tarefas separadas.
- Não importa PST ou mensagens apenas locais: arquivos do Outlook, contatos, calendários, aliases e regras exigem outro procedimento.
- Não é espelhamento contínuo: a versão não reconcilia duas caixas em ambos os sentidos nem atualiza automaticamente estados de mensagens já reconhecidas.
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.
Checklist antes da primeira conexão
- Confirme autorização, usuários completos, servidores e método de autenticação.
- Crie a conta de destino e confira a quota, incluindo anexos e crescimento durante a mudança.
- Verifique acesso IMAP com TLS e certificados válidos. Não adivinhe o servidor a partir do domínio.
- Separe uma conta piloto com subpastas, anexos e mensagens antigas e recentes.
- Defina quem valida o resultado, quando ocorre a mudança e por quanto tempo a origem será preservada.
- Mantenha backup independente. Ter duas caixas acessíveis não substitui uma política de recuperaçã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.
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.
Conferir a cópia é uma etapa própria: terminar o comando não substitui a validação.
Conferir e planejar a mudança
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
- Quota excedida: avalie capacidade; não apague a origem para liberar espaço no destino.
- Login recusado: confira usuário, senha e política IMAP; Webmail funcionando não prova que esse login é permitido.
- Certificado inválido: não ignore a falha.
- Pastas erradas ou duplicações recorrentes: investigue o piloto antes de migrar outras contas.
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.
Olá! Vamos conversar?
Estamos aqui para ajudar você!
