Client mail Mutt

Mutt est un client mail en mode texte qui peut s'avérer pourtant très puissant. Beaucoup de client mail en mode graphique sont lourds et offrent des fonctionnalités pas toujours nécessaires (calendrier, etc…). Mutt se contente de pouvoir recevoir et envoyer des mails. Pour l'installer sur Debian, on installe une version patchée ainsi que w3m pour avoir un rendu des mails HTML.

aptitude install mutt mutt-patched w3m

La configuration de Mutt se fait via le fichier ~/.muttrc on peut aussi poser des extras de configuration dans le répertoire ~/.mutt. La configuration ci-dessous détaille la manière d'utiliser Mutt avec Gmail.

Fichier .muttrc :

# Account information
set realname = "Le nom à utiliser"

# IMAP settings
set ssl_use_sslv3
set imap_user = "user_gmail"
set imap_pass = "password_gmail"
set imap_keepalive = 120
set timeout = 60
set mail_check = 90

# Account settings
set smtp_url = "smtp://user_gmail@smtp.gmail.com:587/"
set smtp_pass = "password_gmail"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set postponed = "+[Gmail]/Drafts"
set record = "+INBOX"
set mbox = "!"
set trash = "imaps://imap.gmail.com/[Gmail]/Trash"

# Caching
set header_cache = ~/.mutt/cache/headers-gmail
set message_cachedir = ~/.mutt/cache/bodies-gmail
set certificate_file = ~/.mutt/cache/certificates-gmail

# General settings
set check_mbox_size = yes
set move = no
set confirmappend = no
set copy = no
set delete = yes
set index_format = "%5C %Z %[%d%m%y %H%M] %-15.15F %3c %s"
bind index "^" imap-fetch-mail
set editor = 'vim + -c "set textwidth=72" -c "set wrap"' # -c "set nocp" -c "?^$"'
set query_command = "abook --mutt-query '%s'"
macro generic,index,pager \ca "<shell-escape>abook<return>" "launch abook"
macro index,pager A "<pipe-message>abook --add-email<return>" "add the sender address to abook"

# GPG Setup
source ~/.mutt/crypto

# Default Identity
folder-hook . "set from = 'user_gmail@gmail.com'"
folder-hook . "my_hdr Reply-To:"
folder-hook . "set signature='~/.mutt/signature-gmail'"

# View settings
set markers = no # don't put '+' at the beginning of wrapped lines
set pager_index_lines= 5 # how large is the index window?
set sort = 'threads'
set sort_aux = 'reverse-threads'
auto_view text/html

# Colors
color normal	  white default
color attachment  brightyellow default
color hdrdefault  cyan default
color indicator   brightyellow red
color markers	  brightred default
color quoted	  green default
color signature   cyan default
color status	  brightgreen blue
color tilde	  blue default
color tree	  red default
#color header	  brightgreen default ^From:
#color header	  brightcyan default ^To:
#color header	  brightcyan default ^Reply-To:
#color header	  brightcyan default ^Cc:
#color header	  brightblue default ^Subject:
#color body	  brightred default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+
#color body	  brightblue default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+

# Shortcuts to mailboxes
bind editor <space> noop
macro index gi "<change-folder>=INBOX<enter>" "Go to inbox"
macro index gd "<change-folder>=Debian<enter>" "Go to Debian mail"
macro index gg "<change-folder>=GSoC<enter>" "Go to GSoC mail"
macro index gG "<change-folder>=GSoC Jigsaw<enter>" "Go to Jigsaw mail"
macro index gj "<change-folder>=java-gnome<enter>" "Go to java-gnome mail"
macro index go "<change-folder>=OpenJDK<enter>" "Go to OpenJDK mail"
macro index ga "<change-folder>=StartCom<enter>" "Go to StartCom mail"
macro index gs "<change-folder>=[Gmail]/Messages envoyés<enter>" "Go to sent mail"
macro index gS "<change-folder>=[Gmail]/Spam<enter>" "Go to spam"
macro index gt "<change-folder>=[Gmail]/Corbeille<enter>" "Go to trash"

