Aplicativo de mesa que migra uma conta IMAP inteira para o Outlook com backup em mbox, retomável, só com a biblioteca padrão do Python.
O problema
Migrar caixa postal entre provedores é trabalho que costuma acabar em ferramenta paga, script frágil de uso único ou arrastar pasta no cliente de e-mail. Os três perdem o que mais importa: a data original das mensagens. Sem ela a caixa migrada aparece inteira com a data da migração e a ordem cronológica se perde. E a Microsoft desligou autenticação por senha no IMAP das contas 365, o que quebra a maioria dos scripts existentes.
A arquitetura
Duas etapas separadas e retomáveis — do servidor de origem para mbox no disco, e do mbox para a conta de destino — com um índice JSON ao lado de cada arquivo mbox registrando onde cada mensagem está, suas flags e a data original. É esse índice que permite retomada exata sem varrer o arquivo inteiro e garante que rodar duas vezes não duplique mensagem. A autenticação cobre os dois mundos: OAuth2 no fluxo device code para Microsoft 365 e Outlook.com, onde a senha no IMAP foi desligada, e usuário e senha para Exchange local, cPanel, Dovecot e Zimbra. A restrição autoimposta de usar apenas a biblioteca padrão do Python eliminou a etapa de instalação de dependências para quem recebe o programa. Os módulos têm fronteira explícita: o cliente IMAP não conhece mbox nem destino, o repositório mbox não conhece IMAP, e a interface apenas chama os módulos — por isso o motor é testável sem Tkinter. Há ainda um conversor opcional de PST para mbox, que lê mas não escreve o formato, porque não existe biblioteca livre confiável que escreva PST em nenhuma linguagem.
O resultado
Aplicativo que roda no Windows e no Linux com o Python oficial, sem instalar dependência. A suíte roda contra dois servidores Dovecot reais em contêineres, com 2.054 linhas de teste, e a interface gráfica é verificada de verdade em tela virtual dentro de um contêiner — janela construída, abas percorridas, controles acionados — opcionalmente salvando um PNG de cada aba como evidência. O que não é migrado está dito na documentação em vez de descoberto no uso: contatos e agenda não trafegam por IMAP e precisam ser exportados pela interface do provedor.


🔒 Código-fonte
git clone https://git.programandosolucoes.com.br/git/repos/migrador-email.git
Código-fonte privado. As credenciais de leitura são liberadas sob solicitação — me chame para conversar sobre o projeto.