Gentoo Logo

Guide de démarrage rapide avec Mutt

Table des matières :

1.  Introduction au courrier électronique

Si vous n'êtes pas un fan des clients de messagerie électronique à interfaces graphiques fantaisistes, ou si vous voulez seulement essayer d'autres clients de messagerie avant de choisir celui qui vous convient le mieux, voici une méthode facile pour commencer à utiliser ces puissants outils en ligne de commande :

fetchmail, procmail, mutt et smtp

Ces programmes ne sont pas seulement puissants et très personnalisables, mais aussi petits et rapides. Lorsque vous serez à l'aise avec ce système de courrier électronique, vous serez étonné par tout ce qu'il vous permet de faire.

Ce document n'étant qu'un guide de démarrage, nous n'aborderons pas de « Mail Transfert Agent » (MTA ou agent de transfert de courrier) tel que sendmail, postfix ou exim. En d'autres termes, pas de configuration complexe de MTA. De cette façon, l'utilisation du port 25 pour le service de courrier n'est pas nécessaire.

Nous pouvons nous en passer car fetchmail peut transférer le courrier qu'il rapatrie directement au « Mail Delivery Agent » (MDA ou agent de diffusion de courrier) au lieu de le diriger vers le port 25. Et nous n'avons pas besoin d'un MTA complexe pour transmettre le courrier sortant au serveur SMTP de notre fournisseur d'accès.

Voici les programmes dont nous aurons besoin pour notre système de courrier électronique.

Exemple de code 1.1 : Installation des programmes requis

# emerge fetchmail nbsmtp procmail mutt

Ensuite, quatre étapes simples suffisent pour configurer les fichiers et nous sommes prêts à utiliser un système de courrier électronique flambant neuf.

Important : À la fin de chaque étape, vous pourrez effectuer un test pour vous assurer que la configuration est correcte. En d'autres termes, vous aurez un système de courrier électronique totalement fonctionnel une fois ces étapes franchies.

2.  Fetchmail

Fetchmail rapatrie le courrier à partir de serveurs distants et le transmet au système de diffusion de vos machines locales. Pour l'utiliser, vous aurez besoin de créer un fichier .fetchmailrc dans votre répertoire personnel comme dans cet exemple :

Exemple de code 2.1 : Exemple de fichier .fetchmailrc

poll mail.fai.net  protocol pop3 user "mon_nom" password "mon_mot_de_passe"
## fai : votre fournisseur d'accès Internet.

Une fois le fichier .fetchmailrc créé, il faudra changer ses droits d'accès avec la commande chmod. Le fichier ne doit pouvoir être lu que par son propriétaire. Modifiez les droits d'accès comme suit :

Exemple de code 2.2 : Définir les droits d'accès du fichier .fetchmailrc

$ chmod 600 .fetchmailrc

Pour voir fetchmail en action, utilisez l'option -v (mode bavard). Pour rapatrier tous les messages, utilisez l'option -a. L'option -m demande à fetchmail de transmettre le courrier rapatrié à procmail.

Attention : Lors de vos essais, c'est une bonne idée d'utiliser l'option -k qui demande à fetchmail de laisser le courrier sur le serveur après l'avoir téléchargé. En cas de problème, votre courrier ne sera pas perdu.

Lancez-le pour voir ce que ça donne.

Exemple de code 2.3 : Fetchmail test 1

$ fetchmail -akv -m "/usr/bin/procmail -d %T"

Lorsque vous aurez un système fonctionnel, vous pourrez le configurer en tant que commande cron ou le mettre dans un moniteur système comme gkrellm. Vous pouvez aussi lancer fetchmail en mode démon et lui spécifier de rapatrier le courrier toutes les x secondes.

3.  Procmail

Procmail a pour but de filtrer le courrier que lui envoie fetchmail. Il agit aussi en tant que MDA en délivrant le courrier dans vos boîtes aux lettres (BAL) où mutt (le client de messagerie électronique) ira le lire.

Pour utiliser procmail, il vous faudra créer un fichier .procmailrc dans votre répertoire personnel. Commençons un fichier .procmailrc très simple qui va filtrer le courrier issu de trois listes de diffusion de gentoo dans les BAL suivantes : gentoo-dev, gentoo-user et gentoo-announce.

Note : Les règles de filtrage de procmail sont appelées « recipes » (recettes en anglais). J'ai inclus quelques recettes anti-spam.

Exemple de code 3.1 : Exemple de .procmailrc

