Correio eletrónico
Migrar correio do Google Workspace com o imapsync (conta de serviço OAuth2)
Quando um cliente quer transferir o correio de um domínio alojado no Google Workspace para os nossos servidores, pode usar o imapsync. A Google já não permite que as aplicações de terceiros se liguem por IMAP com a palavra-passe normal da conta. Deve usar-se OAuth 2.0 ou, para uma migração pontual de poucas contas quando a política o permitir, uma palavra-passe de aplicação.
Neste guia explicamos as duas formas válidas de autenticar a origem Google Workspace e, em concreto, como configurar uma conta de serviço (service account) com delegação ao nível do domínio. A mesma credencial pode autenticar as caixas de correio autorizadas sem mexer em cada utilizador, embora o imapsync tenha de as sincronizar uma a uma.
Porque a palavra-passe normal já não serve
A Google retirou o acesso de "aplicações menos seguras" (basic auth) de forma faseada:
- 15 de junho de 2024: a definição de aplicações menos seguras é eliminada da consola de administração. O administrador já não a pode ativar (as ligações existentes continuaram a funcionar temporariamente).
- 14 de março de 2025: a Google começou a desativar nas contas do Workspace o acesso de aplicações de terceiros através da palavra-passe normal.
- 1 de maio de 2025: terminou a transição anunciada para estas aplicações.
Por isso, não configure o imapsync com a palavra-passe normal. A delegação OAuth2 é a opção adequada para muitas contas; uma palavra-passe de aplicação é uma exceção por utilizador que exige a verificação em dois passos e que o administrador não a tenha restringido.
As duas opções
| Conta de serviço (XOAUTH2) | Palavras-passe de aplicação | |
|---|---|---|
| Ideal para | Migrar um domínio completo | Migrar uma ou poucas contas |
| É preciso mexer em cada utilizador | Não | Sim (ativar a verificação em 2 passos + gerar código) |
| O que precisa | 1 ficheiro JSON (criado uma vez pelo administrador) | Um código de 16 caracteres por conta |
| Acesso necessário | Administrador do Workspace + Google Cloud | Acesso a cada conta |
Se só vai migrar uma ou duas contas, as palavras-passe de aplicação (descritas em Transferir contas Gmail para a Hostsuar) são o mais rápido. Para um domínio inteiro, continue com a conta de serviço.
Configurar a conta de serviço (feito pelo administrador do Workspace)
Estes passos são realizados uma única vez por um superadministrador do domínio Google Workspace. No fim, obtém-se um ficheiro JSON que serve para autenticar todas as contas do domínio. Contém uma chave privada que dá acesso completo a essas caixas de correio: guarde-o como uma palavra-passe.
1. Criar ou selecionar um projeto no Google Cloud
Aceda a console.cloud.google.com com a conta de administrador e crie um projeto novo (por exemplo migracion-correo) ou selecione um existente.

2. Ativar a Gmail API (opcional)
Em APIs e serviços → Biblioteca, procure Gmail API e clique em Ativar. A documentação do imapsync não a exige para este método, porque o acesso é dado pela delegação do passo 4, mas muitos guias da Google incluem-na e não tem qualquer custo.

3. Criar a conta de serviço e a sua chave JSON
Vá a APIs e serviços → Credenciais → Criar credenciais → Conta de serviço e dê-lhe um nome. O assistente vai oferecer-lhe depois dois passos marcados como (opcional): "Autorizações / Conceder acesso ao projeto" (selecionar uma função) e "Principais com acesso". Deixe ambos vazios e continue: esta conta de serviço não precisa de nenhuma função IAM sobre o projeto, porque o acesso às caixas de correio é concedido no passo 4 (delegação ao nível do domínio), não aqui. Clique em Concluído para a criar.
Depois, dentro da conta de serviço, entre no separador Chaves → Adicionar chave → Criar nova chave e escolha o formato JSON (não use P12).

