Chapitre 2. Le mail en console (suite)

Table des matières
1. Archiver ses mails
1.1. Le principe
1.2. La mise en oeuvre
2. Synchroniser ses mails entre un serveur et un portable
2.1. Le principe
2.2. Faire une sauvegarde
2.3. Sur le serveur...
2.4. Sur le portable...
2.5. Synchroniser
3. Crypter et signer ses mails avec GnuPG

1. Archiver ses mails

1.1. Le principe

Au bout d'un certain temps, si vous recevez beaucoup de mail, vos mailboxes peuvent commencer à devenir trop grosses, ce qui a deux inconvénients : ouvrir une mailbox (ou la synchroniser, comme expliqué ci-dessous) prend beaucoup de temps, et le mail commence à prendre beaucoup d'espace disque.

Pour remédier à ce problème, je vous propose d'utiliser le programme archivemail pour :

  • supprimer les mails trop vieux de certaines mailboxes (par exemple celles contenant des mailing-lists archivées sur le Web) ;

  • compresser les mails trop vieux de certaines mailboxes.

1.2. La mise en oeuvre

Commencez par installer le programme archivemail :


# apt-get install archivemail

La sytaxe d'archivemail est très simple :

  • pour supprimer les mails vieux de plus de 90 jours des mailboxes mailbox1 et mailbox2 :

    
% archivemail -d 90 --delete ~/mail/mailbox1 ~/mail/mailbox2
    
  • pour compresser les mails vieux de plus de 120 jours des mailboxes mailbox3 et mailbox4 et les stocker au format mbox dans le répertoire ~/mail-archive préalablement crée :

    
% archivemail -d 120 -o ~/mail-archive ~/mail/mailbox3 ~/mail/mailbox4
    

Si les commandes précédentes ne marchent pas et génèrent un message d'erreur bizarre, il faut relançer la commande en ajoutant l'option -v (verbose) et regarder quel mail particulier est responsable de l'erreur ; ensuite, éditer le mail fautif pour essayer de comprendre pourquoi il empêche archivemail de fonctionner, et supprimer le à la main s'il n'est pas important.

Si vous décidez de mettre en place une telle solution, vous aurez probablement envie que cela se fasse automatiquement, par exemple chaque Lundi à 12h42. Pour cela, utiliser la commande cron, comme expliqué au chapitre Outils d'administration système et résumé ici. Editez votre cron avec la commande crontab -e et rajoutez les deux lignes suivantes :


42 12 * * 1 archivemail --quiet -d 90 --delete ~/mail/mailbox1 ~/mail/mailbox2
43 12 * * 1 archivemail --quiet -d 120 -o ~/mail-archive ~/mail/mailbox3 ~/mail/mailbox4

2. Synchroniser ses mails entre un serveur et un portable

2.1. Le principe

C'est la configuration que j'utilise personnellement ; je vais donc parler à la première personne ! Je reçois mes mails sur un serveur sous Debian sur lequel j'ai un accès par SSH. Sur ce serveur, je trie mes mails avec procmail et spamassassin et je les lis avec mutt, exactement comme expliqué au chapitre Le mail en console. Sur ce serveur, je fais également l'archivage de mes mails comme expliqué dans la section précédente. Avec cette solution, je peux lire mes mails depuis n'importe quel ordinateur connecté à Internet et sur lequel je peux installer un client SSH.

J'ai aussi un ordinateur portable sous Debian, et je veux pouvoir avoir mes mails sur mon portable même quand il n'est pas connecté. En plus de ça, je veux :

  • pouvoir synchroniser facilement toutes mes mailboxes entre le serveur et mon portable de manière sécurisée (i.e. sans que le mot de passe soit envoyé en clair sur le réseau ni stocké en clair dans un fichier texte sur mon portable) ;

  • que les mails que je lis sur mon portable et ceux que je lis sur le serveur soient marqués comme lu sur mon portable et sur le serveur après synchronisation ;

  • que les mails que je marque pour être effacés sur mon portable et ceux que je marque pour être effacés sur le serveur soient effaçés sur mon portable et sur le serveur après synchronisation ;

  • que les mails auquels je réponds sur mon portable et ceux auquels je réponds sur le serveur soient marqués comme répondus sur mon portable et sur le serveur après synchronisation.

