Debian

壓縮郵件目錄wasStrang磷_ostf我×米艾迪___我__我是__在一種s小號噸r一種nG和磷這s噸F一世X米一種一世ld一世rF一世l和swas Strange Postfix Maildir files

  • March 26, 2018

我被要求解決從已死的舊伺服器恢復電子郵件備份的情況。

擁有 Maildir 文件和一些標頭數據,我可以通過一些偵探工作輕鬆確定伺服器用於執行 postfix+dovecot 的組合,這與我所說的 postfix+courier 相反。

所以我用 Postfix 3.1.6 和 dovecot-imapd 2.2.27 設置了一個 Debian 9 伺服器。

經過幾次調整,我們已經看到了這些文件夾,但是電子郵件看起來是亂碼。

檢查 cur 和 new 目錄,電子郵件文件看起來是正常的 Maildir 格式,但打開它們似乎是亂碼。

執行命令file以查找消息均採用 gzip 壓縮格式。

這裡發生了什麼,我是否給了我一個備份,管理員在備份之前壓縮了所有郵箱消息文件?

當我進一步探索這個主題時,我覺得有些東西絕對不合適。

我的懷疑也越來越大,因為當解壓縮一些消息時,當 dovecot 看到它們時,名稱實際上已更新以反映新的更大尺寸。

因此,經過進一步調查,發現鴿舍可以有壓縮的地方。

來自在 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 外掛)上有一些說明可以幫助您壓縮已儲存的電子郵件。

來自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

引用自:https://unix.stackexchange.com/questions/427312