[Mailman-Users] Re: Rotating mailman mbox archives

Paul Williams paul.williams at uwex.edu
Wed Nov 3 16:34:53 CET 2004


I couple of weeks ago I asked how people were
dealing with disk storage with mailman archives.

I didn't receive an email that I could use.  In the end
we used a similar method that we were using with listproc.

If anyone is interested, I have indicated the method
in the following description.  Someone may find it useful.

We elected to rotate the mbox archives monthly and keep
6 versions and also save them in gzip format to conserve space.
We do this via a crontab entry as follows

0 0 1 * *  /bin/su - mailman -c '/usr/local/etc/mailman/cycle-mbox-gz | \
           mail -s "mailman mboxes cycled `date`" mailman' \
                1>/dev/null 2>/dev/null

The cycle-mbox-gz file is as follows (I don't know who
wrote the rotate() script)

#!/bin/sh
#
# Shell script which cycles your 
~mailman/archives/private/LIST-NAME.mbox/LIST-NAME.mbox.x.gz files
# then copies the latest mbox to mbox.o and gzips it.
# It retains 6 units (a unit can be a day, week, month ...)
# It should be run out of the mailman's account (server) cron entry.
# as in /bin/su - mailman -c '/usr/local/etc/mailman/cycle-mbox-gz'

# Change log
# paulw  10-25-04       Changed so it rotates mailman mailboxes

MAILMAN=~mailman
MM_ARCHIVE_DIR=$MAILMAN/archives/private


rotate() {
         file="$1"; shift
         rm -f "$file.$1.gz"
         for i in "$@"; do
                 [ "$i" = "0" ] && j="" || j=".`expr $i - 1`"
                 [ -f "$file$j.gz" ] && mv -f "$file$j.gz" "$file.$i.gz"
         done
         if [[ -s $file ]]; then
           cp $file $file.0 ; chmod 664 $file.0
           gzip $file.0
           cp /dev/null "$file"
         fi
}

#
# Find and cycle the mboxes ...
#
#for FILE in "test2"
for FILE in `$MAILMAN/bin/list_lists -b`
    do
         rotate $MM_ARCHIVE_DIR/$FILE.mbox/$FILE.mbox 5 4 3 2 1 0
         #echo $MM_ARCHIVE_DIR/$FILE.mbox/$FILE.mbox
    done



It seems to work as long as you don't need to run the
~mailman/bin/arch command and regenerate the indexes.

paulw




More information about the Mailman-Users mailing list