# ~/.muttrc
# Fichier de configuration de Mutt
# Formation Debian GNU/Linux par Alexis de Lattre
# http://formation-debian.via.ecp.fr/

# Plus d'information dans "man muttrc"

#
# 1. Configuration générale
#

# Le contenu du champ From est généré à partir du nom complet etde
# l'adresse électronique de l'expéditeur, généralement de la forme :
# From: Prénom Nom <adresse_e-mail>
# L'adresse électronique d'expéditeur (par défaut, le contenu de la
# variable d'environnement EMAIL ou le login@hostname)
set from="robert.dupont@laposte.net"
# Le nom complet d'expéditeur (par défaut, le champ nom complet de
# /etc/passwd)
set realname="Robert Dupont"
# Mutt doit générer un en-tête from. Contraitement à ce que raconte
# le manuel, c'est désactivé par défaut !
set use_from

# Liste de toutes mes adresses e-mail (ce paramètre est notamment pris
# en compte quand on fait un "group reply")
alternates robert.dupont@laposte.net rob@truc.fr roberto@fun.org

# Lorsqu'on répond à un message, utiliser l'adresse à laquelle l'original
# a été envoyé comme From:.
set reverse_name

# Nom de domaine du système où tourne Mutt.
# Il est utilisé pour :
# - compléter les adresses électroniques incomplètes (sans @domaine) ;
# - générer les en-têtes Message-Id.
# Par défaut : le contenu de /etc/mailname.
set hostname=laposte.net
# Doit-on compléter les adresses incomplètes avec ce domaine ?
set use_domain

# Le fichier contenant la signature
set signature=~/.signature

# Le fichier contenant les alias
set alias_file=~/.aliases
source ~/.aliases

# Conseillé pr que "isync" marche bien avec les messages effacés
#set maildir_trash


#
# 2. Configuration des mailboxes
#

# Le répertoire qui contient les mailboxes
set folder=~/mail

# On utilise le format "Maildir" pour les mailbox
set mbox_type=Maildir

# Pour avoir la liste des mailboxes, on demande à find(1) de lister
# les mboxes et les Maildirs, c'est-à-dire :
# - les répertoires parents des répertoires nommés 'cur' ;
# - les fichiers réguliers non enfants de répertoires nommés 'cur',
#   'new' ou 'tmp' (sinon, ça listerait comme boîtes aux lettres
#   tous les messages contenus dans les Maildirs).
# Si vous ne comprenez pas comment ça marche, essayer d'exécuter cette
# commande, modifiez-la pour voir tout en regardant le manuel de find(1).
# :-)
mailboxes `find ~/mail -type d -name 'cur' -printf '%h ' -prune -o -type d -name 'new' -prune -o -type d -name 'tmp' -prune -o -type f -printf '%p '`

# Ne pas lister les boîtes de messages envoyés et ajournés
unmailboxes '+sent' "+postponed"

# Mailbox contenant les mails envoyés (chemin relatif)
set record=+sent

# Mailbox contenant les mails ajournés (chemin relatif)
set postponed=+postponed

#
# 3. Options
#

# Editeur de texte pour la rédaction des messages
set editor="vim -b -c 'set textwidth=72' +/^$ ++1"

# Jolis titres dans son terminal
set xterm_set_titles=yes
set xterm_title="Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?"

# Ne pas afficher les headers...
ignore *
# sauf un certain nombre que l'on énumère ici
unignore From To Cc Subject Date Reply-To
unignore X-Mailer User-Agent
unignore X-Approved-By List-Id X-List
unignore Disposition-Notification-To Return-Receipt-To

# Ordre d'affichage des headers
hdr_order Date From To Cc Subject

# Utilise l'adresse figurant dans le champ Reply-To: quand on répond
set reply_to

# Locale à utiliser
set locale=fr_FR.UTF-8

# Codages à utiliser
set charset=utf-8
set send_charset=utf-8

# Format de la date à afficher avant les citations quand on répond
set date_format="%A %d %B %Y à %I:%M:%S%p"

# Les texte à afficher avant les citations quand on répond
set attribution="Le %d, %n a écrit :"

# Répond sans demander confirmation du destinataire et du sujet
# avant de passer à l'édition du message
set fast_reply

# Inclu le message original dans la réponse sans demander confirmation
set include=yes

# Ne pas aller au message suivant quand on a atteint la fin du
# message précédent et que l'on invoque la fonction "next page"
set pager_stop

