... je me rappelle avoir écrit un script permettant de tester le nombre de mails contenu dans une mailbox (de type mailbox). En reprenant ce script et en le modifiant un peu, j'obtiens un petite notification chaque fois que je reçois un nouveau message.

You have got a message

Voici le script

#!/usr/bin/perl -w 
# Biff mailboxe and notify
#
# Script for checking mailbox (mbox format) and notify result. 
#
# Require: libnotify 
#
# Usage:
# 	notify-mail MBOX
# 	MBOX : mbox file (/var/spool/user or anything else)
#
# Author: Pierre BETTENS, <pb@namok.be>
# Thanks to Moshe Kaminsky <kaminsky@math.huji.ac.il>, 
# Version: 0.1
# Copyright: Use it ... 
#
 
use strict ; 
# Import for lock file
use Fcntl ':flock';   
 
# Config
my $usage =  "Usage : notify-mail <mboxfile> 
" ;
my $icon_file = "/elsewhere/email_icon.jpg";
 
 
my $mboxfile ; 		
$mboxfile = shift or die $usage ; 
 
open MBOX_FILE, $mboxfile
	or die "Failed to open folder: $mboxfile" ; 
# Ok, I count mails
# Thanks to Moshe Kaminsky <kaminsky@math.huji.ac.il>, 
# I stole him the idea of "Status: R". 
my $mails = 0 ; 
my $oldmails = 0 ;
flock(MBOX_FILE,LOCK_EX); 	# lock 
while (<MBOX_FILE>) {
    $mails++ if /^From /o;
    $oldmails++ if /^Status: R/o;
}
flock(MBOX_FILE,LOCK_UN); 	# unlock 
close MBOX_FILE;
# Work is done ... notify
my $nmessages = $mails-$oldmails;
if ( $nmessages > 0 ) {
    my $message = "You have got " 
        . $nmessages . " message 
(in " . $mboxfile .")";
    # I must add export DISPLAY because cron don't know my display :-(
    `export DISPLAY=:0.0 \n        && notify-send "Notify mail" "$message" -i $icon_file`;
}

J'apporte une petite précision. Je ne reçois une de notification dès que je reçois un mail mais je reçois une notification chaque fois que je décide de regarder si j'ai reçu un mail et ceci tant que le mail reste non lu ^^. Je dois donc ajouter mon script comme tache cron (Qu'est-ce ?). J'ajoute donc ma tâche afin qu'elle s'exécute toutes les 2 minutes[1].

$ crontab -e
*/2 * * * * /home/pit/bin/notify-mail /var/spool/mail/pit

Et bam ! Mon script ne fonctionne plus. Une petite recherche plus tard et tout roule. Il faut spécifier à cron quel display utiliser[2].

Enjoy ...

À lire également

Notes

[1] Ce qui peut être assez intrusif ...

[2] D'où le export ajouté dans le script