The trick will be to find the from and subject and/or the date..
Dom
#!/usr/bin/perl
use Mail::IMAPTalk;
$IMAP = Mail::IMAPTalk->new(
Server => 'localhost',
Username => 'cyrus',
Password => 'xxx',
Uid => 1 )
|| die "Failed to connect/login to IMAP server";
#http://linuxfr.org/forums/27/21722.html
$IMAP->set_root_folder('inbox', '/', 1, 'user');
@folder=$IMAP->list("user.%",'*');
foreach $bals (@folder){
$tot=0;
$msgnb=0;
foreach $bal (@$bals){
if ($bal=~/user\//){
#$IMAP->examine($_);
#$count=$IMAP->message_count($_);
$IMAP->select($bal) || warn "cant access $bal: $@";
$ResSearch = $IMAP->search('1:*', 'FROM', 'xxx'); # find the good search to do
$Res = $IMAP->fetch($Res, '(rfc822.size envelope)') || die "cant access $bal: $@";
foreach $id (keys %$Res){
$size=$Res->{$id}->{'rfc822.size'};
$subject=$Res->{$id}->{'envelope'}->{'Subject'};
print "id=$id size=$size sub=$subject\n";
}
$IMAP->store($ResSearch, '+flags', '(\\deleted)');
$lasterr=$IMAP->get_last_error();
if (defined $lasterr){
next if ($lasterr=~/No fetch data/);
warn " $bal: $@";
next;
}
}
}
}
$IMAP->logout();
2009/5/11 Gerald Nowitzky <whl@xxxxxxx>
Hello!
I have been confronted with a request today: We are running cyrus as imap
server. We have currently about 3 million files and 150GB in our mail dir.
One user has accidently sent something confidential to all users via a list.
The request was, of course, to delete the mail from all mailboxes. Is there
any reasonable approach to do something like this?
Thanks!
(Gerald)
----
Cyrus Home Page: http://cyrusimap.web.cmu.edu/
Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
--
Dominique LALOT
Ingénieur Systèmes et Réseaux
http://annuaire.univmed.fr/showuser.php?uid=lalot
---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html