Introduction

Ce document décrit comment on peut utiliser l'agent de mail mutt-ng dans le cadre de la PLM. Nous présenterons cela avec mutt-ng qui est une version de mutt un peu améliorer. La raison de ce choix est qu'il est plus simple de configuration.

Sur certaines installation de mutt-ng le binaire est installé sous le nom de muttng, nous parlerons dans ce qui suit de mutt mais c'est bien la version mutt-ng qu'il s'agit. L'élément que nous utilisons dans mutt-ng qui n'est pas dans la version standard de mutt et la librairie ESMTP qui permet à l'application d'utiliser un serveur de mail d'envoie.

Nous supposerons que si vous voulez utiliser un agent de mail comme mutt c'est que vous étès habitué aux lignes de commandes, nous n'entrerons donc pas les détails trop précis. Si vous voulez découvrir cet agent de mail nous vous conseillons d'aller sur le site de l'application, ou bien de chercher sur Internet, il y a une base importante de documentation. Cependant comme il s'agit d'une application hautement configurable, il vous faudra un peu de temps pour trouver celle qui vous convients.

Ce document n'a donc pas la prétention de vous indiquez comment configurer les quelques 360 variables de mutt mais uniquement comment vous pouvez le configurer pour lire vos mails sur la PLM. Vous pouvez naturellement adapter facilement à une situation autre que celle de la PLM

Installation de l'application

Nous n'entrerons pas dans les détails de l'installation de l'application, sachez cependant que vous aurez besoin à minima des options d'installation suivante : GNU_TLS (ou bien SSL), IMAP et ESMTP.

Nous supposerons donc que dans la suite que vous avez une version de mutt correctement installer. Si telle n'est pas le cas nous vous renvoyons une fois de plus vers les gens qui développent cette application.

Voici la liste des options pour la version de mutt utiliser pour cette documentation :

System:
 FreeBSD 6.1-STABLE (i386)
External Libraries:
 ncurses 5.2
 libiconv 1.9
 libESMTP 1.0.4
 DB4 4.2.52
 gnutls 1.4.0
Compile Options:
 +DEBUG
 -HOMESPOOL  +USE_SETGID  +USE_DOTLOCK  +DL_STANDALONE  
 -USE_FCNTL  +USE_FLOCK   -USE_INODESORT   +USE_HCACHE  
 +USE_POP  -USE_NNTP  +USE_IMAP  -USE_GSS  -USE_SSL  +USE_GNUTLS  -USE_SASL  +USE_LIBESMTP  
 +HAVE_REGCOMP  -USE_GNU_REGEX  +COMPRESSED  
 +HAVE_COLOR  +HAVE_START_COLOR  +HAVE_TYPEAHEAD  +HAVE_BKGDSET  
 +HAVE_CURS_SET  +HAVE_META  +HAVE_RESIZETERM  
 +CRYPT_BACKEND_CLASSIC_PGP  +CRYPT_BACKEND_CLASSIC_SMIME  -CRYPT_BACKEND_GPGME  -BUFFY_SIZE -SUN_ATTACHMENT  
 +ENABLE_NLS  -LOCALES_HACK  +HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  +HAVE_LANGINFO_YESEXPR  
 +HAVE_ICONV  -ICONV_NONTRANS  -HAVE_LIBIDN  +HAVE_GETSID  +HAVE_GETADDRINFO  

Ces options ne sont peut être pas tous necessaires, mais elles sont suffisantes.

Configuration de l'application

On suppose que vous n'avez pas de fichier de configuration de mutt qui se nomme selon les installations .muttngrc ou .muttrc

La première chose à introduire dans la configuration est l'utilisation d'imaps pour acceder à votre boite aux lettres :

set spoolfile=imaps://nom_de_login@imaps.math.cnrs.fr:993

une fois cette opération faites il faut maintenant intérger le certificat racine du CNRS qui été utilisé pour la certification de notre certificat serveur.

Pour cela vous devez définir le nom du fichier qui va contenir le certificat

set certificate_file=~/.mutt/certificats-racines

puis dans ce fichier vous devez mettre le certificat racine CNRS-Standard telle que vous pouvez le trouvez sur le site de l'UREC. Donc une fois télécharger dans un fichier par exemple CNRS-Standard.crt vous faites

[jas@freebsd2 Certificats]$ cat CNRS-Standard.crt > ~/.mutt/certificats-racines

Une fois ces opérations effectuées vous pouvez déjà lire vos mails sur le serveur de la PLM, il reste maintenant la partie envoie de mail. Selon la documentation de mutt il est possible d'utiliser une connexion TLS pour l'envoie de mail, seulement tous les tests que j'ai effectué se sont soldés par un coredump pas très utile. En attendant la correction de ce bug nous allons voir comment utiliser simplement un tunnel ssh.

Configurons mutt pour utiliser le tunnel, pour cela il faut rajouter dans le fichier de configuration

set smtp_host=127.0.0.1
set smtp_port=1025

le numéro de port 1025 n'est pas obligatoire, vous pouvez utiliser n'importe quelle numéro supérieur à 1024, mais il faudra le conserver dans l'établissement du tunnel. Il est aussi important à ce moment de configurer le champ From de vos mail par

set from="Votre Nom <votre_adresse_electronique>"

Il est très important de bien configurer cette variable, et de faire en sorte que l'adresse électronique se termine bien par math.cnrs.fr sinon le courier ne partira pas, et ce même si votre application indique que le mail est bien envoyé. Le mail sera en fait jeter par nos serveurs

