#!/usr/bin/perl # small script to fix mailboxes imported from Outlook into Mozilla. # basically, it adds an X-Mozilla-Status line to each message in the mailbox # in order to avoid that the message appears as unread each time the index # of the mailbox gets re-generated. # Synopsis: find . -type f -a ! -name \*.msf -exec fixoutlookmbox {} \; # (in the imported mailbox directory of Mozilla) my $mbox = $ARGV[0]; my $mboxtmp = $mbox . "._tmp_"; open(MBOX,"<$mbox") or die "Can't open mailbox '$mbox': $!"; open(MBOXTMP,">$mboxtmp") or die "Can't open mailbox '$mboxtmp': $!"; my $fromline = ''; my $header = ''; my $modified = 0; while () { if (/^From .* (Mon|Tue|Wed|Thu|Fri|Sat|Sun)/) { $fromline = $_; $header = ''; print MBOXTMP $fromline; } elsif ($fromline and not /^\s*$/) { $header .= $_; } elsif ($fromline and /^\s*$/) { if ($header !~ /X-Mozilla-Status:/) { $header .= "X-Mozilla-Status: 1001\n"; $modified = 1; } print MBOXTMP $header; $fromline = ''; print MBOXTMP $_; } else { print MBOXTMP $_; } } close(MBOX); close(MBOXTMP); if ($modified) { print "Moving '$mboxtmp' to '$mbox'.\n"; use File::Copy; move $mboxtmp,$mbox; unlink "$mbox.msf"; # removing Mozilla index file } else { print "No changes to '$mbox', removing '$mboxtmp'.\n"; unlink $mboxtmp; }