Script para eliminar correo de la cola de Postfix

Muchas veces nos encontramos con correos en la cola del postfix de los que queremos deshacernos, bien sea porque está ahí por error, por un ataque de spam o cualquier otra razón.

En este caso, os va a venir muy bien este pequeño script que os dejo aquí. Como argumento solo hay que pasarle parte del nombre del destinatario o del origen, y él solito se encarga de hacer toda la magia.

Sin mas preámbulos, este es el script:

#!/usr/bin/perl

$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";

@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 "couldn't open postsuper" ;

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

Solo hay que guardarlo, darle permisos de ejecución, y ejecutarlo:

borrar_correo.pl mail@ejemplo.com

Esto elimina de la cola de correo todos aquellos emails cuyo origen o destinatario sea «mai@ejemplo.com».

Fácil y económico, ¿verdad?