MAILDIR=$HOME/MuttMail                ## Faites en sorte que ça existe.
LOGFILE=$HOME/.procmaillog
LOGABSTRACT=no
#VERBOSE=on (Est utilisé uniquement pour le débogage.)
VERBOSE=off
FORMAIL=/usr/bin/formail
NL="
"
## Les lignes de « recipe » commencent par « :0 ».
## Ne mettez pas de commentaires dans les lignes de « recipe ».
## Désactivez un « recipe » grace au NON logique (!).
## Les conditions commencent par *, utilisez des expressions rationnelles.
## Les conditions sont associées avec un ET logique.
## Tout ce qui suit * est passé directement à egrep.
## Une ligne d'action suit les conditions, ici c'est un nom de BAL.

# Utilise formail pour les courriers dupliqués.
:0 Whc: .msgid.lock
| $FORMAIL -D 16384 .msgid.cache

:0 a
$MAILDIR/duplicates

# Les personnes dont on accepte toujours les courriers.
:0
* ^From:.*(craig\@hotmail|renee\@local.com)
$MAILDIR/friends

# Spam à la poubelle.
:0
* ^Subject:.*(credit|cash|money|debt|sex|sale|loan)
$MAILDIR/spam

# Plus de messages HTML.
:0
* ^Content-Type:.*html
$MAILDIR/junk

# Met les messages des listes de diffusion dans leurs boîtes.
:0
* ^List-Id:.*gentoo-user
gentoo-user

:0
* ^List-Id:.*gentoo-dev
gentoo-dev

:0
* ^List-Id:.*gentoo-announce
gentoo-announce

# Autres courriers de gentoo ?
:0
* ^From:.*gentoo.org
gentoo

:0
* ^From:.*@freshmeat\.net
freshmeat

#######################################
# Dernière règle : tout ce qui arrive #
# ici va dans la boîte par défaut.    #
#######################################
:0
* .*
default

# Fin de fichier

Note : Étant donné que procmail va créer les fichiers de BAL lorsqu'il en aura besoin (en utilisant les noms donnés dans les lignes d'action), il suffit d'affecter $HOME/MuttMail à la variable MAILDIR. Pour plus d'informations : http://www.procmail.org/

Vous pouvez maintenant tester votre .procmailrc avec la commande fetchmail que nous avons vu à la première étape. N'oubliez pas l'option -k pour laisser les courriers sur le serveur, au cas où vous auriez besoin de refaire des tests.

Exemple de code 3.2 : Procmail test 2

$ fetchmail -akv -m "/usr/bin/procmail -d %T"

Maintenant que fetchmail et procmail ont été exécutés, allez dans $HOME/MuttMail et lisez vos messages avec less ou votre gestionnaire de fichiers.

4.  Le client de messagerie électronique Mutt

Mutt sert à lire et à composer du courrier électronique. C'est un logiciel puissant et personnalisable tout en restant petit et rapide.

Mutt lit et écrit selon quatre formats de BAL : mbox, MH, MMDF et maildir. Le type de BAL est détecté automatiquement. Dans notre cas, nous utilisons le format mbox selon lequel tous les messages d'une boîte sont stockés dans un même fichier.

Mutt peut aussi utiliser des dossiers situés sur un serveur IMAP distant. Pour plus d'informations sur cette fonctionnalité, consultez « IMAP support » dans la section 4.11 du manuel d'utilisation de Mutt ainsi que son site web http://www.mutt.org/.

Lorsque vous avez installé mutt à la première étape, un fichier de configuration système a été installé dans /etc/mutt/Muttrc. Vous aurez également besoin de créer un fichier .muttrc dans votre répertoire personnel.

Exemple de code 4.1 : Exemple de fichier .muttrc

(Lisez bien l'excellent manuel d'utilisation de mutt (/usr/share/doc/mutt*).)
(Tout ce que vous changez ici remplace les options système de /etc/mutt/Muttrc.)

# cp /etc/mutt/Muttrc ~/.muttrc
# nano -w .muttrc
set pager_context=1
set pager_index_lines=6                 # Affiche un mini-index dans le pager.
set menu_scroll
set pgp_verify_sig=no                   # Ne pas afficher pgp dans le pager.
set status_on_top                       # Met la ligne d'état en haut.
set sort=threads                        # Trier par sujet dans l'index.

set status_format=" %r %b %f %n      Del %d      Msgs %m %l %> (%P)"
set pager_format="%-10.10i %[!%a %b %d %R]"
set date_format="!%H:%M %a %d %b     "
set index_format="%4C %Z %[%b%d] %-15.15F %s"
set folder_format="%2C %t %8s %d %N %f"

#set sendmail="/usr/bin/nbsmtp -d isp.net -h smtp.fai.net -f votrenom@isp.net"

#set from="default-mailaddress"         # Mettez ici votre adresse d'origine.
#set realname="myname"

