Guide de démarrage rapide avec Mutt
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 |
# 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
auth login
user votre_nom_d'usager
password votre_mot_de_passe
|
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.
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|