Chapitre 1. Le mail en console

Table des matières
1. Rapatrier son mail
2. Trier son mail avec procmail et spamassassin
2.1. Le principe
2.2. La pratique
3. Lire son mail avec mutt
3.1. Installer et configurer mutt
3.2. Utiliser mutt
4. C'est parti !

Je vous propose la solution suivante si vous voulez lire votre mail en console :

1. Rapatrier son mail

Commencez par installer fetchmail :


# apt-get install fetchmail

Dès l'installation du package, il vous demande : Faut-il installer un service fetchmail pour tout le système ?. Répondez Non.

Ecrivez votre fichier de configuration .fetchmailrc dans votre home en vous basant sur mon fichier de configuration type :


% cp /root/config/fetchmailrc ~/.fetchmailrc

ou :


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

et modifiez le nom du serveur de mail, le login et le mot de passe.

Le fichier de configuration doit avoir les permissions 600, sinon fetchmail refuse de fonctionner :


% chmod 600 ~/.fetchmailrc

Pour rapatrier les mails depuis le serveur sur votre ordinateur, il suffira de lancer la commande :


% fetchmail

mais avant ça, nous allons mettre en place le filtrage avec procmail et spamassassin.

2. Trier son mail avec procmail et spamassassin

2.1. Le principe

Procmail est un programme simple capable de trier les mails en regardant leurs headers. Nous allons lui demander de trier le mail dans différents répertoires, appelés mailbox.

Spamassassin est un programme qui scanne les headers, le message et les éventuelles pièces jointes des mails et les analyse. Pendant cette analyse, il regarde un certain nombre de critères généralement vérifiés par les spams, à chaque critère étant associé un nombre de points (plus le critère est significatif, plus le nombre de points est grand). Enfin, il additionne les points pour attribuer au mail une note globale. Par défaut, si la note globale atteint 5.0 (on peut la changer en modifiant le fichier de configuration de spamassassin ~/.spamassassin/user_prefs qui est crée automatiquement à la première utilisation), le mail est considéré comme du spam. Spamassassin lui rajoute alors un header X-Spam-Status: Yes et un rapport de l'analyse dans le corps du mail. Le header rajouté par spamassassin permet par exemple à procmail d'aiguiller le spam dans une mailbox poubelle.

Commencez par installer ces deux programmes (procmail est normalement déjà installé...) :


# apt-get install procmail spamassassin

Le principe du tri de mail avec procmail et spamassassin est la suivante :

  1. le mail reçu par Postfix via fetchmail arrive dans le fichier /var/mail/nom_de_l'utilisateur,

  2. Postfix regarde si l'utilisateur a un fichier .procmailrc dans son home,

  3. si oui, il lit ce fichier ~/.procmailrc et suit les instructions qu'il contient,

  4. dans notre cas, ces instructions lui disent de déplacer le mail dans une des mailboxes contenues dans le répertoire ~/mail. Spamassassin est alors éventuellement appelé par procmail pour envoyer dans la mailbox poubelle appelée "spam" les mails qu'il considère comme étant du spam.

Avertissement

Attention, une mauvaise utilisation de procmail peut aboutir à la perte de mails. Il faut donc toujours faire des tests après la mise en place et après chaque modification de la configuration de procmail.

2.2. La pratique

Utilisez le fichier de configuration d'exemple pour procmail procmailrc :


% cp /root/config/procmailrc ~/.procmailrc

ou :


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

Regardez les commentaires écrits dans ce fichier pour comprendre comment il est construit et personnalisez-le. Aidez-vous éventuellement de man procmailrc et man procmailex.

Créez un répertoire mail dans votre home qui accueillera toutes vos mailboxes :


% mkdir ~/mail

Les mailboxes seront des sous-répertoires du répertoire mail et seront crées automatiquement par procmail au premier mail aiguillé dans la mailbox.

3. Lire son mail avec mutt

3.1. Installer et configurer mutt

Le package mutt est normalement déjà installé.

Le fichier de configuration de mutt est ~/.muttrc. Utilisez mon fichier de configuration d'exemple comme base de travail :


% cp /root/config/muttrc ~/.muttrc

ou :


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

Editez-le et personnalisez au minimum les deux premiers paramètres (le champ From et la liste des adresses e-mail utilisées). Avec le fichier de configuration que je vous propose, mutt génère la liste des mailboxes à partir de la liste des sous-répertoires du répertoire ~/mail/ (les sous-répertoires correspondant aux mailboxes sont créés à la réception du premier mail pour cette mailbox). Pour avoir la liste complète des paramètres et de leur description, utilisez man muttrc ou ce manuel d'utilisation en français.

Si vous le désirez, vous pouvez écrire un carnet d'adresse pour mutt sous forme d'un fichier texte ~/.aliases. Chaque ligne du fichier correspond à une entrée dans le carnet d'adresse. A chaque entrée dans le carnet d'adresse, vous devez associer une clé que vous pourrez alors utiliser dans mutt à la place du nom et de l'adresse e-mail complète. Les lignes de fichier doivent avoir la syntaxe suivante :


alias clé Nom_et_Prénom <adresse_mail>

Par exemple, si vous voulez me mettre dans votre carnet d'adresse en me désignant par la clé alex, ajoutez la ligne :


alias alex Alexis de Lattre <alexis@via.ecp.fr>

3.2. Utiliser mutt

Commencez par lancer mutt :


