Browse Source

changed maint script to be run only for a specific user

feature/startup-from-labels
Mario Alegre 5 years ago
parent
commit
11c70bdfae
  1. 76
      src/mailsrv/assets/bin/maint

76
src/mailsrv/assets/bin/maint

@ -1,40 +1,46 @@
#!/bin/bash
cd /vol/mail
if [[ -z $1 ]]; then
echo "Usage: $(basename $0) user"
exit 1
else
user=$1
fi
for user in *; do
# create an archive mailbox (and throw away error because
# we don't mind if it already exists)
doveadm mailbox create -u $user -s Archive 2> /dev/null
# assume no messages in INBOX are older than this year
year=2000
while [[ $year -le $currentyear ]]; do
# create an Archive/$year mailbox
doveadm mailbox create -u $user -s Archive.$year 2> /dev/null
# Get list of all subdirs of INBOX
mailboxes=$(doveadm mailbox list -u $user | grep -E '^INBOX\..*$' \
| perl -pe 'chomp if eof' | perl -pe 's/^/MAILBOX /' \
| perl -pe 's/\n/ OR /')
# add Sent and INBOX to our mailboxes list
mailboxes="MAILBOX Sent OR MAILBOX INBOX ${mailboxes:+OR} $mailboxes"
# move to the Archive/$year mailbox messages that:
# have been flagged as read,
# were received on or before $year,
# are older than 90 days,
# and are in our aforementioned mailboxes
doveadm move -u $user Archive.$year SEEN BEFORE 1-Jan-$(($year+1)) \
BEFORE 90d \( $mailboxes \)
# delete Archive/$year mailbox if it is empty
doveadm mailbox delete -u $user -e Archive.$year 2> /dev/null
# step year variable
year=$(($year+1))
done
# delete messages from Trash that have been there for more than 2 weeks
doveadm expunge -u $user SAVEDBEFORE 2w MAILBOX Trash
cd /vol/mail
# create an archive mailbox (and throw away error because
# we don't mind if it already exists)
doveadm mailbox create -u "$user" -s Archive 2> /dev/null
# assume no messages in INBOX are older than this year
year=2000
currentyear=$(date +%Y)
while [[ $year -le $currentyear ]]; do
# create an Archive/$year mailbox
doveadm mailbox create -u $user -s Archive.$year 2> /dev/null
# Get list of all subdirs of INBOX
mailboxes=$(doveadm mailbox list -u $user | grep -E '^INBOX\..*$' \
| perl -pe 'chomp if eof' | perl -pe 's/^/MAILBOX /' \
| perl -pe 's/\n/ OR /')
# add Sent and INBOX to our mailboxes list
mailboxes="MAILBOX Sent OR MAILBOX INBOX ${mailboxes:+OR} $mailboxes"
# move to the Archive/$year mailbox messages that:
# have been flagged as read,
# were received on or before $year,
# are older than 90 days,
# and are in our aforementioned mailboxes
doveadm move -u $user Archive.$year SEEN BEFORE 1-Jan-$(($year+1)) \
BEFORE 90d \( $mailboxes \)
# delete Archive/$year mailbox if it is empty
doveadm mailbox delete -u $user -e Archive.$year 2> /dev/null
# increment year variable
year=$(($year+1))
done
# delete messages from Trash that have been there for more than 2 weeks
doveadm expunge -u $user SAVEDBEFORE 2w MAILBOX Trash

Loading…
Cancel
Save