Compressed mail in Dovecot
For one of our clients, I had to compress mails stored by Dovecot (to save some diskspace on their mail server). In the Dovecot wiki you can find a pseudo script that can do this for you. I used that to write the following script.
#!/bin/bash
if [[ $1 == "" ]]; then
echo $0 " "
exit -1
fi
tocompress=`cd $1/cur/ && find . -iname '*,S=*[^Z]'`
for mail in $tocompress; do
echo "gzipping $1/cur/$mail to $1/tmp/${mail}Z"
gzip -S Z "$1/cur/$mail" -c > "$1/tmp/${mail}Z"
echo "setting mtime"
touch -r "$1/cur/$mail" "$1/tmp/${mail}Z"
done
echo "aquiring maildirlock"
if PID=`/usr/lib/dovecot/maildirlock $1/cur 20`; then
#locking successfull, moving compressed files
for mail in $tocompress; do
mv $1/tmp/${mail}Z $1/cur/
rm $1/cur/${mail}
done
kill $PID
else
echo "lock failed"
exit -1
fiMake sure you enable the zlib plugin in your Dovecot config (as described in the wiki).