On 02/07/2014 09:33 AM, Alain Williams wrote:
>>
>> The script is attached and I am happy for this to become part of mailman or 
>> put
>> into an associated library.
>>
>> You need to run it in the list's archive directory.
> 
> Drat, this list does not allow attachments, so here it is in line:


Actually, it does but only of MIME type text/plain or text/x-diff.

I have attached a revision. Changes include:

- It only needs read access to Mailman's archives.

- It can run from anywhere.

Granted the total-message-size is a bit off because it includes the
various index files, but it's close in most cases, and since it includes
all the html boiler plate, it isn't that accurate to begin with.

I can add this to the contrib directory in the distribution.

-- 
Mark Sapiro <[email protected]>        The highway is for gamblers,
San Francisco Bay Area, California    better use your sense - B. Dylan

# Show how much email sent through a mailman mail list
# Copyright (c) Alain Williams <[email protected]> January 2009
# This program is free software and is licenced under the GPL: 
http://www.gnu.org/copyleft/gpl.html

# Usage: /path/to/script LISTNAME
# Note: this only works if the list's archive_volume_frequency is monthly.
# Also, the total message size for the month includes the index files.

# Set the path to Mailman's private archives directory.
# Adjust for your installation.
ARCHIVES="/usr/local/mailman/archives/private"

# cd to the list
cd $ARCHIVES/$1 || exit

echo "Columns: month number-of-messages total-message-size"
Months="January February March April May June July August September October 
November December"
FilesTot=0

# Work out starting year, look for something like: 2004-December
startYear=$( ls | perl -wlne '$year = $1 if(/^(\d\d\d\d)-/ and ( 
!defined($year) or $1 < $year)); END {print $year }' )
endYear=$( date '+%Y' )

for year in $( seq $startYear $endYear  )
do      echo "Year $year"
        YearTot=0
        for month in $Months
        do
                [[ ! -d $year-$month ]] && printf "$year $month\tnone\n" && 
continue
                cd $year-$month || exit
                files=$( ls -f [0-9]* | wc -l )
                (( FilesTot += files ))
                ((  YearTot += files ))
                printf "$year $month\t$files\t$( du -h | cut -f 1 )\n"
                cd .. || exit
        done
        echo "Total for year $year: $YearTot"
done
echo "Emails total $FilesTot"

------------------------------------------------------
Mailman-Users mailing list [email protected]
https://mail.python.org/mailman/listinfo/mailman-users
Mailman FAQ: http://wiki.list.org/x/AgA3
Security Policy: http://wiki.list.org/x/QIA9
Searchable Archives: http://www.mail-archive.com/mailman-users%40python.org/
Unsubscribe: 
https://mail.python.org/mailman/options/mailman-users/archive%40jab.org

Reply via email to