#!/usr/bin/perl
# Created by Jimmy O'Regan

## This script was intended by its author to be called "admreqrm-2.pl",
## but for some reason Apache httpd refuses to offer the public access
## to any file of that name.
##
## Script to automate the deletion of spam from Mailman's admin queue,
## via screen-scraping and filling in of the required fields on the 
## administrative Web forms.  Requires a reasonable Perl installation 
## and the WWW::Mechanize module from CPAN.  WARNING:  This script will
## delete ALL of a specified Mailman mailing list's current held mail,
## so you'll want to clear any exceptions manually before running it.
##
## Discussion that produced this script can be read here:
## http://linuxgazette.net/110/tag/8.html

use warnings;
use strict;
use WWW::Mechanize;

##### User-configurable variables #######################
my $password = 'PASSWORD';
my $url = 'URL';

# Set to non-zero to generate a troubleshooting log
my $debug = 0;
##### Past this point, There Be Dragons... ##############

my ( $mech, $content, %name ) = WWW::Mechanize -> new();
$mech -> get( $url );
$mech -> submit_form( fields => { adminpw => $password } );
$content = $mech -> content();

die "\u$&.\n" if $content =~ /no pending requests/;

for ( grep /^senderaction-/, split /[ \n"']/, $content ){
	unless ( exists $name{ $_ } ){
		print "Deleting $_\n";
		$name{ $_ } = 3;
	}
}

$mech -> submit_form( fields => \%name );

if ( $debug ){
	use Data::Dumper;
	open Fh, ">admreqrm.log" or die "Can't open log  $!\n";
	print Fh Dumper( %{ $mech->response() } );
}