set record="$HOME/MuttMail/sent"        # Les mails envoyés sont sauvegardés ici.
set delete=yes                          # Supprime sans confirmation.
set include=yes                         # Cite le message original dans la réponse.
set fast_reply=yes                      # Répond sans confirmation.
set beep=no                             # Désactive les bips.
set markers=no                          # Pas de + sur les lignes coupées.
set confirmappend=no                    # Enregistre dans =keep sans confirmation.
set to_chars=" +TCF"                    # Pas de L pour mail_list.

set folder = $HOME/MuttMail
mailboxes =gentoo-user
mailboxes =gentoo-dev
mailboxes =gentoo-announce
mailboxes =gentoo
mailboxes =freshmeat
mailboxes =duplicates
mailboxes =default
mailboxes =friends
mailboxes =junk
mailboxes =spam
mailboxes =keep

save-hook .* =keep                      # La BAL par défaut est =keep.
subscribe gentoo-user gentoo-dev        # Mettez ici les listes auxquelles vous êtes inscrit.

bind pager h display-toggle-weed        # Affiche l'entête avec la touche h.

# Émule l'ancien menu url.
macro index \cb |urlview\n 'appelle urlview pour extraire les URLs des messages'
macro pager \cb |urlview\n 'appelle urlview pour extraire les URLs des messages'

# Lance fetchmail avec la touche G.
macro index G "!fetchmail -a -m 'procmail -d %T'\r"
macro pager G "!fetchmail -a -m 'procmail -d %T'\r"

# Édite .muttrc et le "source", évite un redémarrage.
macro generic ,sm ":source $HOME/.muttrc\r"
macro generic \cj "!rxvt -bg wheat -e joe $HOME/.muttrc\r"

# Liste par défaut de champs à afficher dans les entêtes.
# Tout ignorer puis accepter seulement ce que vous voudrez voir.
ignore *
unignore  Date To From: Subject X-Mailer Organization User-Agent
hdr_order Date From To Subject X-Mailer User-Agent Organization

## Votre mutt doit avoir quelques couleurs.
## Celles-ci sont pour quatre niveaux de texte cité.
## Elles remplacent les couleurs par défaut dans /etc/mutt/Muttrc.

#color quoted green  default
color quoted1 magenta blue
#color quoted2 yellow default
#color quoted3 red default
#color signature cyan cyan


# Ce thème de couleurs est copié à partir de /etc/mutt/Muttrc.color.
# Commentez-le si vous voulez les couleurs par défaut.
# Je vois la vie en rose :-)
color hdrdefault brightcyan blue
color   header          brightwhite    blue "^from:"
color   header          brightwhite    blue   "^subject:"

color   quoted          brightgreen    blue
color   signature       brightwhite    blue

color   indicator       blue           green

color   error           red            black
mono    error           bold
color   status          black cyan
mono    status          bold
color   tree            yellow         blue

color   tilde           brightmagenta  blue
color   body            brightwhite    blue "[-a-z_0-9.]+@[-a-z_0-9.]+"
mono    body            bold                "[-a-z_0-9.]+@[-a-z_0-9.]+"
color   body            brightyellow   black    "^Good signature"
mono    body            bold                    "^Good signature"
color   body            brightwhite    red      "^Bad signature from.*"
mono    body            bold                    "^Bad signature from.*"
color   normal          white          blue
color   message         green          black
color   attachment      brightgreen    blue

# Fin de fichier... mais ça pourrait continuer encore et encore... :)

Pour information, ceci n'est qu'un exemple de fichier .muttrc. Vous pouvez configurer de nombreuses autres options, l'intégration de GPG par exemple. Vous trouverez de l'aide et des exemples sur http://www.dotfiles.com/index.php?app_id=27.

Vous êtes maintenant prêt à tester votre fichier .muttrc.

Exemple de code 4.2 : Test de .muttrc

$ mutt -y

Ceci devrait lancer Mutt avec un menu qui affiche les BAL que vous avez créées lors du test 2 avec la commande fetchmail.

Tapez ? pour obtenir de l'aide sur la navigation dans les BAL.

5.  SMTP

L'étape finale est la configuration de nbsmtp (No-Brainer SMTP). Il est utilisé pour envoyer le courrier sortant à votre serveur SMTP. Cette étape est aussi la plus facile puisqu'il suffit d'ajouter une ligne dans votre fichier .muttrc.

-d domaine : nom de domaine auquel nbsmtp dira appartenir. Ce sera presque toujours le domaine dans votre adresse de courrier électronique.

-f expéditeur@addr.net : adresse à partir de laquelle nbsmtp dira qu'il envoie le courrier. Elle peut être différente de celle de la ligne « From: » dans votre MUA.

-h smtp.net : serveur SMTP que vous utilisez pour envoyer vos courriels.

