Sync Cpanel Emails Imap
script para migração de contas de email cpanel no modelo imap de um servidor para outro.
#syncImaps
Script para validar e sincronizar caixas IMAP do cPanel entre "origin" e
"destination". O processo registra log em arquivo e terminal e grava o status
de cada conta dentro do accounts.json.
#Requisitos
- Python 3.8+
- Acesso IMAP via SSL (porta 993, normalmente)
O projeto nao possui dependencias externas. O arquivo requirements.txt existe
apenas para padronizar a instalacao.
#Instalacao
Clone o repositorio e crie o ambiente virtual.
#Windows (PowerShell)
git clone <URL_DO_REPOSITORIO> cd syncImaps python -m venv venv .\venv\Scripts\Activate.ps1 python -m pip install --upgrade pip pip install -r requirements.txt
#Linux/macOS (bash)
git clone <URL_DO_REPOSITORIO> cd syncImaps python3 -m venv venv source venv/bin/activate python -m pip install --upgrade pip pip install -r requirements.txt
Para sair do ambiente virtual:
deactivate
#Configuracao
Copie o arquivo de exemplo e preencha com as credenciais reais:
cp accounts.json.example accounts.json
Exemplo de estrutura (nao reutilize credenciais reais em repositorio publico):
[ { "origin": { "host": "mail.servidor-origin.com.br", "port": "993", "username": "meu-email@servidor-origin.com.br", "password": "minhasenhaorigin" }, "destination": { "host": "mail.servidor-destino.com.br", "port": "993", "username": "meu-email@servidor-destino.com.br", "password": "minhasenhadestino" } } ]
O arquivo accounts.json esta no .gitignore para evitar publicar senhas.
#Como usar
Validacao das contas (nao sincroniza emails):
python imap_cpanel_sync.py
Sincronizacao completa (pastas e emails):
python imap_cpanel_sync.py --sync
Parametros opcionais:
python imap_cpanel_sync.py --accounts ./accounts.json --log ./logs/meu_log.log --sync
#O que o script faz
- Valida os dados de
originedestinationconectando via IMAP SSL. - Lista pastas no origin e cria no destination quando necessario.
- Copia mensagens preservando flags e data interna.
- Evita duplicar mensagens quando existe
Message-IDno destino. - Mostra progresso no terminal e grava log em
logs/imap_sync_*.log. - Atualiza o
accounts.jsoncomstatus.stateestatus.message.
#Observacoes sobre contatos
IMAP nao sincroniza contatos (CardDAV). O script copia apenas pastas e emails. Se o provedor expuser contatos como uma pasta IMAP, ela sera tratada como qualquer outra pasta.