Lors d'un précédent article je parlais de Mutt, un client de messagerie. Pour pouvoir l'utiliser, il me manquait une fonctionnalité pouvoir consulter tous mes anciens courriers lorsque je suis sans connexion.

Si Mutt n'a pas cette fonctionnalité, on peut l'obtenir de manière presque transparente grâce à Offlineimap. Ce logiciel s'occupe de synchroniser votre ou vos boites mails distantes dans un répertoire de votre ordinateur et Mutt lira vos courriers sur ce répertoire plutôt que sur la boite distante.

Pour l'installation :

aptitude install offlineimap

Ensuite il faut le configurer en éditant le fichier ".offlineimaprc" dans votre répertoire personnel :

[general]
accounts = Perso, Pro
[Account Perso]
localrepository = PersoLocal
remoterepository = PersoDistant
status_backend = sqlite
[Repository PersoDistant]
type = IMAP
remotehost = adressePerso.net
remoteuser = IdentifiantPerso
remotepass = MotDePassePerso
ssl = yes
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
[Repository PersoLocal]
type = Maildir
localfolders = ~/Maildir/Perso
restoreatime = no
[Account Pro]
localrepository = ProLocal
remoterepository = ProDistant
status_backend = sqlite
[Repository ProDistant]
type = IMAP
remotehost = adressePro.net
remoteuser = IdentifiantPro
remotepass = MotDePassePro
ssl = yes
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
[Repository ProLocal]
type = Maildir
localfolders = ~/Maildir/Pro
restoreatime = no

Comme vous l'aurez compris, offlineimap va synchroniser mes boites distantes personnelle et professionnelle dans le répertoire Maildir. Si vous lancez la commande "offlineimap", la synchronisation débute, la première fois pourra être très longue suivant le nombre de courriers à récupérer.

Pour automatiser la procédure on écrit un petit script (que j'ai appelé sync.sh pour ne pas être original) :

#!/bin/bash
imapactive=$(ps -ef | grep offlineimap | grep -v grep | wc -l)
# Tuer offlineimap s'il est actif (car il a planté)
case $imapactive in
        '1')
                killall offlineimap && sleep 5
                ;;
esac
/usr/bin/offlineimap -u quiet

Et on ajoute une règle à la con cron :

crontab -e

Ajouter la ligne suivante :

*/10 * * * * ~/sync.sh

Ainsi la synchronisation aura lieu toutes les dix minutes. Il ne reste plus qu'à configurer Mutt pour qu'il lise les courriers dans le répertoire Maildir, pour cela retirer la configuration imap de ".muttrc" pour la remplacer par:

# Mutt doit utiliser le fomat Maildir
set mbox_type=Maildir
# On configure les répertoires communs
set spoolfile="~/Maildir/Perso/INBOX"
set folder="~/Maildir"
folder-hook Perso set record="+Perso/Sent"
folder-hook Pro set record="+Pro/Sent"
folder-hook Perso set postponed="+Perso/Drafts"
folder-hook Pro set postponed="+Pro/Drafts"
set tmpdir    = ~/tmp
# On initialise les boites en balayant les répertoires de ~/Maildir:
mailboxes `find ~/Maildir/ -type d -name cur -printf '%h '`

Et voilà, vos mails sont relevés toutes les dix minutes et sauvegardés en local, Mutt aura toujours accès à vos mails avec au pire un décalage de dix minutes.