Exemple de code 5.1 : Ajout du support SMTP

$ nano -w .muttrc
set sendmail="/usr/bin/nbsmtp -d fai.net -h smtp.fai.net -f votre_nom@fai.net"

Vous êtes maintenant prêt à envoyer un message. Dans le pager ou l'index de mutt, tapez m pour composer un message de test à envoyer à votre adresse de courrier électronique. Mutt va utiliser la valeur des variables EDITOR ou VISUAL pour lancer votre éditeur préféré, sauf si vous avez modifié la ligne « editor= » dans votre fichier .muttrc. Quand vous aurez fini de composer votre message, tapez y pour l'envoyer. S'il n'y a pas d'erreur, vous verrez « sending mail » s'afficher, suivi de « Mail sent. ».

Rappelez-vous que nous avions configuré l'endroit où mutt sauvegarde les messages envoyés avec set record="$HOME/MuttMail/sent".

Pour terminer le test, lancez fetchmail encore une fois pour rapatrier vos messages et vérifiez que vous avez bien reçu le message de test. Lorsque vous l'aurez trouvé, tapez h pour afficher son entête et voyez le chemin complet qu'a suivi votre courrier.

Note : Vous voudrez probablement ajouter le programme urlview à votre système. Il extrait les URLs du texte des messages et les envoie à votre navigateur.

Exemple de code 5.2 : Installer urlview

# emerge urlview

Ensuite, créez ~/.urlview en copiant le fichier qui se trouve dans /usr/share/doc/urlview*/ et en éditant la ligne concernant votre navigateur.

Vous disposez maintenant d'un système de courrier électronique performant et très personnalisable. Pour bénéficier au maximum de sa flexibilité, lisez les manuels et la documentation des différents outils et cherchez les fichiers de configuration procmailrc et muttrc des autres utilisateurs sur le web.

6.  SMTP avec authentification

Utiliser nbSMTP

Si vous devez utiliser un nom d'utilisateur et un mot de passe avec votre serveur SMTP, vous pouvez éditer la commande set sendmail dans votre .muttrc pour y inclure -U <username>. Cela donne :

Exemple de code 6.1 : Paramétrer le nom d'utilisateur et le mot de passe pour SMTP

set sendmail="/usr/bin/nbsmtp -U nom_utilisateur -P mot_de_passe -d fai.net -h smtp.fai.net -f votre_nom@fai.net"

Si vous ne souhaitez pas que cette information se retrouve dans votre .muttrc, vous pouvez alternativement créer le fichier .nbsmtprc et y écrire les informations nécessaires :

Exemple de code 6.2 : Exemple de ~/.nbsmtprc

auth_user = nom_utilisateur
auth_pass = mot_de_passe

msmtp : un SMTP alternatif

msmtp est une alternative simple à nbsmtp et offre des fonctionnalités équivalentes.

Exemple de code 6.3 : Installer msmtp

# emerge msmtp

Relogguez-vous en utilisateur normal et configurez msmtp en spécifiant l'information relative à votre serveur SMTP dans le fichier ~/.msmtprc. N'oubliez pas d'utiliser des permissions d'accès sûres pour ce fichier !

Exemple de code 6.4 : Configurer msmtp

$ nano -w .msmtprc
account default
host smtp.votre_fournisseur.net
from votre_nom_d'usager@fournisseur1.net
# Consultez la page man pour plus de détails sur les options d'authentification.
auth login
user votre_nom_d'usager
password votre_mot_de_passe
# Si votre serveur SMTP supporte le cryptage TLS, décommentez la ligne suivante.
#tls

Ensuite, attribuez des permissions d'accès sûres à fichier :

Exemple de code 6.5 : Régler les permissions d'accès du fichier de configuration

$ chmod 600 .msmtprc

Finalement, éditez ou ajoutez la ligne suivante dans le fichier .muttrc :

Exemple de code 6.6 : Utiliser msmtp avec Mutt

$ nano -w .muttrc
set sendmail="/usr/bin/msmtp"

Lancez mutt et écrivez-vous un message pour vous assurez que cela fonctionne. Lisez la page man de msmtp pour connaître l'ensemble des options disponibles et pour voir un autre exemple de configuration.



Imprimer

Dernière mise à jour le 17 septembre 2006

Une version originale plus récente datée du 18 août 2011 existe.

Résumé : Ce guide vous montre comment utiliser les puissants outils à interface ligne de commande pour le courrier électronique : fetchmail, procmail, mutt et nbsmtp.

Mike Polniak
Auteur

Ken Nowack
Correcteur

John Hitchings
Contributeur

Ahmed Aït Mouss
Traducteur

Olivier Fisette
Traducteur

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.