我被叫来解决从一台死掉的遗留服务器中恢复电子邮件备份的问题。
有了Maildir文件和一些头数据,我可以很容易地用一些检测工作确定服务器用来运行postfix+dovecot组合,这与我刚才所说的postfix+courier相反。
因此,我用后缀3.1.6和2.2.27设置了一个Debian 9服务器。
经过几次调整后,我们已经看到了文件夹,但电子邮件看上去很混乱。
检查cur和新的目录,电子邮件文件看起来像正常的Maildir格式,但打开他们似乎混淆了。
运行一个命令file,以发现消息都是gzipped格式的。
这里发生了什么,在备份之前,我是否得到了一个备份,管理员在备份之前对所有电子邮件框消息文件进行了压缩?
发布于 2018-02-28 21:24:19
当我进一步探讨这个问题时,我觉得有什么地方不合适。
我的猜疑也越来越多,因为当不加拉链的一些消息时,名称实际上被更新,以反映新的更大的规模时,多维柯看到他们。
因此,经过进一步的研究,发现多维柯可以有压缩的地方。
我刚刚发现压缩可以应用于Dovecot邮件存储。请注意,压缩只适用于“新”电子邮件。
来自Debian上的压缩Dovecot Maildir。
将其添加到/etc/dovecot/conf.d.d**# Enable zlib插件中进行全局读写: mail_plugins = $mail_plugins zlib #只在保存时需要压缩: plugin { zlib_save_level =6#.9;默认值为6 zlib_save = gz #或bz2、xz或lz4 },将其添加到/etc/dovecot/con.d/20* protocol imap { mail_plugins = zlib }协议pop3 { mail_plugins = zlib }中。
重新启动服务dovecot:
service dovecot restart然后,压缩设置将应用于在配置更改后创建的所有消息。
Dovecot WiKi (Zlib插件)上有一些帮助您压缩已经存储的电子邮件的说明。
Zlib插件可用于读取压缩的mbox、maildir或dbox文件。它还可用于(通过IMAP、LDA和/或LMTP)将压缩消息写入dbox或Maildir邮箱。Zlib插件支持使用zlib/gzip、bzlib/gzip 2、liblzma/xz (v2.2.9+)和liblz4 4/xz 4 (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 starthttps://unix.stackexchange.com/questions/427312
复制相似问题