Voici un petit script en Perl permettant de supprimer un message en attente
dans la file. Il est imparfait car il ne gère pas les CC:.
#! /usr/bin/perl -w
# killmail :
# usage : killmail id-mail
#
# supprime de la file d'attente de sendmail le message identifie par
# id-mail tel qu'il est affiche par la commande mailq
#
#
# TODO : gerer le probleme de la suppression des messages avec CC pour
# ne supprimer qu'un message parmi plusieurs.
#
use strict;
use English;
my $SPOOL = "/var/spool/mqueue"; # file d'attente
if ($EFFECTIVE_USER_ID != (getpwnam("root"))[2])
{
print <STDERR>, "Vous devez etre root pour executer cette commande...\n";
exit(3);
}
if (!defined($ARGV[0])) {
print <STDERR>, "Usage : killmail id-mail (voir mailq)\n";
exit(1);
}
my $df = "$SPOOL/df$ARGV[0]";
my $qf = "$SPOOL/qf$ARGV[0]";
print ("Etes-vous sur de vouloir supprimer le message $ARGV[0] ? (o/n) : ");
if (<STDIN> =~ /[Oo]/) { # oui...
unlink($df, $qf);
exit(0);
}
else
{
print <STDERR>, "Suppression de $ARGV[0] annulee par l'utilisateur\n";
exit(2);
}