Archivemail : Différence entre versions
De wikiGite
Ligne 13 : | Ligne 13 : | ||
MAILDIR=$HOME/Maildir | MAILDIR=$HOME/Maildir | ||
BACKUP=$HOME/archivemails | BACKUP=$HOME/archivemails | ||
− | LOG=/opt/ | + | LOG=/opt/tools/log |
LOGFILE=$BACKUP/archivemail.log | LOGFILE=$BACKUP/archivemail.log | ||
BACKUPDIR=$BACKUP/arch$(date +%d%m%y) | BACKUPDIR=$BACKUP/arch$(date +%d%m%y) | ||
Ligne 54 : | Ligne 54 : | ||
echo "Fin de traitement : $(date)">> $LOGFILE | echo "Fin de traitement : $(date)">> $LOGFILE | ||
Planifier ensuite par utilisateur dans /etc/cron.d/archivemail-<nom_utilisateur> : | Planifier ensuite par utilisateur dans /etc/cron.d/archivemail-<nom_utilisateur> : | ||
− | * * * * 0 | + | * * * * 0 user1 /opt/tools/archivemail.sh 360 |
Pour lire les mails archiver, utiliser mutt en ligne de commande : | Pour lire les mails archiver, utiliser mutt en ligne de commande : | ||
mutt -f [path_to_archive_file.gz] | mutt -f [path_to_archive_file.gz] |
Version du 18 mars 2009 à 19:02
Archive les mails au format mailbox ou maildir.
Install :
apt-get install archivemail
Script à mettre dans un répertoire accessible aux utilisateurs :
#!/bin/bash # Archivemail backup mbox or Maildir to mbox gzipped files. # To read/search a backuped mail, use mutt -f [path_to_archive_file.gz]. # Then forward it with mutt to a valid email address. # The variable BACKUPDIR gives the path of backuped files. MAILDIR=$HOME/Maildir BACKUP=$HOME/archivemails LOG=/opt/tools/log LOGFILE=$BACKUP/archivemail.log BACKUPDIR=$BACKUP/arch$(date +%d%m%y) echo $(date) >> $LOGFILE # $1 is the retention policy. If not set, the default of archimail is 180 days. if [ ! -z $1 ] then RP="-d $1" fi # Archivemail don't work on symbolic links. Retreive real directory path. if [ -h $MAILDIR ] then MAILDIR=$(ls -l /var/www/web7/Maildir | awk 'BEGIN{FS="-> "}{print $2}') fi if [ ! -d $BACKUPDIR ] then mkdir -p $BACKUPDIR if [ $? -ne 0 ] then echo "Creation repertoire $BACKUPDIR impossible !" >> $LOGFILE exit 1 fi fi # "For" doesn't handle directory names with space. Use "while" loop. find $MAILDIR -type d | (while read mfile do if [ "$(echo $mfile | grep -i spam)" != "" -o "$(echo $mfile | grep -i junk)" != "" ] then # If spams, we force delete instead of archive archivemail -d 60 --delete "$mfile" >> $LOGFILE 2>&1 else archivemail $RP -o $BACKUPDIR "$mfile" >> $LOGFILE 2>&1 fi done) echo "Fin de traitement : $(date)">> $LOGFILE
Planifier ensuite par utilisateur dans /etc/cron.d/archivemail-<nom_utilisateur> :
* * * * 0 user1 /opt/tools/archivemail.sh 360
Pour lire les mails archiver, utiliser mutt en ligne de commande :
mutt -f [path_to_archive_file.gz]