Maintenant lorsque vous voulez envoyez des mail il vous suffit de mettre en place un tunnel pour l'envoie de mail, pour cela

[jas@freebsd2]$ ssh -N -f ssh.math.cnrs.fr -L 1025:mailhost.math.cnrs.fr:25 sleep 10

une fois cela fait votre application mutt pourra recevoir et envoyer du mail avec la plm

Voici donc une exemple de ce que vous devez impérativement avoir pour pouvoir lire votre mail sur la plm avec mutt :

set spoolfile=imaps://jas@imaps.math.cnrs.fr:993
set certificate_file=~/.mutt/certificats-racines
set smtp_host=127.0.0.1
set smtp_port=1025
set from="Albert Shih <\jas@math.cnrs.fr>"

naturellement libre à vous de configurez d'autres variables.

Certificat utilisateur

Nous allons voir dans ce paragraphe comment utiliser mutt avec les certificats utilisateurs. Ceci n'est donc pas obligatoire pour une utilisation normale de mutt. Cela est utile uniquement si vous envoyez/recevez des mails signés/chiffrés.

Tout d'abord il faut préparer mutt en intégrant dans votre fichier de configuration de mutt :

# -*-muttrc-*-
set smime_is_default
set crypt_autosign = yes
set crypt_replyencrypt = yes
set crypt_replysign = yes
set crypt_replysignencrypted = yes
set crypt_verify_sig = yes
set smime_ca_location="~/.smime/certificats-racines.crt"
set smime_certificates="~/.smime/certificates"
set smime_keys="~/.smime/clefs-prives"
set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out"
set smime_get_cert_command="openssl pkcs7 -print_certs -in %f"
set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null"
set smime_get_cert_email_command="openssl x509 -in  %f -noout -email"
set smime_import_cert_command="smime_keys.pl add_cert %f"
set smime_encrypt_with="des3"
set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c"
set smime_sign_command="openssl smime -sign -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER"
set smime_decrypt_command="openssl smime -decrypt  -passin stdin -inform DER -in %f -inkey %k -recip %c"
set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f"
set smime_verify_opaque_command="openssl smime -verify -inform DER -in %s %C"

Cet extrait de fichier est là uniquement pour que vous puissez faire un copier/coller dans la configuration de votre mutt, mais vous trouverez ce fichier (en général sous le nom smime.rc dans l'installation de votre application. Sous FreeBSD ce fichier se trouve dans /usr/local/share/examples/mutt-ng/smime.rc, dans ce fichier il y a des commentaires qui vous explique ce que font ces variables et peut vous guidez pour le reconfigurer.

Ensuite il vous faut le script smime_key.pl qui est livré avec mutt, il faut d'abord initialiser la configuration en faisant :

[jas@freebsd2 ~]$ smime_keys.pl init

cela vous crée un dossier au nom de .smime et les autres dossiers qui ont étés définis dans le fichier .muttrc.


Dans l'installation de FreeBSD il faut faire deux opérations, tout d'abord le script smime_key.pl n'est pas installé, vous le trouverez dans les sources de mutt-ng, ensuite comme l'application est installé sous le nom de muttng il faut indiquer ou il se trouve au script, pour cela il vous suffit de faire

[root@freebsd2 ~]$ cd /usr/local/bin
[root@freebsd2 ~] ln -s /usr/local/bin/muttng mutt


Une fois l'initialisation effectué, nous allons intégré les certifications racines du CNRS, pour cela il faut aller sur le site de l'UREC et prendre les deux certificats racines CNRS.crt et CNRS-Standard.crt. Il suffit maintenant de l'intégrer dans le fichier définit par set smime_ca_location par

[jas@freebsd2 ~]$ cat CNRS-Standard.crt CNRS.crt >> ~/.smime/certificats-racines.crt

À ce stade de la configuration vous pouvez déjà vérifiez la signature des mails que vous recevez, naturellement si vos correspondant utilisent des certificats qui ne sont pas signer par l'autorité de certification du CNRS il faut que vous intégrez de la même façon ces autres certificats racines

Il reste maintenant à intégrer votre certificat par (exemple facilement transposable) :

[jas@freebsd2 ~]$ smime_keys.pl add_p12 cnrs-s.p12

NOTE: This will ask you for two passphrases:
      1. The passphrase you used for exporting
      2. The passphrase you wish to secure your private key with.

Enter Import Password:
MAC verified OK
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

You may assign a label to this key, so you don't have to remember
the key ID. This has to be _one_ word (no whitespaces).

Enter label: jas-cnrs-standard-2006
added certificate: /usr/home/jas/.smime/certificates/756f7968.0.

certificate fb4602dd.0 (jas-cnrs-standard) for shih@math.jussieu.fr added.

==> about to verify certificate of shih@math.jussieu.fr

/usr/home/jas/.smime/certificates/fb4602dd.0: OK

added private key: /usr/home/jas/.smime/clefs-prives/fb4602dd.0 for shih@math.jussieu.fr
[jas@freebsd2 ~]$

lors de cette intégration il vous est demandé la passphrase que vous avez utiliser pour exporter vos certificats depuis votre navigateur, suivi par celui que vous voulez utiliser pour protéger vos certificats dans mutt.

Vous avez certainement remarquer qu'il vous demande un label pour désigner le certificat, comme les certificats sont valides un an, une astuce est de rajouter l'année dans le label. Cela est pratique lorsque vous devez lire un ancien message chiffrer.

L'intégration vous donne aussi un numéro, ici nous avons fb4602dd.0, il faut l'indiquer à mutt par

set smime_default_key="fb4602dd.0"

... et c'est fini.