# Keyboard bindings to functions
bind index X  "purge-message" # Purge messages bypassing Gmail/Trash

# Header stuff
ignore "Authentication-Results:"
ignore "DomainKey-Signature:"
ignore "DKIM-Signature:"
hdr_order Date From To Cc
ignore *
unignore from: date subject to cc
unignore x-mailing-list: posted-to:
unignore x-mailer:

#Fcc hooks
fcc-hook "~l" "/dev/null"
fcc-hook "~C user_gmail@gmail.com" "/dev/null"

# Save hooks
save-hook . "=[Gmail]/All Mail"

###########
########### USE ONLY WITH MUTT-PATCHED OR COMMENT OUT FROM HERE TO END OF FILE
###########
#
# set up the sidebar, default not visible
set sidebar_width=22
set sidebar_visible=yes
set sidebar_delim=' '
set sidebar_sort=no

# which mailboxes to list in the sidebar
mailboxes =INBOX ="Debian" ="GSoC" ="GSoC Jigsaw" ="java-gnome" ="OpenJDK" ="StartCom" ="[Gmail]/Messages envoyés" ="[Gmail]/Spam" ="[Gmail]/Corbeille"

# color of folders with new mail
color sidebar_new brightgreen default

# ctrl-n, ctrl-p to select next, prev folder
# ctrl-o to open selected folder
bind index \CP sidebar-prev
bind index \CN sidebar-next
bind index \CO sidebar-open
bind pager \CP sidebar-prev
bind pager \CN sidebar-next
bind pager \CO sidebar-open

# I don't need these. just for documentation purposes. See below.
# sidebar-scroll-up
# sidebar-scroll-down

# ctrl-b toggles sidebar visibility
macro index \CB '<enter-command>toggle sidebar_visible<enter>'
macro pager \CB '<enter-command>toggle sidebar_visible<enter>'

#
# Mario Holbe suggests:
# macro index b '<enter-command>toggle sidebar_visible<enter><refresh>'
# macro pager b '<enter-command>toggle sidebar_visible<enter><redraw-screen>' #

Si l'on utilise une clé GPG pour chiffrer ou déchiffrer des mails, on met dans le fichier ~/.mutt/crypto le contenu suivant :

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="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -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"

# specify the uid to use when encrypting/signing
set pgp_sign_as=uid_of_gpg_key_to_use

# this set the number of seconds to keep in memory the passpharse used to encrypt/sign
# the more the less secure it will be
set pgp_timeout=60

# it's a regexp used against the GPG output: if it matches some line of the output
# then mutt considers the message a good signed one (ignoring the GPG exit code)
set pgp_good_sign="^gpg: Good signature from"

# mutt uses by default PGP/GPG to sign/encrypt messages
# if you want to use S-mime instead set the smime_is_default variable to yes

# automatically sign all outcoming messages
set crypt_autosign
# sign only replies to signed messages
set crypt_replysign

# automatically encrypt outcoming messages
set crypt_autoencrypt=no
# encrypt only replies to signed messages
set crypt_replyencrypt=yes
# encrypt and sign replies to encrypted messages
set crypt_replysignencrypted=yes

# automatically verify the sign of a message when opened
set crypt_verify_sig=yes

Certaines personnes (beaucoup ?) envoient des mails au format HTML. Mutt étant un client en mode texte, il faut passer par w3m (navigateur web en mode texte) pour faire le rendu des mails HTML. Pour cela, il faut créer un fichier ~/.mailcap et y mettre ceci :

text/html;      w3m -I %{charset} -dump %s; nametemplate=%s.html; copiousoutput

Enfin pour rajouter automatiquement une signature à la fin des mails, il faut simplement mettre le contenu de la signature dans le fichier ~/.mutt/signature-gmail.