Table des matières
Scripts pour supprimer des emails de la queue postfix
Suppression en fonction de l'adresse mail
Voici un script qui permet de supprimer des emails de la queue Postfix en fonction de l'email de destination ou source.
- Créer le script avec la commande :
# vi /usr/bin/pfdel
- Copier le contenu du script pfdel :
#!/usr/bin/perl -w # # pfdel - deletes message containing specified address from # Postfix queue. Matches either sender or recipient address. # # Usage: pfdel <email_address> # use strict; # Change these paths if necessary. my $LISTQ = "/usr/sbin/postqueue -p"; my $POSTSUPER = "/usr/sbin/postsuper"; my $email_addr = ""; my $qid = ""; my $euid = $>; if ( @ARGV != 1 ) { die "Usage: pfdel <email_address>\n"; } else { $email_addr = $ARGV[0]; } if ( $euid != 0 ) { die "You must be root to delete queue files.\n"; } open(QUEUE, "$LISTQ |") || die "Can't get pipe to $LISTQ: $!\n"; my $entry = <QUEUE>; # skip single header line $/ = ""; # Rest of queue entries print on # multiple lines. while ( $entry = <QUEUE> ) { if ( $entry =~ / $email_addr$/m ) { ($qid) = split(/\s+/, $entry, 2); $qid =~ s/[\*\!]//; next unless ($qid); # # Execute postsuper -d with the queue id. # postsuper provides feedback when it deletes # messages. Let its output go through. # if ( system($POSTSUPER, "-d", $qid) != 0 ) { # If postsuper has a problem, bail. die "Error executing $POSTSUPER: error " . "code " . ($?/256) . "\n"; } } } close(QUEUE); if (! $qid ) { die "No messages with the address <$email_addr> " . "found in queue.\n"; } exit 0;
- Modifier les droit sur le fichier pour le rendre executable :
# chmod +x /usr/bin/pfdel
- Usage :
# pfdel email@domaine.com
Suppression en fonction d'un mot clé
while [1];do for i in $( postqueue -p |head -n 500 | grep -i <motclé> |awk '{print $1}'|sed s/\*// );do postsuper -d $i; done; done
motclé: exemple “je suis un mot clé” changer le “500” selon les besoins