Dans ma quête d'améliorer mes connaissances sur GNU/linux, il m'apparaît indispensable d'apprendre à utiliser le terminal. Pour cela, je choisis d'utiliser celui-ci pour mes activités quotidiennes. En effet, il n'y a que la pratique qui permet d'avoir des automatismes et de progresser significativement.
Une étape importante est donc de gérer mes boîtes mail via la console. Jusqu'à présent, j'utilisais Claws-mail, très efficace au demeurant. Après une recherche sur le net, j'ai découvert Mutt, qui semblait correspondre à mes besoins. Voici en détail mes tatonnements et ce qui en est sorti.
Dans le dépôt Current de Frugalware, il existe trois versions de mutt :
A l'origine, je souhaitais avoir la possibilité d'avoir une sidebar avec la liste des dossiers. Je choisis donc mutt-ng, qui intègre cette option.
pacman-g2 -S mutt-ng
Comme pour beaucoup d'applications sur GNU/Linux, toute la configuration se fait via un fichier .$$$rc. Pour pouvoir le modifier, il faut le copier dans son répertoire personnel :
su cp /etc/Muttrc /home/mike/.muttrc chown mike /home/mike/.muttrc
Alors, ce fichier est complexe et très personnalisable. Pour pouvoir vous donner une idée de ce qu'il est possible de faire, il existe sur le net des muttrc qui trainent. Je vous conseille cette page du manuel en ligne (en)
Pour remplir correctement votre muttrc, il est bien sur nécessaire de savoir quel protocole utiliser. Pour ma part, j'utilise l'IMAP avec deux comptes gmail : 1 normal et 1 compte googleapps. Voici la partie du muttrc qui permet de se connecter à ces comptes.
# Compte Gmail (mettre l'adresse sans @gmail.com)
# Reception
account-hook imaps://login@imap.gmail.com:993/ \
'set record=imaps://login@imap.gmail.com:993/Sent; \
set imap_pass=xxxxxxxxxxxxx ; \
set spoolfile=imaps://login@imap.gmail.com:993/INBOX ;\
set folder=imaps://login@imap.gmail.com:993/'
mailboxes "=INBOX"
mailboxes "=ART-LIBRE"
mailboxes "=WEB-HOST"
mailboxes "=FAMILLE"
mailboxes "=Sent"
# Compte googleapps (mettre votre adresse complete)
account-hook imaps://adresse-complete@votredomaine.com@imap.gmail.com:993/ \
'set record=imaps://adresse-complete@votredomaine.com@imap.gmail.com:993/Sent; \
set imap_pass=xxxxxxxx ;\
set spoolfile=imaps://adresse-complete@votredomaine.com@imap.gmail.com:993/INBOX ;\
set folder= imaps://adresse-complete@votredomaine.com@imap.gmail.com:993'
mailboxes "=INBOX"
mailboxes "=ecoles"
mailboxes "=peupleloup"
mailboxes "=Sent"
unset folder
unset imap_passive
# SMTP
folder-hook 'imaps://login@imap.gmail.com:993' 'set smtp_url="smtp://login@smtp.gmail.com:587" from="login@gmail.com" smtp_pass="xxxxxxxx"'
folder-hook 'imaps://adresse-complete@votredomaine.com@@imap.gmail.com:993' 'set smtp_url="smtp://adresse-complete@votredomaine.com@smtp.gmail.com:587" from="adresse-complete@votredomaine.com@" smtp_pass="xxxxxxxxx"'
# Macros pour envoyer dans laboite à spam et remettre dans l'inbox
macro index,pager S "<save-message>=[Gmail]/Spam<enter>" "mark message as spam"
macro index,pager H "<save-message>=INBOX<enter>" "mark message as ham"
Bon, c'est un bon début pour déja voir comment mutt fonctionne. Lancons donc le programme depuis le terminal :
mutt -y
Au démarrage, Mutt affiche une boîte aux lettres qui n'est pas votre compte gmail. Il s'agit du mail système, où sont rapportés les anomalies. Pour aller dans votre boîte mail, il vous faut changer de boîtes aux lettres avec la touche c et, au prompt, renseigner l'adresse de la boîte :
imaps://login@imap.gmail.com:993
Vous arrivez alors à la liste des libellés de gmail, qui sont en fait des boîtes aux lettres. Votre boite de reception est INBOX. Et là, miracle, vous obtenez la liste de vos messages, triés selon votre choix dans muttrc.
Le principe de Mutt est très simple : vous avez une page où sont listés les messages. Elle se fait appeler "index". Lorsque vous visualisez un message, vous êtes dans le "pager". Cette notion est importante, notamment pour régler les macros et raccourcis clavier, qui sont différents selon la vue. Voici une revue simplifiée des actions possibles.
| Touche | Action | |
|---|---|---|
| c | changer de BAL | |
| ENTREE | voir message | |
| t | Selectionner message | |
| T | Selectionner messages selon requete | |
| d | effacer message | |
| D | effacer messages selon requete | |
| m | écrire message | |
| s | sauver le message dans une BAL | |
| r | répondre au message | |
| f | transférer le message | |
| g | répondre à tous | |
| L | répondre à la liste de diffusion | |
| a | mettre en alias l'auteur du message | |
| q | quitter mutt | |
| Touche | Action | |
|---|---|---|
| c | changer de BAL | |
| v | voir pièces jointes | |
| d | effacer message | |
| s | sauver le message dans une BAL | |
| j | message suivant dans la liste | |
| r | répondre au message | |
| f | transférer le message | |
| g | répondre à tous | |
| L | répondre à la liste de diffusion | |
| a | mettre en alias l'auteur du message | |
| q | quitter mutt | |
Lorsque vous rédiger un message ou une réponse, mutt lance l'éditeur. Soit un éditeur interne, qui réagit comme Emacs, soit l'éditeur que vous spécifiez dans votre muttrc. Personnellement, j'utilise Vim. Lorsque vous sauvez le texte, vous arrivez alors dans la page d'envoi. C'est ici que vous pouvez insérer des pièces jointes, signer ou crypter vos mails avec PGP et bien sur envoyer votre courriel.
| Touche | Action | |
|---|---|---|
| a | Attacher fichier | |
| p | Options PGP | |
| y | Envoyer message | |
Bien sur, il existe tout un tas de paramètres. Je n'en ai pas fait le tour, notamment parce que je n'en ai pas l'utilité pour le moment. Voici les options que j'ai mis en place.
Pour envoyer un message à quelqu'un qu'on connait bien, c'est plus sympa de pouvoir le faire sans retaper toute l'adresse. Pour se faire, il vous faut créer un fichier qui accueillera les alias :
$ vim ~/.mutt/aliases
Le contenu sera de ce type (à noter qu'il faut insérer plusieurs espaces entre les paramètres. Le dernier est nécessairement l'email :
alias drine Sandrine T sandrine@domaine.com alias pixelpipe pixelpipe xxxxx@upload.pixelpipe.com
Pour indiquer à Mutt l'emplacement de ce fichier, il est nécessaire de rajouter ces lignes dans muttrc
# configuration des alias set alias_file= ~/.mutt/aliases set sort_alias= alias set reverse_alias=yes source $alias_file
Alors pour pouvoir utiliser votre clé PGP pour signer ou chiffrer vos messages, vous devez ajouter du code dans muttrc. J'ai récupéré sur le net un code qui fonctionne très bien :
# GnuPG set pgp_decode_command="gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f" set pgp_verify_command="gpg --no-verbose --batch --output - --verify %s %f" set pgp_decrypt_command="gpg --passphrase-fd 0 --no-verbose --batch --output - %f" set pgp_sign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f" set pgp_clearsign_command="gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f" set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x2EA32E78 -- -r %r -- %f" set pgp_encrypt_sign_command="pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x2EA32E78 -- -r %r -- %f" set pgp_import_command="gpg --no-verbose --import -v %f" set pgp_export_command="gpg --no-verbose --export --armor %r" set pgp_verify_key_command="gpg --no-verbose --batch --fingerprint --check-sigs %r" set pgp_list_pubring_command="gpg --no-verbose --batch --with-colons --list-keys %r" set pgp_list_secring_command="gpg --no-verbose --batch --with-colons --list-secret-keys %r" set pgp_autosign=yes set pgp_sign_as=0x2EA32E78 set pgp_replyencrypt=yes set pgp_timeout=1800 set pgp_good_sign="^gpg: bonne signature de"
Indispensable à mon sens, le filtrage des messages qui reviennent souvent. Les listes de discussions sont particulièrement concernées par ce système. Dans .muttrc donc :
# FILTRES save-hook "~C membres@peupleloup.info" +peupleloup save-hook "~C peuple-loup@googlegroups.com" +ecoles save-hook "~C copyleft_attitude@april.org" +art-libre save-hook "~C debats@april.org" +april save-hook "~C sard@societe-civile.org" +sard
Oui, parce que c'est plus sympa que de retaper l'adresse imap à chaque redémarrage :
# imap 'profile change' bindings. Use to switch personalities so that you can # browse multiple IMAP servers' folders in the file browser macro index 1 "c?c^Uimaps://votreadresse-complete@votredomaine.com@imap.gmail.com/INBOX:993^Mq" macro index 2 "c?c^Uimaps://login@imap.gmail.com/INBOX:993^Mq"
Pour égayer un peu le tout, on peut bien sur personnaliser les couleurs. Voici mon choix :
# ## COLORS # # #source ~/.mutt/colors/pink # #source ~/.mutt/colors/themes.256 # #source ~/.mutt/colors/calmar.light # # color attachment brightmagenta black color error brightwhite red # errors yell at you in red color hdrdefault red black # headers color indicator brightyellow magenta # currently selected message color markers brightcyan black # the + for wrapped pager lines color message brightcyan black # informational messages, not mail color normal white black # plain text color quoted green black # quoted text color search brightgreen black # hilite search patterns in the pager color signature red black # signature (after "-- ") is red color status brightyellow blue # status bar is yellow *on blue* color tilde blue black # ~'s after message body color tree red black # thread tree in index menu is magenta color signature brightred black color underline yellow black color header cyan black ^(From|Subject): # Important headers color body magenta black "(ftp|http)://[^ ]+" # picks up URLs color body magenta black [-a-z_0-9.]+@[-a-z_0-9.]+ # # # Coloring quoted text - coloring the first 7 levels: color quoted cyan black color quoted1 yellow black color quoted2 red black color quoted3 green black color quoted4 cyan black color quoted5 yellow black color quoted6 red black color quoted7 green black # # # Colorize smileys: :-) ;-) :-/ :-( color body yellow black "[;:]-[)/(|]" color body yellow black "[;:][)/(|]" color body green black "[[:alpha:]]\+://[^ ]*" color index brightyellow black ~N # New color index yellow black ~O # Old color index magenta black ~F color index blue black ~T color index red black ~D
Alors, première des choses : les touches d'actions sont très bien pensées et intuitives. Si on oublie quelque chose ? vous rafraîchit la mémoire. La lecture est confortable, si on utilise un thème couleur sympathique. Les gens qui pensent que travailler en console est austère et donne mal aux yeux n'ont surement pas pratiquer. je trouve personnellement le travail en console très confortable et reposante. L'accent est de plus mis sur le contenu, ce qui aide à la concentration.
Au niveau faiblesse ?
Je ne suis pas revenu à claws-mail, c'est une bonne partie de la réponse
Il a été assez long à configurer, le temps de faire le tour, chercher des infos sur le net, principalement en anglais. Le gros avantage est que le muttrc que j'ai personnalisé est un gage de tranquilité : un fichier de configuration me permet de retrouver mes marques rapidement (en cas de réinstallation par exemple). La configuration des rc peut sembler lourde et complexe. Ce n'est pas faux. Mais cela vous oblige à vous plonger dans l'application et donc de mieux la connaître. Au fil des usages, on peaufine, on ajoute, on modifie et on finit par avoir exactement ce que l'on souhaite. Et comme je suis en apprentissage, cet effort fait partie du plaisir !
Alors bien sur, j'ai encore bien des choses à apprendre pour utiliser au mieux cet outil. Cette présentation n'est donc absolument pas une référence, voyez la comme un bilan (positif) de mes premiers pas. Je vous tiendrais au courant sur ce blog s'il y a des choses importantes que j'aurais oublié.