Email

如何將郵件從伺服器同步到備份,只保留伺服器上的最新郵件

  • December 5, 2011

目前我做了一個簡單的郵件備份:在伺服器上有一個 Maildir,我使用 rsync 將 Maildir 從伺服器同步到備份。

所以我在伺服器上刪除每個早於一個月的文件。所以我只有伺服器上的最新郵件,其餘的只有備份。所以我不會在伺服器上使用太多空間,如果有人黑了我,他只會收到一個月的郵件,而不是整個存檔。

我使用的命令是:

rsync -avz Maildir/ backupserver:backup/Mails/
cd Maildir
touch -d 2011-07-30 dummy
find -type f \! -newer dummy -delete

這工作得很好,但是當我移動已經在備份中的郵件時,我將在備份中擁有兩個郵件副本。一份來自舊備份作業,一份來自新備份。或者我什至可能決定刪除郵件,它不會在備份中被刪除。

我可以將 rsync 與 –delete 一起使用,但是我需要在伺服器上保存完整的存檔,否則它也會刪除備份中的舊郵件。

所以現在我的問題是:我怎樣才能以一種保留移動和刪除的方式同步郵件?

好的,我想我找到了解決方案:

使用Syncmaildir,我使來自本地 maildir 的電子郵件與遠端 maildir 保持同步。當我想從伺服器中刪除舊郵件而不是從備份中刪除時,我首先同步最後一次,同步添加/刪除/移動的郵件,然後我從本地和遠端 .smd/ 文件夾中刪除 mail-db並刪除舊郵件。

詳細步驟:

  • 使用 smd-pull 同步郵件

  • 從伺服器中刪除舊郵件時:

    • 與 smd-pull 同步最後一次
    • 使用 find-cmdline 刪除舊郵件。
    • 本地/遠端刪除 .smd/profilename__Mail.db.txt* 文件
    • 再次同步,以便為剩余文件重建數據庫,因此可以檢測到移動/刪除。
  • 像往常一樣同步郵件

引用自:https://serverfault.com/questions/306533