Blog

Purger la mailq de postfix selon une regexp

Écrit le 02 03 2013 par Kévin MET _

Un petit truc rapide pour supprimer les mails en provenance et en direction d'un domaine. C'est un petit script perl qui va nous permettre de faire ça très simplement :


#!/usr/bin/perl
$REGEXP = shift || die "Vous devez fournir une regexp en argument.";

@data = qx</usr/sbin/postqueue -p>;
for (@data) {
	if (/^(\w+)(\*|\!)?\s/) {
		$queue_id = $1;
	}
	if($queue_id) {
		if (/$REGEXP/i) {
			$Q{$queue_id} = 1;
			$queue_id = "";
		}
	}
}

open(POSTSUPER,"|postsuper -d -") || die "Impossible d'ouvrir postsuper. Est-ce que vous êtes root ?" ;

foreach (keys %Q) {
  print POSTSUPER "$_\n";
};
close(POSTSUPER);

Ensuite on le rend exécutable :


# chmod +x delete.pl

Et il ne reste plus qu'à l'éxécuter avec en paramètre le domaine qu'on veut virer de sa mailq. Exemple avec spam.fr :


# ./delete.pl spam.fr

Ceci supprimera de la mailq les mails en provenance et en direction du domaine spam.fr. On peut évidemment utiliser une adresse complète ou tout autre chose du moment que c'est une regexp.

Enjoy 😉

♥ Partage sur tes réseaux sociaux ♥
Kévin MET
Kévin MET

Auteur de ce blog et gérant de la société MNT-TECH, je publie sur ce blog lorsque le temps me le permet et lorsqu'un sujet qui me parait intéressant n'a pas encore été abordé en français. Toutes les informations techniques présentes sur cette page peuvent être réutilisées moyennant le fait de citer la source.