O que é uma boa maneira de manter um backup de emails?

3

Eu quero poder salvar meus e-mails de várias fontes em um formato padrão e manter um backup. Um análogo é tirar fotos de vários dispositivos (por exemplo, câmeras e smartphones) e salvar todos eles em um diretório no formato JPEG.

O problema com arquivos (usando o recurso de exportação do KMail que eu uso principalmente ou qualquer outro cliente) é que não há uma maneira fácil de determinar se um e-mail foi perdido entre dois backups. Uma analogia é fazer backups usando rsync . Para explicar, digamos que eu mantenha dois backups, B1 e B2, onde o primeiro é atualizado da minha fonte de dados (por exemplo, meu smartphone) e B2 é sincronizado a partir de B1 depois de alguns dias. É fácil identificar exclusões acidentais executando execuções a seco em arquivos verbosos além de excluir arquivos estranhos no modo de destino, ao fazer a sincronização B1 para B2. Relacionado também é o problema de introduzir duplicatas de email. Existe uma maneira inteligente de salvar todos os e-mails?

    
por pdp 26.11.2016 / 18:40

1 resposta

2

O caso geral é que para um número de mensagens de e-mail com (N) MB de espaço em disco você precisará de (N) MB espaço em disco para detectar exclusões, mas até (2N) MB de espaço em disco para recuperá-las. p>

Eu uso mbsync como uma tarefa diária cron para fazer backup de e-mails do Exchange, com isso como o arquivo .mbsyncrc :

# See http://www.benfrancom.com/2014/11/24/mutt-offline-with-mbsync/
#
IMAPAccount work
Host outlook.office365.com
User [email protected]
Pass donteventhinkaboutit
# PassCmd "gpg2 -q --for-your-eyes-only --no-tty -d ~/.mailpass.gpg"
UseIMAPS yes
CertificateFile /etc/ssl/certs/ca-certificates.crt
PipelineDepth 5

IMAPStore work-remote
Account work

MaildirStore work-local
Path ~/.mbsync/work/
Inbox ~/.mbsync/work/INBOX

Channel work
Master :work-remote:
Slave :work-local:
Patterns "INBOX" "*"
# Patterns "INBOX" "Other" "Archive" "Drafts" "Deleted Items"
Create Slave
# Remove Slave
Expunge Slave
Sync Pull New ReNew Delete Flags
SyncState *

Com o IMAP, um dos requisitos é que nenhuma mensagem possa ser alterada in situ ; qualquer alteração requer que uma mensagem seja entregue a um novo identificador de arquivo. Isso significa que você pode usar com segurança ln para replicar o estado atual para um backup antes de uma sincronização com mbsync :

cd "$HOME/.mbsync"
mkdir -p backup

cp -al work/* backup/
find backup -type f -name '.*' -delete

Após a sincronização, você pode comparar as listas de e-mails assim:

cd "$HOME/.mbsync"
( cd work &&
    find . -type f \( -name '.*' -o -printf "%p\t%T+\t%y\t%#m\t%U\t%G\n" \) |
    sort 
) > work.list

( cd backup &&
    find . -type f \( -name '.*' -o -printf "%p\t%T+\t%y\t%#m\t%U\t%G\n" \) |
    sort 
) > backup.list

comm -3 work.list backup.list

Não seria difícil executar comm -23 e comm -13 para gerar listas de mensagens novas e excluídas e, em seguida, extrair os cabeçalhos From , To , Subject e Date para cada para criar um relatório.

    
por 29.11.2016 / 13:30