维护电子邮件备份的好方法是什么?

维护电子邮件备份的好方法是什么?

我希望能够以标准格式保存来自各种来源的电子邮件并进行备份。类似的做法是从多个设备(例如相机和智能手机)拍摄照片,并将它们全部以 JPEG 格式保存在一个目录中。

存档的问题(使用我主要使用的 KMail 或任何其他客户端的导出功能)是没有简单的方法来确定电子邮件在两次备份之间是否丢失。打个比方,使用 进行备份rsync。为了解释一下,假设我保留了两个备份,B1 和 B2,其中前者是从我的数据源(例如我的智能手机)更新的,而 B2 是在几天后从 B1 同步的。在执行 B1 到 B2 同步时,通过以详细方式进行试运行并在目标模式下删除无关文件,可以轻松发现意外删除。相关的还有引入重复电子邮件的问题。有没有一种聪明的方法来保存所有电子邮件?

答案1

一般情况是,对于占用 (N) MB 磁盘空间的大量电子邮件,您将需要 (N) MB 磁盘空间来发现删除,但最多需要 (2N) MB 磁盘空间来恢复它们。

我的mbsync日常cron工作是从 Exchange 备份电子邮件,文件如下.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 *

对于 IMAP,要求之一是不允许更改任何消息就地;任何更改都需要一条消息来指定新的文件标识符。这意味着您可以安全地使用以下方法ln在同步之前将当前状态复制到备份mbsync

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

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

同步后,您可以比较电子邮件列表,如下所示:

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

comm -23运行并comm -13生成新消息和已删除消息的列表,然后提取每个消息的 、From和标头以创建报告并不是特别困难。ToSubjectDate

相关内容