Correio eletrónico

Usar o imapsync por SSH para copiar correio entre fornecedores

Revisto a 7 min de leitura migração de email imapsync

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

Algo não bate certo ou mudou? Diga-nos e revemos.