Maintain Trash and Spam folder

From QmailToaster
Revision as of 09:29, 16 March 2024 by Ebroch (talk | contribs) (Created page with " #!/bin/bash # qtprune.sh # # This file can be put in /etc/cron.daily # and will prune Trash/Spam directories # Nov 7, 2006 # # 3/5/2007 Added date configuration capability # # Erik A. Espinoza <espinoza@kabewm.com # # # # Number of days for Trasn TRASH_DAYS="28" # Number of days for Spam SPAM_DAYS="28" # Find Trash Dir PATH_TRASH="`find /home/vpopmail/domains -type d -name .Trash`" # Find Spam Dir PATH_SPAM="`find /home/vpopmail/domains -type d -nam...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
#!/bin/bash
# qtprune.sh
#
# This file can be put in /etc/cron.daily
# and will prune Trash/Spam directories
# Nov 7, 2006
#
# 3/5/2007 Added date configuration capability
#
# Erik A. Espinoza <espinoza@kabewm.com
#
#
#
# Number of days for Trasn
TRASH_DAYS="28"
# Number of days for Spam
SPAM_DAYS="28"
# Find Trash Dir
PATH_TRASH="`find /home/vpopmail/domains -type d -name .Trash`"
# Find Spam Dir
PATH_SPAM="`find /home/vpopmail/domains -type d -name .Spam`"


# Exit if no spam or trash directories found
if [ -z "${PATH_TRASH}" ] && [ -z "${PATH_SPAM}" ]; then
   exit 0
fi
# Delete Trash older than $TRASH_DAYS days
# if Trash directories found
if [ -n "${PATH_TRASH}" ]; then
   for each in "${PATH_TRASH}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${TRASH_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi
# Learn and Delete Spam older than $SPAM_DAYS
# days if Spam directories found
if [ -n "${PATH_SPAM}" ]; then
   for each in "${PATH_SPAM}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${SPAM_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 sudo -u vpopmail -H sa-learn --spam ${file}  >/dev/null 2>&1
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi


exit 0
# EOF


Below is the modified script to maintain Draft, Sent, Trash and Spam in one shots.

#!/bin/bash
# qtprune.sh
#
# This file can be put in /etc/cron.daily
# and will prune Trash/Spam directories
# Nov 7, 2006
#
# 3/5/2007 Added date configuration capability
#
# Erik A. Espinoza <espinoza@kabewm.com>
#
#
# 8/20/2007 Added pruning for Sent dan Draft folders
# PakOgah <pakogah@pala.bo-tak.info>
#
# Number of days for Trash
TRASH_DAYS="30"
# Number of days for Spam
SPAM_DAYS="30"
# Number of days for Sent
SENT_DAYS="90"
# Number of days for Drafts
DRAFTS_DAYS="90"
# Number of days for keeping email
EMAIL_DAYS="31"

# Find Trash Dir
PATH_TRASH="`find /home/vpopmail/domains -type d -name .Trash`"
# Find Spam Dir
PATH_SPAM="`find /home/vpopmail/domains -type d -name .Spam`"
# Find Sent Dir
PATH_SENT="`find /home/vpopmail/domains -type d -name .Sent`"
# Find Drafts Dir
PATH_DRAFTS="`find /home/vpopmail/domains -type d -name .Drafts`"
# Find Email dir ( cur )
PATH_EMAIL="`find /home/vpopmail/domains -type d -name .cur`"

# Exit if no spam or trash directories found
if [ -z "${PATH_TRASH}" ] && [ -z "${PATH_SPAM}" ] && [ -z "${PATH_SENT}" ] && [ -z "${PATH_DRAFTS}" ]; then
   exit 0
fi

# Delete Trash older than $TRASH_DAYS days
# if Trash directories found
if [ -n "${PATH_TRASH}" ]; then
   for each in "${PATH_TRASH}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${TRASH_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi

# Delete Sent older than $SENT_DAYS days
# if Sent directories found
if [ -n "${PATH_SENT}" ]; then
   for each in "${PATH_SENT}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${SENT_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi

# Delete Drafts older than $DRAFTS_DAYS days
# if Drafts directories found
if [ -n "${PATH_DRAFTS}" ]; then
   for each in "${PATH_DRAFTS}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${DRAFTS_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi

# Learn and Delete Spam older than $SPAM_DAYS
# days if Spam directories found
if [ -n "${PATH_SPAM}" ]; then
   for each in "${PATH_SPAM}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${SPAM_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                 sudo -u vpopmail -H sa-learn --spam ${file}  >/dev/null 2>&1
                 rm -f ${file}  >/dev/null 2>&1
              fi
          done
       fi
   done
fi

# Delete Emails older than $EMAIL_DAYS days
# if EMAIL directories found
if [ -n "${PATH_EMAIL}" ]; then
   for each in "${PATH_EMAIL}" ; do
       FILES_TO_DELETE="`find ${each} -type f -ctime +${EMAIL_DAYS}`"
       if [ -n "${FILES_TO_DELETE}" ]; then
          for file in ${FILES_TO_DELETE} ; do
              if [ -n ${file} ]; then
                rm -f ${file}  >/dev/null 2>&1
             fi
         done
      fi
  done
fi

exit 0
# EOF

Or if you just want to maintain Spam folder you can run

# qtp-clean-spam

from QTP tools