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. |
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.
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.
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.
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 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.
Ce document est protégé par la licence Creative Commons : Paternité - Partage des Conditions Initiales à l'Identique 2.5.