J'utilise thunderbird comme client mail et je voulais une notification vraiment visible et si possible légère. J'ai trouvé une solution bien pratique utilisant fetchmail pour vérifier l'arrivée de nouveaux messages, cron pour le lancer à intervalle régulier et zenity pour la notification proprement dite. Cette méthode est totalement indépendante de votre client mail.
Si cela vous intéresse, voici la marche à suivre :
Installer fetchmail et zenity (ce dernier est je crois installé par défaut) :
sudo apt-get install fetchmail zenity
Editer ou créer le fichier ~/.fetchmailrc pour donner accès à votre serveur mail.
Par exemple le mien - j'ai une adresse sur yahoo - ressemble à :
defaults
proto pop3
poll yahoo
proto pop3
via pop.mail.yahoo.fr
user "votre_login"
pass "votre_mot_de_passe"
options keep
A ce stade vous pouvez faire un petit essai pour vérifier le bon fonctionnement de fetchmail en tapant dans un terminal la commande :
fetchmail -c
qui devrait vous renvoyer quelque-chose du genre :
X messages (Y déjà vus) pour "votre_login" dans "votre_serveur_mail" (6978342 octets).
Ça marche? Passons à la suite.
On crée un tout petit script qui demande à fetchmail de vérifier l'arrivée de message(s) non-lu(s) et appelle zenity le cas échéant. Ouvrez votre éditeur préféré et copiez-y le script suivant :
#!/bin/bash
fetch=`fetchmail -c|grep message` ; \
fetch=$fetch ; \
nonlu=`echo $fetch |awk -F'[ ()]' '{print $1 - $4}'` ; nonlu=$nonlu ; \
if [ "$nonlu" = "0" ]
then exit
else zenity --question --text "$nonlu nouveau(x) mail(s)
Le(s) lire maintenant ?" && mozilla-thunderbird || exit
fi
Enregistrez-le par exemple dans votre home sous le nom .notification_mails (le point avant le rend "caché") puis rendez-le exécutable en tapant dans une console (si vous avez suivi mon exemple pour le nom du script) :
chmod +x ~/.notification_mails
Notez sur l'avant dernière ligne le "&& mozilla-thunderbird". Zenity ouvrira thunderbird si vous cliquez sur "Ok". A remplacer par le nom de l'exécutable de votre client mail préféré!
Il ne reste plus qu'à demander à cron d'exécuter ce script à intervalle régulier.
Taper dans une console :
crontab -e
et copiez les lignes suivantes (toujours pour suivre mon exemple; à adapter suivant le nom et le chemin du script. La première ligne est nécessaire pour que zenity affiche le message) :
DISPLAY=:0.0
*/3 * * * * ~/.notification_mails
Enregistrez et fermez (ctrl+o, envoi, ctrl+x avec l'éditeur nano utilisé par défaut).
Toutes les trois minutes, fetchmail vérifiera la présence de mails non-lus. Si vous êtes à la minute près, changer donc le 3 en 1 😉 !
Voilà, tout est en place. Le seul défaut de cette méthode est qu'elle fonctionne parfaitement 😃 : je ne peux désormais plus sortir une excuse du genre "j'ai pas vu que tu m'avais envoyé un mail" en cas de sollicitation importune...
Postez vos remarques, commentaires et problèmes éventuels.