J'utilisais KMail jusqu'alors pour lire mon courrier, cependant le manque de raccourcis claviers et de souplesse de celui-ci m'ont fait passer à un superbe MUA qu'est Mutt.

Introduction
Tout d'abord il faut oublier ce que vous savez sur les clients mails tout en un. En effet, Mutt part du principe qu'il doit assurer uniquement la fonction minimale d'un client mail, c'est à dire afficher les mails. Il passe par d'autres programmes pour récupérer les mails, les envoyer, les filtrer, les écrire, etc.
Cependant, dans les dernières versions, il est tout de même possible de l'utiliser pour faire ces actions (SMTP POP3 et IMAP), mais nous allons faire avec des outils externes, c'est plus drôle.
Personnellement j'ai choisi les programmes suivants :
- postfix pour envoyer les mails en relayant au serveur SMTP de mon FAI. L'intérêt pour moi est qu'il me sert également comme serveur MX pour lmes domaines afin de stocker dans ma boite système.
- fetchmail pour récupérer les mails POP de mes différents comptes.
- procmail pour trier mes mails dans les différents dossiers.
Il est à noter enfin que tout (y compris mutt) se trouve sur le serveur pour pouvoir accéder à ma boite mail depuis n'importe où.
Compilation
J'ai choisi de recompiler la dernière version à cette date de Mutt (1.5.17) afin d'appliquer un patch permettant d'avoir une sidebar avec la liste des dossiers, ce qui simplifie l'utilisation.
J'ai activé après les options suivantes pour la compilation :
$ ./configure --with-sasl --with-slang --enable-hcache --enable-imap --with-ssl
Ainsi que vous pouvez le voir, j'ai activé le support d'IMAP afin de jouir des fonctionnalités de celui-ci pour mon compte IMAP.
Maildir
Pour récupérer les mails que vous aviez avec votre ancien client mail, si ce dernier supportait le format Maildir il est aisé de récupérer le répertoire et de l'utiliser. J'ai mis le miens en tant que ~/Mail/.
Petite subtilité pour KMail, la gestion des sous répertoires est un peu chiante, en effet ils sont dans ~/Mail/.inbox.directory/, pareil pour les sous sous répertoires, etc. Personnellement j'ai tout déplacé afin que chaque répertoire soit directement dans ~/Mail/. Ainsi j'ai :
3 rom1@sunigav ~/Mail $ ls
cache ircu maa-commits sent-mail Taches
CoderZ libcaca mail.sh server.rdl.fr Tâches
Gunther libodbc++ MenAreAnts Spam Wormux
inbox listen.sh Nekeme
Nous verrons l'intérêt des scripts mail.sh et listen.sh plus tard.
Postfix
Rien de spécial à faire, installez le et configurer (simple, personnellement c'est l'installeur Debian qui m'a posé les bonnes questions).
Fetchmail
Créez le fichier ~/.fetchmailrc et remplissez le avec vos comptes à la manière :
set postmaster "rom1"
set bouncemail
set no spambounce
set properties ""
poll pop.pro.proxad.net with proto POP3
user 'ident' there with password 'pass' is 'rom1' here ssl
poll pop.1and1.fr proto POP3
user 'ident' there with password 'pass' is 'rom1' here ssl
...
N'oubliez pas de chmod 600 le fichier, en effet il contient vos mots de passe en clair !
Lancez maintenant fetchmail en démon en compte utilisateur avec la commande suivante :
$ fetchmail -d 30 -a -m "/usr/bin/procmail -Y -d %T"
Fetchmail va récupérer les mails toutes les trente secondes et va les passer à procmail.
Procmail
Créez le fichier ~/.procmailrc et remplissez le de la manière suivante :
# caractère verbeux de procmail ; mettre 'yes' permet d'avoir des messages
# supplémentaires
VERBOSE=no
SHELL=/bin/sh
# chemin d'accès aux exécutables ; en mettre le minimum, pour n'accéder qu'aux
# programmes indiqués dans le fichier de configuration
PATH=/bin:/usr/bin:/usr/local/bin
# répertoire où seront stockés les mails ; s'assurer que votre MUA sait y
# accéder aussi
MAILDIR=/home/rom1/Mail
# si procmail n'arrive pas à délivrer le courrier, cette boîte sera utilisée
# en dernier ressort : il vaut mieux définir cette variable !
ORGMAIL=/home/rom1/emergency-inbox
# boîte de réception par défaut
DEFAULT=$MAILDIR/inbox/new
# fichier de log de procmail ; si vous définissez cette variable,
# procmail gardera une trace de son exécution dans le fichier
# indiqué. À consulter périodiquement !
LOGFILE=$MAILDIR/.procmail.log
# Fichiers de règles à inclure
INCLUDERC=/home/rom1/.procmail/spam.rc
INCLUDERC=/home/rom1/.procmail/ml.rc
Les fichiers de règles doivent juste contenir les règles les unes à la suite des autres. Voici un exemple simple de quelques règles :
:0
* ^Subject: .*libcaca.*
$MAILDIR/libcaca/new
:0
* ^Subject: .*Your partner will worship you for it.*
$MAILDIR/Spam/new
:0
* ^To: .*menareants.*
$MAILDIR/MenAreAnts/new
Il faut tout d'abord écrire une première ligne avec :0 (ajouter à cela quelques flags si nécessaire), ensuite une ou plusieurs lignes commençant par * contenant une regexp, et enfin l'action à mener dans le cas où toutes les regexp matchent. Notez que là c'est très basique, les possibilités sont immenses. Par exemple dans un avenir proche je compte le coupler avec spamassassin.
Voir la doc de postfix.
Mutt
Le plus chiant reste la configuration de Mutt. J'ai personnellement été fouillé de tous les côtés, pompé des bouts de configurations d'autres personnes, lu la doc, etc. C'est tellement paramétrable que c'est pas facile d'y arriver tout seul au début je pense.
Ma config (malgré sa taille) reste basique et va probablement évoluer au fur et à mesure de mon utilisation.
Voici les différents fichiers :
- .muttrc - Configuration principale qui contient les options générales
- gpg.rc - Configuration GPG. En theorie il n'y a que la clef à changer dans pgp_sign_as
- mailboxes.rc - Contient les définitions des différentes boites, ainsi que du compte IMAP. Ainsi qu'on peut le voir, je ne l'ai pas encore configuré, mais les paramètres commentés peuvent être utile comme base
- theme.rc - Thème de mutt
Je ne commenterai pas plus que ça, après tout la doc de Mutt est très complète là dessus.
En tous cas relisez chaque paramètre et personnalisez, ne prenez pas ça comme une configuration fonctionnelle. Mutt a la particularité justement que personne n'aura exactement les mêmes besoins et donc la même conf.
Indicateur de nouveaux mails
Il est toujours très plaisant d'avoir une indication des nouveaux mails sur une partie visible en permanence de son bureau. La subtilité ici est que Mutt est lancé sur une autre machine.
La solution que j'ai trouvé est super crade, mais elle marche, ce qui est déjà ça.
L'idée est d'écouter un port côté serveur et de balancer le nombre de nouveaux mails et de couper la connexion. Côté client il suffit donc de se connecter à ce port pour récupérer la valeur.
Voici donc l'uniligne ~/Mail/listen.sh :
#!/bin/sh
while [ 1 ]; do socat EXEC:"/home/rom1/Mail/mail.sh" TCP4-LISTEN:4875,reuseaddr; done
Comme vous pouvez le voir, on peut faire plus sexy. Il exécute le script ~/Mail/mail.sh dont le contenu est le suivant :
#!/bin/sh
find ~/Mail/ | grep new | grep -v "new$" | grep -v Spam | wc -l
La séparation est nécessaire car socat exécute un fichier et pas des commandes (utilisation de execvp() et non de system()). De toute façon je trouve pas ça plus mal de séparer les deux, ça permet de réutiliser mail.sh ailleurs.
Vous pouvez constater que mail.sh est carrément dégueulasse, mais bon on fait avec. Notez le grep -v Spam qui permet de ne pas compter les éventuels nouveaux mails qui se situent dans le dossier Spam.
Côté client il suffit de faire exécuter la commande suivante :
socat TCP4:sunigav:4875 STDOUT
Merci en tous cas à lodesi pour l'astuce du socat car je connais aussi mal bash que les chiens qui lechent leur gode.
Conclusion
Voilà un super Mutt fonctionnel, qui envoie, reçoit et trie les mails, lit avec elinks les mails HTML (malheureusement il y en a) et m'affiche un indicateur dans la statusbar de ion3 :

Pensez à bien configurer mailcap pour les applications à utiliser.
Commentaires récents