Skip to content
← Back to projects

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 origin e destination conectando 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-ID no destino.
  • Mostra progresso no terminal e grava log em logs/imap_sync_*.log.
  • Atualiza o accounts.json com status.state e status.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.

New version available.