I made a little perl script for check maildir folder for all users. it
say how many users have maildir folder broken (ex: .toto.tata folder
without a .toto folder).
At work, i have 56 users account, and 7 with broken maildir :( .
Even if tomorrow courrier-imap is perfect, a hard shutdown can break a
maildir folder. I need something which repair maildir folders
automatically:
i have 2 solutions:
-script in rc.local and cron, which check and repair every 5 minutes
maildir folders.
-courrier-imap check and repair on every LIST "" "INBOX.%"
tell me plz if i am totaly wrong ? if my second solution is stupid ? or
if i should read x100 rfc2060 ? :)
seb
-----------
#! /usr/bin/perl
$num_maildir=0; $num_badmaildir=0;
$homedir="/home";
chdir $homedir; opendir DIR, ".";
@dirlist =grep -d , readdir DIR;
@dirlist =grep !/^\.\.?$/, @dirlist;
closedir DIR;
foreach $dir (@dirlist)
{
print "$dir : ";
if (-e "$homedir/$dir/Maildir/cur" && -e "$homedir/$dir/Maildir/new" &&
-e "$homedir/$dir/Maildir/tmp")
{
print "Maildir found "; $num_maildir++;
$userdir="$homedir/$dir/Maildir/";
chdir $userdir; opendir DIR2, ".";
@dir2list =grep -d , readdir DIR2;
@dir2list =grep !/^\.\.?$/, @dir2list;
@dir2list =grep /^\./, @dir2list;
@dir2list=sort @dir2list;
closedir DIR2;
$break=0;
foreach $dd3 (@dir2list)
{
$dd=$dd3;
if ($dd =~ /^\..*\./)
{
(@tt1)=split('\.',$dd);pop(@tt1);$dd=join '.', @tt1;
$bad=1;
foreach $dd2 (@dir2list) { if ($dd2 eq $dd) {$bad=0;} }
if ($bad==1) {$break=1;print "($dd3)";}
}
}
print "\n";
chdir $homedir;
if ($break==1) {$num_badmaildir++;}
}
else {print "no maildir\n";}
}
print "\nTotal maildir : $num_maildir\nBroken maildir : $num_badmaildir\n";