?

Log in

No account? Create an account

Josh-D. S. Davis

Xaminmo / Omnimax / Max Omni / Mad Scientist / Midnight Shadow / Radiation Master

Previous Entry Share Next Entry
Compressed Dovecot Maildir on Debian
Josh 201604 KWP
joshdavis
I just saved a few gigs with this. Figured I need to document this or I'll never remember. :)

Add this into /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 {


I just saved a few gigs with this. Figured I need to document this or I'll never remember. :)

Add this into /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


Add this into /etc/dovecot/conf.d/20*
protocol imap
..
mail_plugins = zlib

protocol pop3
..
mail_plugins = zlib


Remove extra spaces and leftover courier garbage
rename 's/\ /_/g' /home/jdavis/Maildir/.[a-zA-Z]*
rename 's/\__/_/g' /home/jdavis/Maildir/.[a-zA-Z]*
rename 's/\_\./\./g' /home/jdavis/Maildir/.[a-zA-Z]*
rm -r /home/jdavis/Maildir/courier*
rm -r /home/jdavis/Maildir/.[a-zA-Z]*/courier*


Compress all maildir files
#!/bin/sh

compress_maildir ()
cd $1
DIRS=`find -maxdepth 2 -type d -name cur`
for dir in $DIRS; do
echo $dir
cd $dir
FILES=`find -type f -name "*,S=*" -not -regex ".*:2,.*Z.*"`
#compress all files
for FILE in $FILES; do
NEWFILE=../tmp/$FILE
#echo bzip $FILE $NEWFILE
if ! bzip2 -9 $FILE -c > $NEWFILE; then
echo compressing failed
exit -1;
fi
#reset mtime
if ! touch -r $FILE $NEWFILE; then
echo setting time failed
exit -1
fi
done
echo Locking $dir/..
if PID=`/usr/lib/dovecot/maildirlock .. 120`; then
#locking successfull, moving compressed files
for FILE in $FILES; do
NEWFILE=../tmp/$FILE
if [ -s $FILE ] && [ -s $NEWFILE ]; then
echo mv $FILE $NEWFILE
mv $FILE /tmp
mv $NEWFILE $FILEZ
else
echo mv failed
exit -1
fi
done
kill $PID
else
echo lock failed
exit -1
fi
cd - >/dev/null
done


compress_maildir /home/jdavis/Maildir/


References
http://wiki.dovecot.org/Plugins/Zlib
http://wiki2.dovecot.org/Plugins/Zlib
http://abma.de/blog/2010/449
https://bbs.archlinux.org/viewtopic.php?id=36305

http://omnitech.net/news/2015/11/14/compressed-dovecot-maildir-on-debian/