C'est le programme isync qui va s'occuper de la synchronisation. La mise en place de ma solution avec isync requière trois choses :

  • un accès SSH au serveur ;

  • un serveur IMAP installé sur le serveur (mais pas forcémment joignable de l'extérieur) ;

  • des mailboxes au format maildir sur le serveur.

    Note

    Si vous avez suivi les instructions du chapitre Le mail en console, vos mailboxes sont au format maildir.

2.2. Faire une sauvegarde

Dans ce genre de bidouilles, une mauvaise manipulation est vite arrivée ; je vous conseille donc de faire une sauvegarde de vos mails avant de commencer.

2.3. Sur le serveur...

Il faut qu'un serveur IMAP soit installé sur le serveur et repérer l'exécutable du serveur IMAP. Sur une Debian qui utilise le serveur IMAP fourni dans le package uw-imapd, l'exécutable du serveur est /usr/sbin/imapd.

Ensuite, il faut modifier la configuration de mutt sur le serveur. Sur le serveur, éditez le fichier de configuration ~/.muttrc et, si vous utilisez mon fichier de configuration, décommentez la ligne suivante, située dans la première partie :


set maildir_trash

2.4. Sur le portable...

Je suppose que le portable n'a pour l'instant aucune configuration de faite au niveau mail.

Mutt est normalement déjà installé. Récupérez mon fichier de configuration type :


% wget http://people.via.ecp.fr/~alexis/formation-linux/config/muttrc
% mv muttrc ~/.muttrc

Editez le fichier ~/.muttrc. Commencez par adapter la première partie intitulée Configuration Générale et décommentez la ligne suivante :


set maildir_trash

Ensuite, dans la 5ème partie intitulée Binding des touches, dans le paragraphe sur les macros, vous pouvez éventuellement commenter les lignes qui bindent la touche F4 avec fetchmail et décommenter les lignes qui bindent F4 avec isync.

Créez le répertoire mail/ dans votre home pour accueillir vos mailboxes :


% mkdir ~/mail/

Installez isync :


# apt-get install isync

Récupérez mon fichier de configuration type pour isync :


% wget http://people.via.ecp.fr/~alexis/formation-linux/config/isyncrc
% mv isyncrc ~/.isyncrc

Editez le fichier ~/.isyncrc et adaptez les lignes commençant par :

  • Host : mettez le nom DNS de votre serveur ;

    
Host serveur.exemple.org
    
  • Tunnel : mettez votre login, le nom DNS de votre serveur et l'exécutable du serveur IMAP sur votre serveur.

    
Tunnel "ssh -q toto@serveur.exemple.org /usr/sbin/imapd"
    

2.5. Synchroniser

Tout est maintenant prêt pour la première synchronisation ! Sur votre portable, vous allez lancer isync avec l'option -a pour synchroniser toutes les mailboxes, l'option -L pour créer automatiquement les mailboxes en local et l'option -V (verbose) pour faciliter le diagnostic des éventuels problèmes. Si en plus vous avez mis en place ssh-agent comme expliqué dans le chapitre L'accès à distance par SSH, exécutez ssh-add préalablement pour ne même pas avoir à taper votre mot de passe !


% isync -a -L -V

Si vous avez beaucoup de mails sur le serveur, cela risque de prendre un peu de temps. Pour les prochaines synchronisation, vous pourrez exécuter :

  • isync -a pour synchroniser toutes les mailboxes ;

  • isync mailbox1 mailbox2 pour ne synchroniser que certaines mailboxes.

et ce sera plus rapide puisqu'il n'aura que les nouveaux mails à télécharger.

Note

Un grand merci à Oswald Buddenhagen, nouveau mainteneur d'isync, pour m'avoir aidé à faire marcher cette solution.

3. Crypter et signer ses mails avec GnuPG

A l'adresse http://www.vilya.org/gpg/gpg-intro.html, vous trouverez une documentation en français très bien faite sur GnuPG, son utilisation et son intégration à mutt.