壓縮郵件目錄wasStrang磷_ostf我×米艾迪___我__我是__在一種s小號噸r一種nG和磷這s噸F一世X米一種一世ld一世rF一世l和swas Strange Postfix Maildir files
我被要求解決從已死的舊伺服器恢復電子郵件備份的情況。
擁有 Maildir 文件和一些標頭數據,我可以通過一些偵探工作輕鬆確定伺服器用於執行 postfix+dovecot 的組合,這與我所說的 postfix+courier 相反。
所以我用 Postfix 3.1.6 和 dovecot-imapd 2.2.27 設置了一個 Debian 9 伺服器。
經過幾次調整,我們已經看到了這些文件夾,但是電子郵件看起來是亂碼。
檢查 cur 和 new 目錄,電子郵件文件看起來是正常的 Maildir 格式,但打開它們似乎是亂碼。
執行命令
file
以查找消息均採用 gzip 壓縮格式。這裡發生了什麼,我是否給了我一個備份,管理員在備份之前壓縮了所有郵箱消息文件?
當我進一步探索這個主題時,我覺得有些東西絕對不合適。
我的懷疑也越來越大,因為當解壓縮一些消息時,當 dovecot 看到它們時,名稱實際上已更新以反映新的更大尺寸。
因此,經過進一步調查,發現鴿舍可以有壓縮的地方。
我剛剛發現壓縮可以應用於 Dovecot 郵件儲存。
請注意,壓縮僅適用於“新”電子郵件。
來自Debian 上的 Compressed Dovecot Maildir。
將此添加到 /etc/dovecot/conf.d/10*
# Enable zlib plugin globally for reading/writing: mail_plugins = $mail_plugins zlib # Enable these only if you want compression while saving: plugin { zlib_save_level = 6 # 1..9; default is 6 zlib_save = gz # or bz2, xz or lz4 }
將此添加到 /etc/dovecot/conf.d/20*
protocol imap { mail_plugins = zlib } protocol pop3 { mail_plugins = zlib }
重啟服務
dovecot
:service dovecot restart
然後,壓縮設置將應用於配置更改後創建的所有消息。
Dovecot WiKi(Zlib 外掛)上有一些說明可以幫助您壓縮已儲存的電子郵件。
Zlib 外掛可用於讀取壓縮的 mbox、maildir 或 dbox 文件。它還可用於將(通過 IMAP、LDA 和/或 LMTP)壓縮消息寫入 dbox 或 Maildir 郵箱。Zlib 外掛支持使用 zlib/gzip、bzlib/bzip2、liblzma/xz (v2.2.9+) 和 liblz4/lz4 (v2.2.11+) 進行壓縮。
……
它是傾斜的
載入此外掛後,Dovecot 可以從 Maildir 讀取壓縮和未壓縮文件。如果您同時啟用了 gzip 和 bzip2 支持,您可以在 Maildir 中使用其中任何一個壓縮文件。通過從文件中讀取前幾個字節並確定它是有效的 gzip 還是 bzip2 標頭來檢測壓縮。文件名無所謂。
或者,由於性能原因不想處理壓縮郵箱,批量解壓縮它們的方法之一是編寫 bash 腳本。
目前腳本有一些缺點,但一般準則是:
#!/bin/bash TMPDIR="/tmp" service dovecot stop find /home/*/Maildir -type f | while read file do file "$file" | grep gzip > /dev/null if [ $? -eq 0 ] then echo "$file"" gzipped...decompacting" mv "$file" $TMPDIR/$$.gz gunzip -c $TMPDIR/$$.gz > "$file" rm -f $TMPDIR/$$.gz fi done find /home -name "dovecot.index.cache*" -delete service dovecot start