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]
