Strumenti Utente

Strumenti Sito


documentazione_3di_riservata:manuali_sysadmin:mail

Questa è una vecchia versione del documento!


Gestione servizi di posta

Mail interna

Mail esterna

Procedure automatizzate

Conversione maildir posftfix in file mbox

maildir2mbox.pl
#!/usr/bin/perl
 
use Path::Iterator::Rule;
use Cwd;
use File::Basename;
use File::Spec;
 
use warnings;
 
sub recurse_maildir {
  my $rule = Path::Iterator::Rule->new;
 
  $rule->directory;
  $rule->skip_subdirs ("cur","new","tmp");
 
  foreach my $dir ( $rule->all($_[0])) {
    print "Going into ",  $dir, "\n";
    next unless stat("$dir/cur") || stat("$dir/new");
    my $pwd = getcwd;
    chdir ($dir);
    if ($dir eq $parentDir ) {
      $dir = "INBOX";
    }                                                                                                                                                                                                 
    my $cleanDir = basename($dir);                                                                                                                                                                    
    if ($cleanDir =~ m/^\.(.*)/ ) {                                                                                                                                                                   
       $cleanDir = $1;                                                                                                                                                                                
    }                                                                                                                                                                                                 
    my $finalOutputFile = File::Spec->catfile (dirname ($outputfile),$cleanDir . "_" .  basename ($outputfile));                                                                                      
    print "Saving all mails to $finalOutputFile)\n";
    my @files = (<cur/*>,<new/*>);
    foreach my $file (@files) {
       next unless -f $file; # skip non-regular files
       next unless -s $file; # skip empty files
       next unless -r $file; # skip unreadable files
       $file =~ s/'/'"'"'/;  # escape ' (single quote)
       my $run = "cat '$file' | $cmd >>'$finalOutputFile'";
       system($run) == 0 or warn "cannot run \"$run\".";
    }
    chdir ($pwd);
  }
 
}
 
# dw-maildirtombox.pl
# dw = Dovecot Wiki :-)
# NOTE! The output file must not contain single quotes (')!
# figure out which program to run
$cmd="reformail -f1";
system("$cmd </dev/null >/dev/null 2>/dev/null") == 0 or $cmd="formail";
system("$cmd </dev/null >/dev/null 2>/dev/null") == 0
or die "cannot find reformail or formail on your \$PATH!\nAborting";
$parentDir=$ARGV[0];
$outputfile=$ARGV[1];
if (($outputfile eq '') || ($parentDir eq ''))
{ die "Usage: ./archivemail.pl mailbox outputfile\nAborting"; }
 
recurse_maildir ($parentDir);
/data/attic/documentazione_3di_riservata/manuali_sysadmin/mail.1451563310.txt.gz · Ultima modifica: 2017/09/08 10:59 (modifica esterna)