#!/bin/bash
echo "run as root"
service dovecot stop
sleep 1
#MAILDIRTOCOMPRESS="/var/qmail/mailnames" 

#MAILDIRTOCOMPRESS="/pub/projects/compress_Maildir_dovecot/testdir"
MAILDIRTOCOMPRESS="./"
#find "${MAILDIRTOCOMPRESS}" -mtime +182 -type f -regex ".*\.$HOSTNAME,.*S=.*,[a-yA-Y]*" ! -name "*\.gz*" -print0 |
find "${MAILDIRTOCOMPRESS}" -mtime +182 -type f -regex ".*\.$HOSTNAME,.*S.*,[^Z]+" ! -name "*\.gz*" -print0 |
 while read -rd $'\0' FULLPATH
  do
    echo "${FULLPATH}"
    if file "${FULLPATH}" | grep compressed -q; then
      #mv "${FULLPATH}" "${FULLPATH}Z" # Already compressed
      echo "${FULLPATH} already compressed"
    else
      BASENAME=$(basename "${FULLPATH}")
      cp -a "${FULLPATH}" "/tmp/${BASENAME}" # Move to tmp
      gzip -f "/tmp/${BASENAME}" # Compress
      if [[ -f ${FULLPATH} ]]; then # Make sure the original file has not been deleted while we were compressing
        #mv "/tmp/${BASENAME}.gz" "${FULLPATH}Z" && rm "${FULLPATH}"
        mv "/tmp/${BASENAME}.gz" "${FULLPATH}" && rm "${FULLPATH}"
      else
        rm "/tmp/${BASENAME}.gz"
        continue
      fi
    fi
    echo "${FULLPATH}" >> /var/log/archived-emails.log
    echo "${FULLPATH}" >> ./archived-emails.log
  done
service dovecot start
