Correio eletrónico
Usar o imapsync por SSH para copiar correio entre fornecedores
O imapsync copia mensagens entre duas caixas de correio IMAP, juntamente com a estrutura de pastas e os indicadores compatíveis. É uma cópia num só sentido, não um espelho exato: não migra contactos, calendários, regras nem metadados que algum dos servidores não exponha por IMAP.
Uma utilização frequente é a mudança de fornecedor de correio, por exemplo ao migrar para os nossos serviços de alojamento. A sincronização deve ser repetida e verificada para reduzir o risco de omitir mensagens durante a mudança.
Antes de começar, crie a caixa de correio de destino, faça o inventário das pastas e verifique as quotas. Execute uma primeira sincronização sem opções de eliminação, reveja o mapeamento de pastas, as contagens e os erros, e corrija qualquer diferença antes de mudar o fluxo de correio.
Se preferir que sejamos nós a preparar a migração, consulte o suporte sobre o alcance incluído no seu serviço. Para a fazer por sua conta, confirme que tem acesso SSH e o imapsync disponível; a alternativa gráfica é explicada em Migrar correio a partir do painel.
Seguindo o exemplo inicial, se quisermos sincronizar uma conta de correio de origem com uma conta de correio de destino, precisamos primeiro dos dados de acesso a essas contas; se a conta de destino for nova, terá de a criar primeiro no cPanel.
Use palavras-passe de aplicação ou credenciais temporárias quando o fornecedor o permitir. O Google Workspace pode exigir OAuth2 ou uma palavra-passe de aplicação autorizada, e o Microsoft 365 exige OAuth nas configurações modernas; consulte o procedimento específico da origem. Não escreva palavras-passe nos argumentos do imapsync: ficariam visíveis no histórico da shell e poderiam aparecer na lista de processos. Para fornecedores que ainda admitam esta autenticação, guarde cada palavra-passe num ficheiro separado fora da raiz web e proteja-o antes de executar a sincronização:
umask 077 read -rsp 'Palavra-passe temporária de origem: ' IMAPSYNC_PASS1; printf '\n' read -rsp 'Palavra-passe temporária de destino: ' IMAPSYNC_PASS2; printf '\n' printf '%s\n' "$IMAPSYNC_PASS1" > "$HOME/.imapsync-pass1" printf '%s\n' "$IMAPSYNC_PASS2" > "$HOME/.imapsync-pass2" unset IMAPSYNC_PASS1 IMAPSYNC_PASS2 chmod 600 "$HOME/.imapsync-pass1" "$HOME/.imapsync-pass2" imapsync \ --host1 SERVIDOR_IMAP_ORIGEN --user1 CUENTA_ORIGEN --passfile1 "$HOME/.imapsync-pass1" --ssl1 --sslargs1 SSL_verify_mode=1 \ --host2 SERVIDOR_IMAP_DESTINO --user2 CUENTA_DESTINO --passfile2 "$HOME/.imapsync-pass2" --ssl2 --sslargs2 SSL_verify_mode=1
Antes da cópia real, execute o mesmo comando acrescentando --dry. Reveja na saída como correspondem os nomes das pastas e corrija as regras de inclusão, exclusão ou mudança de nome de que precisar. Depois retire --dry para iniciar a sincronização efetiva.
A duração depende do volume, da ligação e dos limites dos fornecedores. Reveja o resumo final e os erros; o facto de o terminal fechar ou de deixar de aparecer progresso não prova que a cópia tenha terminado.
--ssl1 e --ssl2 cifram as duas ligações. Acrescente também SSL_verify_mode=1 em --sslargs1 e --sslargs2 para exigir a validação do certificado, e não continue se falhar. Quando terminar e verificar a migração, elimine os ficheiros com o seguinte comando:
rm "$HOME/.imapsync-pass1" "$HOME/.imapsync-pass2"
Depois revogue ou altere as credenciais utilizadas.
A documentação do imapsync trata utilizações como Gmail, Exchange e Microsoft 365 e dispõe de inúmeras opções. Algumas são destrutivas: --delete1 elimina mensagens da origem e --delete2 pode eliminar do destino mensagens que não estejam na origem. Não as use numa migração básica; teste primeiro a cópia sem opções de eliminação e verifique as duas caixas de correio.
Numa migração, execute uma segunda sincronização imediatamente antes da mudança dos MX e outra quando terminar a propagação. Mantenha a origem acessível durante esse período, compare as pastas e as contagens nos dois extremos e abra uma amostra de mensagens e anexos. Não elimine as caixas de correio antigas até confirmar que já não recebem correio e que a recuperação a partir do destino funciona.
Interprete o resultado
Verifique o código de saída, os erros e as mensagens identificadas que faltam no destino. Uma diferença no tamanho total não demonstra, por si só, uma perda: os servidores podem contabilizar de forma diferente e o Gmail apresenta a mesma mensagem com várias etiquetas.
Comece com uma caixa de correio e guarde os seus parâmetros e o registo num local privado. Se a ligação for interrompida, reveja a causa e repita com os mesmos critérios de pastas; não acrescente opções de eliminação para tentar igualar os números.
O bloco de preparação das palavras-passe utiliza Bash (read -rsp): execute-o nessa shell, não numa consola que interprete essas opções de outra forma. Não ative rastreios como set -x nem a opção --showpasswords ao manusear credenciais.
Também lhe pode ser útil
- Migrar correio a partir do painel com o imapsync Prepare a origem e o destino, teste a ligação e reveja o resultado de uma cópia de caixas de correio...
- Migrar correio do Google Workspace com o imapsync (conta de serviço OAuth2) Passo a passo para criar no Google Cloud uma conta de serviço com delegação ao nível do domínio, aut...
- Migrar o correio sem perder mensagens ao mudar de fornecedor Como preparar as caixas de correio, fazer uma primeira cópia, sincronizar as mensagens finais e muda...
- Arquivar uma cópia de todo o correio enviado e recebido de um domínio no cPanel Ative a função Archive do cPanel para guardar uma cópia de todo o correio que entra e sai das contas...
Algo não bate certo ou mudou? Diga-nos e revemos.