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

pdp*_*pdp 5 email productivity

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

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

roa*_*ima 3

一般情况是,对于占用 (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 roaima@contoso.com
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 *
Run Code Online (Sandbox Code Playgroud)

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

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

cp -al work/* backup/
find backup -type f -name '.*' -delete
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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