Será descarregado um ficheiro com esta estrutura, que vai mudar de nome para secret.xoauth2.json:
{ "type": "service_account", "project_id": "...", "private_key_id": "...", "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n", "client_email": "xxx@proyecto.iam.gserviceaccount.com", "client_id": "1234567890...", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://accounts.google.com/o/oauth2/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "..." }
Anote o valor de client_id do JSON (um número longo): vamos precisar dele no passo seguinte. É o identificador OAuth2 da conta de serviço e é exatamente o que se cola no campo ID de cliente da delegação ao nível do domínio (passo 4).
4. Autorizar a delegação ao nível do domínio
Este passo é feito na consola de administração do Google Workspace (admin.google.com), que é um sítio diferente da Google Cloud Console onde criou a conta de serviço.
O mais rápido é ir diretamente ao URL de delegação (com sessão iniciada como superadministrador):
https://admin.google.com/ac/owl/domainwidedelegation
Ou então, navegando: Menu (☰) → Segurança → Controlo de acesso e de dados → Controlos de API → "Gerir a delegação ao nível do domínio". Aí, clique em Adicionar nova e:
- Em ID de cliente, cole o
client_iddo passo anterior. - Em Âmbitos OAuth, introduza este âmbito:
https://mail.google.com/
Muito importante:
https://mail.google.com/é o âmbito pedido pelo fluxo JSON do imapsync para aceder por IMAP. Autorize apenas esse âmbito.gmail.readonlynão permite iniciar sessão por IMAP. A Google documentagmail.imap_admincomo alternativa para clientes que peçam expressamente esse âmbito; adicioná-lo na consola não faz com que o imapsync o peça nem garante que apareçam etiquetas ocultas.
Clique em Autorizar para guardar.
5. Verificar se o IMAP está ativado
Na consola de administração, vá a Apps → Google Workspace → Gmail → Acesso do utilizador final e certifique-se de que o acesso IMAP está ativado. Na política de clientes de correio da unidade organizacional afetada deve estar permitido qualquer cliente de correio; uma restrição a identificadores OAuth concretos pode bloquear a conta de serviço mesmo que a delegação exista.
Com isto, a parte da Google está pronta. O administrador só tem de fazer chegar o ficheiro secret.xoauth2.json a quem executar a migração, por um canal seguro (não no texto de um ticket nem por email).
Testar e executar o imapsync
Este método não funciona na interface web do imapsync, que só admite utilizador e palavra-passe: é preciso executá-lo na linha de comandos. Se usar o imapsync a partir do código-fonte (não o binário), instale antes os módulos Perl de que o XOAUTH2 precisa:
sudo cpanm JSON::WebToken JSON Crypt::OpenSSL::RSA LWP HTML::Entities Encode::Byte
Guarde a palavra-passe da caixa de correio de destino num ficheiro privado (chmod 600 ~/.imapsync-destino) e teste primeiro apenas o início de sessão de uma conta:
imapsync \ --host1 imap.gmail.com --ssl1 --sslargs1 SSL_verify_mode=1 --user1 usuario@tudominio.com \ --password1 /ruta/privada/secret.xoauth2.json --authmech1 XOAUTH2 \ --host2 SERVIDOR_IMAP_DESTINO --ssl2 --sslargs2 SSL_verify_mode=1 --user2 usuario@tudominio.com \ --passfile2 "$HOME/.imapsync-destino" --justlogin
Retire --justlogin só quando ambas as autenticações funcionarem. A delegação evita criar uma chave por utilizador, mas o imapsync continua a executar uma sincronização por caixa de correio. Teste primeiro uma conta, reveja etiquetas e contagens e depois processe as restantes de forma controlada. O Gmail limita as descargas IMAP a 2.500 MB por utilizador por dia segundo o limite publicado, que a Google pode alterar; ao atingir o limite, pare essa conta e aguarde antes de a retomar. Use em SERVIDOR_IMAP_DESTINO o hostname com certificado válido indicado em Connect Devices no cPanel.
Para migrar todas as contas, prepare um ficheiro cuentas.txt com um endereço por linha e uma palavra-passe de destino por conta em ~/.imapsync-destino-USUARIO, e percorra-o:
while read cuenta; do imapsync \ --host1 imap.gmail.com --ssl1 --user1 "$cuenta" \ --password1 /ruta/privada/secret.xoauth2.json --authmech1 XOAUTH2 \ --host2 SERVIDOR_IMAP_DESTINO --ssl2 --user2 "$cuenta" \ --passfile2 "$HOME/.imapsync-destino-${cuenta%@*}" \ --gmail1 --logfile "migracion-${cuenta}.log" done < cuentas.txt
--gmail1 aplica as definições do imapsync para o Gmail como origem: limita a velocidade para não esbarrar nos limites da Google, retira o prefixo [Gmail]/ às pastas especiais, deixa «Todo o correio» para o fim e não volta a copiar uma mensagem que já copiou a partir de outra etiqueta. Se uma conta for interrompida pelo limite diário de descarga, volte a executá-la no dia seguinte: o imapsync só copia o que faltar.
No fim da migração
Quando tiver verificado as caixas de correio no destino:
- Em admin.google.com/ac/owl/domainwidedelegation, elimine a autorização do
client_id. - No Google Cloud, entre na conta de serviço, separador Chaves, e elimine a chave (ou a conta de serviço inteira).
- Apague todas as cópias do ficheiro
secret.xoauth2.json.
Se a chave puder ter ficado exposta em algum momento, elimine-a e crie uma nova antes de continuar: apagar o ficheiro não invalida uma chave já copiada.
Depois, quando quiser que o correio novo chegue à Hostsuar, altere os registos MX e repita o imapsync uma última vez para copiar o que tiver entrado na Google entretanto.
Também lhe pode ser útil
- Transferir o correio do Gmail para a Hostsuar com o imapsync (palavra-passe de aplicação) Prepare a sua conta do Gmail ou do Google Workspace para copiar todo o seu correio para a Hostsuar c...
- Usar o imapsync por SSH para copiar correio entre fornecedores Ensina a copiar uma caixa de correio completa com o imapsync por SSH, usando TLS e ficheiros protegi...
- 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...
- Descarregar o correio para o computador e eliminá-lo do servidor Três formas de guardar o seu correio no computador e libertar espaço no servidor: copiar para pastas...
Algo não bate certo ou mudou? Diga-nos e revemos.