documentazione_3di_riservata:manuali_sysadmin:mail
Questa è una vecchia versione del documento!
Indice
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)