Trash under home mail folder
Steve Buehler
steve at ibapp.com
Sun Mar 6 01:52:48 UTC 2005
At 06:19 PM 3/4/2005, you wrote:
>Hi,
>
>Anyone can advice how i can clear all the user's trash at once?
>lets say users send there junk and unwanted e-mails to trash and they
>forget to delete it so in the under each user mail home directory there is
>trash , how to delete all at once??
Couple of ways. If everybody is in /home/accountname for their accounts,
you could probably just do a:
rm -f /home/*/Trash
Change "Trash" to the name of their trash box....which could be "INBOX.Trash"
or there is a program called archivemail you can get at:
http://archivemail.sourceforge.net/
Read the directions and make sure that the first time you run it, you use
the "--dry-run" option. That will show you how many emails would have been
deleted, without deleting them.
For what you are doing, you could just do:
archivemail --dry-run -d 1 --delete /home/*/Trash
I have a little script that I run in my /etc/cron.daily to do this for me,
except it lets them keep email for up to 6 months (183 days) in any of
their mailboxes. I have added a few extra comments for you.
-----start of script /etc/cron.daily/00cleanmailboxes-----
#!/bin/bash
# The "result" below is getting a list of all mailboxes
# (basically accounts on the system that has received email in the past)
result=(`/bin/ls -1 /var/spool/mail`)
# Now, run through a loop to clean of those mailboxes
for e in "${result[@]}"; do
# put an "-n", or "--dry-run" in the archivemail command for testing
# From the man pages for the "-n" or "--dry-run" options:
# (next 3 comment lines)
# Don't write to any files -- just show what would have been done.
# This is useful for testing to see how many messages would have
# been archived.
# The next line deletes any mail in those mailboxes older than 183 days old
/usr/bin/archivemail -d 183 --delete /var/spool/mail/$e
# If you only want to delete what they have in their imap Trash mailbox,
# than comment out the above line and all lines below this line but
# "NOT" the "done" line and uncomment the following line
# /usr/bin/archivemail -d 183 --delete "/home/$e/Trash"
# For those users that use imap programs like Squirrelmail, this will run
through
# their mailboxes in their home directories and delete those after 183 days
too.
if [ -r "/home/$e/.mailboxlist" ]
then
exec 6< /home/$e/.mailboxlist
while read -u 6 dta
do
/usr/bin/archivemail -d 183 --delete "/home/$e/$dta"
done
fi
exec 6<&-
done
-----start of script /etc/cron.daily/00cleanmailboxes-----
The "archivemail" program was a blessing for me because one of our servers
has over 15,000 email accounts on it and this just makes it so much
easier. The program will also backup emails older than # days and a few
other things. It is worth a million bucks, but is free
Hope this helps.
Steve
More information about the redhat-list
mailing list