# Afficher 6 lignes de la liste des messages en haut de l'écran
# quand on lit un mail
set pager_index_lines=6

# Méthode de tri par défaut = par thread
folder-hook . set sort=threads
# Les thread sont triés par date
folder-hook . set sort_aux=date
# La mailbox "sent" est triée par date
folder-hook "sent" set sort=date

# Affiche le nom d'expéditeur contenu dans ~/.aliases
# si l'adresse e-mail se trouve dedans
set reverse_alias

# Tenir compte du header "Mail-Followup-To"
set honor_followup_to

# Pas de beep en cas d'erreur
unset beep

# Pas de beep quand un nouveau message est arrivé
unset beep_new

# Ne pas demander confirmation avant d'effacer un message en quittant
# une mailbox (sinon, mettre "ask-yes")
set delete=yes

# Editer les headers quand on compose le message
set edit_hdrs

# Ne se fie pas au champ "Subject" pour construire les threads
# mais uniquement aux champs "In-Reply-To" et "References"
set strict_threads

# Ne marque pas un nouveau message comme "vieux" quand on quitte la mailbox
# dans laquelle il se trouve
unset mark_old

# Pas de marker pour les lignes wrappées
unset markers

# Faire-suivre un message en l'attachant au format MIME
set mime_forward

# Format de sujet pour les messages que l'on fait suivre
set forward_format="[%a: %s]"

# Format de l'index des messages
set index_format="%4C %Z %{%b %d} %-15.15F (%4l) %s"

# Adapte l'adresse mail dans le From en fonction du destinataire (décommenter)
#send-hook '~t ^.*@via\.ecp\.fr$' 'my_hdr From: Robert Dupont <robert.dupont@via.ecp.fr>'
#send-hook '~t ^toto@free\.fr$' 'my_hdr From: Robert Dupont <robert.dupont@free.fr>'

#
# 4. Binding des touches
#

# Generic
bind generic    \eOH        first-entry
bind generic    \eOF        last-entry
bind generic    <up>        previous-entry
bind generic    <down>      next-entry
bind generic    <pageup>    previous-page
bind generic    <pagedown>  next-page


# Index
bind index      s           save-message
bind index      \t          next-unread
bind index      b           bounce-message

# Pager
bind pager      e           exit
bind pager      s           save-message
bind pager      \t          next-unread
bind pager      b           bounce-message
bind pager      \eOH        top
bind pager      \eOF        bottom
bind pager      n           search-next
bind pager      <up>        previous-line
bind pager      <down>      next-line

# Macros
macro index     G           c?\t
macro pager     G           c?\t
macro generic   <f2>        "!mailq"
macro pager     <f2>        "!mailq"
macro generic   <f3>        "!postqueue -f"
macro pager     <f3>        "!postqueue -f"
macro generic   <f4>        "!fetchmail"
macro pager     <f4>        "!fetchmail"
# Pour les utilisateurs de "isync", en remplacement des deux lignes
# précédentes
#macro generic   <f4>        "!isync -a"
#macro pager     <f4>        "!isync -a"


#
# 5. Les couleurs
#

# Couleur de la barre de sélection
color indicator   brightyellow    red
# Couleur des messages d'erreur
color error       brightred       default
# Couleur des indicateurs en haut et en bas de la fenêtre
color status      brightwhite     blue
# Couleur de l'arbre des threads
color tree        brightmagenta   default

# Couleur des headers
color header      white           default "^date:"
color header      brightgreen     default "^from:"
color header      brightwhite     default "^to:"
color header      brightblue      default "^cc:"
color header      brightyellow    default "^subject:"
color header      cyan            default "^resent-"
color header      cyan            default "^x-"
color header      cyan            default "^User-Agent"

# Couleur du texte cité
color quoted      green           default
# Couleur de la signature
color signature   brightred       default
# Couleur des URLs
color body        magenta         default "(ftp|http|gopher|wais|file)://[^ ()<>,]+"
# Couleur des adresses e-mail
color body        magenta         default "[-a-z_0-9.]+@[-a-z_0-9.]+"
# Couleur des smileys
color body        brightyellow    default "[:]+[-^o]?[])>}D]+"
color body        brightgreen     default "([:;]+[-^o]?[Pp]+)|([;][-^o]?[])>}D]+)"
color body        brightred       default "[:;]+[-^o]?[[(<{|/\\]+"