Chapitre 2. Le courrier en console (suite)

1. Archiver son courrier
2. Synchroniser ses messages entre un serveur et un portable
3. Chiffrer et signer ses mails avec GnuPG
4. Adapter le champ From: en fonction du destinataire

1. Archiver son courrier

Principe

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

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

  • supprimer les messages trop vieux de certaines boîtes aux lettres (par exemple celles contenant des mailing-lists archivées sur le Web) ;

  • compresser les messages trop vieux de certaines boîtes aux lettres.

Mise en œuvre

Commencez par installer le programme archivemail :

# aptitude install archivemail

La sytaxe d'archivemail est très simple :

  • pour supprimer les messages vieux de plus de 90 jours des boîtes aux lettres mailbox1 et mailbox2 :

    % archivemail -d 90 --delete ~/mail/mailbox1 ~/mail/mailbox2
    
  • pour compresser les messages vieux de plus de 120 jours des boîtes aux lettres 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 message particulier est responsable de l'erreur ; ensuite, éditer ce message 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, vous pouvez utiliser la commande crontab, comme expliqué au Chapitre 6 et résumée ici. Editez votre cron avec la commande crontab -e et rajoutez lres 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 messages entre un serveur et un portable

Le principe

C'est la configuration que j'utilise personnellement ; je vais donc parler à la première personne ! Je reçois mon courrier sur un serveur sous Debian sur lequel j'ai un accès par SSH. Sur ce serveur, je trie mes messages avec Procmail et SpamAssassin et je les lis avec Mutt, exactement comme expliqué au Chapitre 1. Sur ce serveur, je fais également l'archivage de mes messages comme expliqué dans la section précédente. Avec cette solution, je peux lire mes messages 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 garder mes messages sur mon portable même quand il n'est pas connecté. En plus de ça, je veux :

  • pouvoir synchroniser facilement toutes mes boîtes aux lettres entre le serveur et mon portable de manière sécurisée (c'est à dire 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 messages que je lis sur mon portable et ceux que je lis sur le serveur soient marqués comme lus sur mon portable et sur le serveur après synchronisation ;

  • que les messages 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 messages 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 requiert 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 boîtes aux lettres au format Maildir sur le serveur.

    [Note] Note

    Si vous avez suivi les instructions du Chapitre 1, vos boîtes aux lettres sont au format Maildir.

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 messages avant de commencer.

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 paquet 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

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://formation-debian.via.ecp.fr/fichiers-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 partie intitulée Binding des touches, dans le paragraphe sur les macros, vous pouvez éventuellement commenter les lignes qui associent la touche F4 avec fetchmail et décommenter les lignes qui associent F4 avec isync.

Créez le sous-répertoire mail/ dans votre répertoire personnel pour accueillir vos boîtes aux lettres :

% mkdir ~/mail/

Installez isync :

# aptitude install isync

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

% wget http://formation-debian.via.ecp.fr/fichiers-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"
    

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 boîtes aux lettres, l'option -L pour créer automatiquement les boîtes aux lettres 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 2, 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 messages 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 boîtes aux lettres ;

  • isync mailbox1 mailbox2 pour ne synchroniser que certaines boîtes aux lettres.

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

[Note] Note

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

3. Chiffrer 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.

4. Adapter le champ From: en fonction du destinataire

Il est souvent nécessaire de devoir adapter l'adresse électronique que l'on utilise en fonction de l'adresse à laquelle on écrit. Par exemple, je peux avoir envie d'utiliser mon adresse @via.ecp.fr à chaque fois que j'écris à quelqu'un qui a une adresse @via.ecp.fr.

send-hook '~t ^.*@via\.ecp\.fr$' 'set from="robert.dupont@via.ecp.fr"'

De même, je peux vouloir utiliser mon adresse professionnelle à chaque fois que j'écris à un collègue. Il suffit alors d'ajouter des entrées de ce type pour chaque collègue (remplacer toto@free.fr par l'adresse de vos collègues) :

send-hook '~t ^toto@free\.fr$' 'set from="robert.dupont@mon.employeur.fr"'

Ces deux exemples sont commentés à la fin de la section 3 du fichier de configuration de Mutt que nous vous avons fourni.