% mutt -y

La liste des mailboxes apparaît à l'écran :

Figure 1-1. Mutt : liste des mailboxes

Sélectionnez une mailbox pour lire les messages qui s'y trouvent. Ensuite, pour passer d'une mailbox à une autre, utilisez la touche c : si une mailbox contient un nouveau mail, son nom apparaît et vous n'avez plus qu'à taper Entrée ; si vous voulez aller à une mailbox particulière, tapez son nom précédé du signe = (la complétion automatique marche).

Figure 1-2. Mutt : messages dans une mailbox

Pour écrire un mail, placez-vous dans n'importe quelle mailbox et tapez m. Rentrez l'adresse du destinataire ou sa clé si vous l'avez mis dans votre fichier d'alias, puis le sujet du message. Mutt ouvre alors votre éditeur de texte préféré (vim si vous n'avez pas changé ce paramètre dans le fichier de configuration). Le texte contient déjà des headers que vous pouvez compléter et / ou modifier. Tapez le texte du message en dessous des headers :

Figure 1-3. Mutt : écriture d'un mail

Une fois que vous avez fini, enregistrez et quittez... Vous arriver alors dans l'écran d'envoi des mails :

Figure 1-4. Mutt : écran d'envoi des mails

Dans cet écran, vous pouvez appuier sur :

  • t pour modifier la liste des personnes destinataires,

  • c pour modifier la liste des personnes en Cc,

  • b pour modifier la liste des personnes en Bcc,

  • s pour modifier le Subject,

  • e pour rééditer le message,

  • a pour attacher des fichiers au mail,

  • p pour accéder aux fonctions de cryptage et de signature de GnuPG (voir ci-dessous),

  • q pour annuler l'envoi du mail,

  • y pour envoyer le mail.

Dans une mailbox, que vous soyez dans la liste des messages ou entrain d'afficher un message, vous avez accès aux touches suivantes :

  • r pour répondre à l'expéditeur du mail sélectionné,

  • g pour répondre à l'expéditeur et aux autres destinataires du mail sélectionné,

  • Tab pour aller au mail non lu suivant,

  • v pour faire la liste des fichiers attachés d'un mail puis s pour les détacher et les enregistrer sur le disque dur,

  • h pour afficher le message avec tous ses headers (et de nouveau h pour enlever l'affichage des headers),

  • f pour forwarder le mail sélectionné à quelqu'un,

  • d pour marquer le mail comme devant être effaçé,

  • u pour annuler le marquage d'effacement,

  • F pour marquer le message comme important, i.e. afficher un point d'exclamation au niveau du message (idem pour enlever le marquage),

  • a pour ajouter ou éditer l'entrée de l'expéditeur du message dans le carnet d'adresse,

  • $ pour réactualiser la mailbox (effacer les messages marqués comme devant être effaçés et afficher les messages qui viennent d'arriver),

  • G pour aller directement à la liste des mailboxes.

Quand vous êtes dans la liste des messages d'une mailbox (et non quand vous êtes entrain d'afficher un message), vous avez en plus accès aux touches suivantes :

  • o pour trier les messages de la mailbox : il propose alors le choix entre un tri par date, par expéditeur, par destinataire, par sujet, par discussion (tri normal), etc...

  • w pour mettre un flag sur un message : il propose alors une liste des flags (cela permet notamment de remettre un message comme non-lu en remettant le flag N),

  • l pour n'afficher que certains messages de la mailbox : tapez alors :

    • ~f toto pour afficher les messages contenant toto dans le champ From,

    • ~C titi pour afficher les messages contenant titi dans le champ To et/ou dans le champ Cc (taper ~t titi pour se limiter au champ To et ~c titi pour se limiter au champ Cc),

    • ~s urgent pour afficher les messages contenant urgent dans le sujet,

    • ~b bruit pour afficher les messages contenant le mot bruit dans le texte du message,

    • ~F pour afficher les messages marqués comme important,

    • ~A pour afficher tous les messages.

  • q pour quitter Mutt.

Note

Pour revenir à la liste des messages quand vous êtes entrain d'afficher un message, tapez e.

A tout moment, vous pouvez taper ? pour accéder à la liste des touches disponibles avec leur fonction.

4. C'est parti !

Maintenant que tout est en place, vous pouvez :

  1. lancer le rapatriement de vos mails :

    
% fetchmail
    
  2. vérifier qu'ils sont correctement triés en consultant le fichier ~/.procmail.log ;

  3. les lire avec mutt :

    
% mutt -y
    

Quand vous envoyez un mail avec mutt, mutt le transmet à Postfix qui essaye alors de joindre le serveur mail du destinataire. Si le serveur mail du destinataire n'est pas joignable ou si vous n'êtes pas connecté à Internet, le mail reste alors stocké dans la queue de mails de Postfix.

Pour voir les mails stockés dans la queue de Postfix :


% mailq

Pour effacer un mail stocké dans la queue :


# postsuper -d ID_du_message

ID_du_message est l'ID du message tel qu'il apparaît avec la commande mailq.

Postfix essaye de vider sa queue à intervalles réguliers. Pour le forcer à vider sa queue immédiatement :


% postqueue -f

Normalement, cette commande est exécutée automatiquement à chaque établissement d'une connexion PPP.

Pour vous rendre la vie plus facile, j'ai créé des raccourcis clavier vers ces commandes dans mutt (cf .muttrc) :