Strumenti Utente

Strumenti Sito


documentazione_3di_riservata:manuali_sysadmin:mail

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
documentazione_3di_riservata:manuali_sysadmin:mail [2016/01/05 10:10] aalberghinidocumentazione_3di_riservata:manuali_sysadmin:mail [Data sconosciuta] (versione attuale) – eliminata - modifica esterna (Data sconosciuta) 127.0.0.1
Linea 1: Linea 1:
-====== Gestione servizi di posta ====== 
- 
-===== Mail interna ===== 
- 
-===== Mail esterna ===== 
- 
-====== Procedure automatizzate ====== 
- 
-===== Conversione maildir posftfix in file mbox (no struttura subdir) ===== 
- 
-Dalla [[http://wiki.dovecot.org/Migration/MailFormat#Converting_from_Maildir_to_mbox | wiki di Dovecot]] si è estratto e riadattato uno script perl per convertire in mbox anche le maildir prodotte da postfix mediante il programma [[http://linux.die.net/man/1/formail | formail]] (già presente nella suite di postfix). 
- 
-Si riporta il codice utilizzato per la conversione. Lo script necessita del pacchetto **Path::Iterator::Rule** (presente anche su [[http://www.cpan.org/ | CPAN]]) per funzionare. Nel caso la propria distro non lo preveda tra i suoi pacchetti, è possibile installarlo mediante il comando: 
- 
-  cpan -i Path::Iterator::Rule 
- 
-<code perl 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])) { 
-    next unless stat("$dir/cur") || stat("$dir/new"); 
-    print "Going into ",  $dir, "\n"; 
-    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); 
- 
-</code> 
- 
-===== Conversione maildir posftfix in file mbox (con struttura subdir) ===== 
- 
-Frugando nel web, è venuto fuori [[https://gist.github.com/nyergler/1709069 | uno script in python]] che permette la conversione da maildir a mbox mantenendo la struttura delle sottocartelle. 
- 
-Il codice dello script è riportato nel seguito. Si è dovuto modificare l'interprete Python nel hashbang, poiché sul vecchio server di posta l'interprete di default era python3. 
- 
-<WRAP center round info> 
-**NB**: lo script funziona solo se lanciato da dentro la maildir che si intende convertire. È quindi necessario specificare come percorso per la maildir il path attuale, ovvero '.'. 
-</WRAP> 
- 
- 
-<code python maildir2mbox.py> 
-#!/usr/bin/python2 
-# -*- coding: utf-8 -*- 
-""" 
-Frédéric Grosshans, 19 January 2012 
-Nathan R. Yergler, 6 June 2010 
- 
-This file does not contain sufficient creative expression to invoke 
-assertion of copyright. No warranty is expressed or implied; use at 
-your own risk. 
- 
---- 
- 
-Uses Python's included mailbox library to convert mail archives from 
-maildir [http://en.wikipedia.org/wiki/Maildir] to 
-mbox [http://en.wikipedia.org/wiki/Mbox] format, icluding subfolder. 
- 
-See http://docs.python.org/library/mailbox.html#mailbox.Mailbox for 
-full documentation on this library. 
- 
---- 
- 
-To run, save as md2mb.py and run: 
- 
-$ python md2mb.py [maildir_path] [mbox_filename] 
- 
-[maildir_path] should be the the path to the actual maildir (containing new, 
-cur, tmp, and the subfolders, which are hidden directories with names like 
-.subfolde.subsubfolder.subsubsbfolder); 
- 
-[mbox_filename] will be newly created, as well as a [mbox_filename].sbd the 
-directory. 
-""" 
- 
-import mailbox 
-import sys 
-import email 
-import os 
- 
-def maildir2mailbox(maildirname, mboxfilename): 
-   """ 
-   slightly adapted from maildir2mbox.py, 
-   Nathan R. Yergler, 6 June 2010 
-   http://yergler.net/blog/2010/06/06/batteries-included-or-maildir-to-mbox-again/ 
- 
- 
-   """ 
-   # open the existing maildir and the target mbox file 
-   maildir = mailbox.Maildir(maildirname, email.message_from_file) 
-   mbox = mailbox.mbox(mboxfilename) 
- 
-   # lock the mbox 
-   mbox.lock() 
- 
-   # iterate over messages in the maildir and add to the mbox 
-   for msg in maildir: 
-       mbox.add(msg) 
- 
-   # close and unlock 
-   mbox.close() 
-   maildir.close() 
- 
- 
-dirname=sys.argv[-2] 
-mboxname=sys.argv[-1] 
-print(dirname +' -> ' +mboxname) 
-mboxdirname=mboxname+'.sbd' 
-maildir2mailbox(dirname,mboxname) 
-if not os.path.exists(mboxdirname): os.makedirs(mboxdirname) 
- 
-listofdirs=[dn for dn in os.walk(dirname).next()[1] if dn not in ['new', 'cur', 'tmp']] 
-#print(listofdirs) 
-for curfold in listofdirs: 
-   if os.path.exists(os.path.join(curfold,'new')): 
-        curlist=[mboxname]+curfold.split('.') 
-        curpath=os.path.join(*[dn+'.sbd' for dn in curlist if dn]) 
-        if not os.path.exists(curpath): os.makedirs(curpath) 
-        print('| ' +curfold +' -> '+curpath[:-4]) 
-        maildir2mailbox(os.path.join(dirname,curfold),curpath[:-4]) 
- 
- 
-print('Done') 
-</code> 
- 
- 
-===== Backup di tutte le cartelle di posta ===== 
- 
-In concomitanza agli script sopra riportati, sono stato realizzati altri script bash per effettuare il backup automatizzato di tutte le maildir degli utenti. 
-Il primo script esegue le seguenti operazioni per ogni maildir: 
-  - compressione in 7z di tutta la maildir così com'è 
-  - conversione in mbox di tutte le cartelle contenute nella maildir e successiva compressione in 7z 
-  - salvataggio degli archivi compressi su \\storage\UTSHARE\nomeUtente 
- 
-Di seguito il codice dello script. 
-<code bash backupMaildirs.sh> 
-#!/bin/bash 
- 
-MAILDIR_ROOT=/var/vmail/3di.it 
-OUTPUT_ROOT=/mnt/UTSHARE 
-OUTPUT_GROUP=5106 
-MAILDIRS=(aalberghini abarducci afistani bcerr commerciale dcwerr dpranteda eluconi fcappelli ganastasi gmgelli helpdesk helpdesk-area itarlassi lpalumbo lsopko mb-archivio mb-proto mbelluomini mbernardini mbrugnetti mciullo mgelli mpascale mstancikova ncandelora opera-assistenza pgramaccioni ppala rtirabassi scavinato sesar siammtest spassarotto sstagni sviluppo test-archiviatore tickets vcapoccia) 
- 
-set -e 
- 
-cd "$MAILDIR_ROOT" 
-for USER in ${MAILDIRS[@]} 
-do 
-        echo "Processing $USER maildir" 
-        TEMPDIR=$(mktemp -d) 
-        if [ ! -d "$OUTPUT_ROOT/$USER" ] 
-        then 
-                echo "Creating output folder" 
-                install -d  -m700 -g "$OUTPUT_GROUP" -o "$USER" "$OUTPUT_ROOT/$USER" 
-        fi 
-        echo "Creating maildir archive: 7z a -mx=9 -m0=LZMA2 $OUTPUT_ROOT/$USER/${USER}_maildir.7z" 
-        7z a -mx=9 -m0=LZMA2 "$OUTPUT_ROOT/$USER/${USER}_maildir.7z" "$USER" 
-        echo "Creating mbox archives: /root/bin/dw-maildir2mbox_recur.pl $USER $TEMPDIR/${USER}.mbox" 
-        /root/bin/dw-maildir2mbox_recur.pl "$USER" "$TEMPDIR/${USER}.mbox" 
-        ( cd "$TEMPDIR" && 7z a -mx=9 -m0=LZMA2 "$OUTPUT_ROOT/$USER/${USER}_mbox.7z" *.mbox ) 
-        rm -rf "$TEMPDIR" 
-        chown $USER:$OUTPUT_GROUP "$OUTPUT_ROOT/$USER/${USER}"_{maildir,mbox}.7z 
-done 
-</code> 
- 
-Il secondo script provvede ad utilizzare lo script Python riportato in precedenza per esportare anche la struttura di cartelle in formato mbox: 
- 
-<code bash backupMaildirs_struct.sh> 
-#!/bin/bash 
- 
-MAILDIR_ROOT=/var/vmail/3di.it 
-OUTPUT_ROOT=/mnt/UTSHARE 
-OUTPUT_GROUP=5106 
-MAILDIRS=(aalberghini abarducci afistani bcerr commerciale dcwerr dpranteda eluconi fcappelli ganastasi gmgelli helpdesk helpdesk-area itarlassi lpalumbo lsopko mb-archivio mb-proto mbelluomini mbernardini mbrugnetti mciullo mgelli mpascale mstancikova ncandelora opera-assistenza pgramaccioni ppala rtirabassi scavinato sesar siammtest spassarotto sstagni sviluppo test-archiviatore tickets vcapoccia) 
-TMPDIR=/var/vmail/tmp 
- 
-set -e 
- 
-cd "$MAILDIR_ROOT" 
-for USER in ${MAILDIRS[@]} 
-do 
-        echo "Processing $USER maildir" 
-        TEMPDIR=$(mktemp -p "$TMPDIR" -d) 
-        if [ ! -d "$OUTPUT_ROOT/$USER" ] 
-        then 
-                echo "Creating output folder" 
-                install -d  -m700 -g "$OUTPUT_GROUP" -o "$USER" "$OUTPUT_ROOT/$USER" 
-        fi 
-        echo "Entering $USER directory" 
-        cd "$USER" 
-        echo "Creating mbox structured archive: /root/bin/maildir2mbox.py . $TEMPDIR/INBOX" 
-        /root/bin/maildir2mbox.py . "$TEMPDIR/INBOX" 
-        echo "Exiting $USER directory" 
-        cd .. 
-        ( cd "$TEMPDIR" && 7z a -mx=9 -m0=LZMA2 "$OUTPUT_ROOT/$USER/${USER}_mbox_dirs.7z" * ) 
-        rm -rf "$TEMPDIR" 
-        chown $USER:$OUTPUT_GROUP "$OUTPUT_ROOT/$USER/${USER}"_mbox_dirs.7z 
-done 
-</code> 
- 
- 
- 
  
/data/attic/documentazione_3di_riservata/manuali_sysadmin/mail.1451985045.txt.gz · Ultima modifica: 2017/09/08 10:59 (modifica esterna)