Maildir para armazenamento de e-mails foi introduzido, fazendo exatamente o que você descreve: um mensagem é armazenada em um arquivo separado.
E há drivers do Maildir (back-ends) para alguns clientes de e-mail, alguns agentes de entrega de e-mail e alguns servidores de acesso a e-mail (IMAP ou POP ou interface da web).
É claro que, se o seu e-mail estiver armazenado em Maildirs, é mais fácil colocá-lo sob controle de versão usual.
Assim, você pode procurar back-ends do Maildir para clientes de e-mail.
Mas, na verdade, sincronizar seu armazenamento de e-mail pode ser um pouco mais complicado do que sincronizar diretórios de arquivos - devido a vários sinalizadores (novos, lidos), rótulos, movimentos ou cópias de mensagens entre pastas, e - a parte mais complicada - as IDs de mensagens internas do servidor usadas pelos servidores de acesso de correio (IMAP) ou pelos clientes de correio . Quais são esses IDs sobre? Bem, é importante preservar IDs entre várias cópias de seu armazenamento de mensagens para, digamos, o procedimento de armazenamento em cache de seu cliente de correio ser executado corretamente.
Eu explorei essa questão e escrevi algumas anotações aqui: pesquisa sobre COMO fazer backup de uma conta IMAP . (Mas então eu não tive que completar essa tarefa, então as notas e minha solução prática não estavam completas.)
A ideia geral a que cheguei é que usar um cliente de email e simplesmente colocar Maildirs sob controle de versão não dá a você tudo o que você pode querer de gerenciar as revisões de seu armazenamento de email. É melhor combiná-lo com servidores IMAP reais (remotos ou locais) para acesso uniforme ao correio, e com ferramentas especiais executadas em cima do IMAP para sincronizar diferentes cópias / repositórios / ramificações do armazenamento de mensagens (as ferramentas especiais serão cuidar dos sinalizadores, etiquetas, IDs corretamente). O controle de versão usual é OK para inspecionar as revisões e reverter para uma revisão anterior, mas para mesclar ramificações (= syncronizing) eu consideraria um procedimento mais complexo:
You want to merge branches
A
andB
.
- So you prepare the new state (revision)
C
that will hold the merged state by copying one of them, e.g., copyA
to the newC
.- Then you use a tool (like "imapsync"; choose the one that matches your needs; I have listed a few such tools in my notes) to bring the new changes from B to C: imapsync
B
toC
.(this might assume that you are accessing the mail storage via IMAP through a server)
- Now commit
C
(as the result of mergingA
andB
; before this, you might use an appropriate command in your VCS to write down the information that is the result of mergingB
toA
, e.g., something like "git merge B -s ours --no-commit
" inC
).
Por favor, explore os detalhes você mesmo, eu tenho apenas a idéia geral em mente, e não estou executando esse procedimento na prática agora.
Eu acho que esta é uma tarefa muito interessante a ser feita por utilitários conhecidos, eu gostaria de ouvir mais sobre configurações bem-sucedidas para fazer isso que outras pessoas criaram!
AFAIR Eu escolhi offlineimap
para minha tarefa de fazer backup de uma conta IMAP no Git. BTW aqui uma resposta com um exemplo de configuração de offlineimap
.