Cansei dos clientes de e-mail que usava e comecei a escrever EpistulaMail
Já passei por vários clientes de e-mail ao longo dos anos, desde 2012. Alguns eram bonitos, mas pago; outros eram funcionais, mas tinha uma péssima usabilidade, sabe aquela tela feia? Pronto, uma dessa. Pensei porque não tentar criar cliente de e-mail junto com a comunidade? Todo mundo usa e-mail e certamente tem alguma ideia do que seria melhor para ela. Pensando nisso, estou escrevendo um cliente de e-mail. Olha, não tem nada de perfeito aqui, tá? Aqui tem apenas um programador com mais de 10 anos de experiência na tentativa de criar algo que sirva pra todos nós técnicos e também pra quem não é técnico.
O resultado se chama EpistulaMail, um cliente de e-mail para desktop feito em Rust, Tauri e React.
Print do EpistulaMail tirado do meu computador Windows onde faço gestão de 4 contas do Gmail: https://github.com/elyosemite/epistulamail/blob/main/docs/images/epistula-caixa-de-entrada.png. Elyosemite, parece que você deixou vazar seu email. Não, não. Foi de propósito, se quiser me enviar alguma sugestão podem me enviar para o email yurifullstack@gmail.com
(adoraria deixar uma imagem do EpistulaMail aqui, sabe, mas parece que o TabNews ainda não implementou essa feature 👀🫣😅). Mas você pode acessar o link de repositório aqui e dar um estrela no repo.
A ideia
E-mail é provavelmente o arquivo mais antigo que a maioria de nós tem. Contrato, exame, nota fiscal, conversa de família, código de recuperação de senha de tudo. Mesmo assim, a gente costuma deixar tudo isso num único lugar, acessível só pelo navegador, sob as regras de quem hospeda.
O EpistulaMail parte de uma premissa simples: os seus e-mails devem ficar com você.
- As mensagens que você abre ficam guardadas no seu computador, num banco SQLite cifrado com SQLCipher (AES-256);
- A chave fica no cofre do sistema operacional, não num arquivo de configuração ou uma região de memória no app a ser explorada por hackers;
- Se a internet cair, a caixa continua lá;
- O login é por OAuth. O app não vê a sua senha;
- O HTML dos e-mails é sanitizado;
- JavaScript nào é exibido;
- Imagens externas ficam bloqueadas até você liberar, que é por onde vem a maioria dos pixels de rastreamento;
O que já funciona
- Várias contas ao mesmo tempo, cada uma com nome, cor e foto;
- Pastas, marcadores, paginação e sincronização em segundo plano;
- Mover, arquivar, excluir, marcar como lida e sinalizar com prazo, uma mensagem ou várias de uma vez, inclusive arrastando;
- Busca, barra de comandos e rascunhos de resposta salvos localmente;
- Tema claro, escuro ou do sistema;
- Atualmente, estou trabalhando no provedor do Gmail, o próximo será os e-mails do Outlook. Além, claro, de adicionar IMAP, POP3 e SMTP.
Por enquanto só contas Google podem ser conectadas, mas o modelo de dados já está pronto para outros provedores via IMAP. as funcionalidade de enviar e-mail e respondê-los ainda não estão ativadas. Em breve serão.
O que vem pela frente
- Backup que você controla: exportar uma conta inteira para um arquivo cifrado, guardar onde quiser e restaurar em outra máquina. O formato vai ser documentado, para ninguém ficar preso ao app;
- Criptografia pós-quântica. O AES-256 que já protege o disco continua forte mesmo contra computadores quânticos. O ponto frágil está na troca de chaves: backups abertos em outro computador, sincronização entre dispositivos e mensagens cifradas de ponta a ponta. Para isso, o plano é usar um esquema híbrido (X25519 com ML-KEM), para que a segurança não dependa de uma única aposta. Para e-mail, que a gente guarda por décadas, o risco de alguém capturar agora e decifrar depois é real.
- Mais provedores, busca offline completa, regras, adiar mensagens e caixa unificada.
Design System
Uma parte do projeto de que gosto bastante é o Design System. Me importo muito com UI, UX e usabilidade, e um cliente de e-mail é uma ferramenta que a gente abre dezenas de vezes por dia. Qualquer atrito pequeno vira irritação grande.
Por isso, antes de cada funcionalidade nova, os componentes passam pelo Design System, que fica no próprio repositório, em design-system/. Ele tem tokens, cores, tipografia, espaçamento, acessibilidade e páginas para cada peça da interface: lista de mensagens, leitura, composição, menus, modais e por aí vai. Atualizo ele o tempo todo. E Ainda estou contruindo. Se tiver um Design para opinar em cima do que fiz, vou ficar muito feliz.
Ele segue quatro princípios:
- Densidade com respiro: a lista mostra muitas mensagens sem perder a legibilidade.
- Leitura em primeiro lugar: o painel de leitura usa fonte e largura de linha pensadas para texto longo.
- Ação a um gesto: arquivar, excluir e responder ficam a um clique ou a uma tecla, e toda ação destrutiva pode ser desfeita.
- Estado sempre visível: não lida, selecionada, com falha. Cada estado muda forma e peso, não só a cor.
Quer testar?
Em breve vai ter instalador para download. Enquanto isso, qualquer pessoa pode rodar localmente, basta clonar o projeto:
git clone https://github.com/elyosemite/epistulamail.git
cd epistulamail
pnpm install
pnpm tauri dev
Você vai precisar de Node 24, pnpm e Rust. No Windows, rode antes ./scripts/setup-build-tools.ps1, que baixa o Perl usado para compilar o OpenSSL do SQLCipher. Para conectar uma conta, crie um cliente OAuth do tipo "Desktop app" no Google Cloud e coloque o ID e o secret no .env, seguindo o .env.example. O README tem o passo a passo.
Procuro contribuidores
O projeto é aberto e eu adoraria ter companhia trocando ideas e escrevendo código ali comigo. Tem espaço para quem curte Rust (IMAP, SMTP, criptografia, sincronização), para quem curte front-end e React, e principalmente para quem tem olho para design e usabilidade.
E se você nunca escreveu uma linha de Rust, ainda dá para ajudar muito: me diga o que falta. Qual recurso faz você continuar usando o seu cliente atual? O que te irrita nele? O que você gostaria de ver no EpistulaMail? Estou aceitando sugestões, tanto de funcionalidade quanto de interface. Pode deixar nos comentários ou abrir uma issue no GitHub.
Repositório: https://github.com/elyosemite/epistulamail