Jugando con mailq
Con un poco de paciencia, conocimientos mínimos de bash y usando tanto mailq como postsuper (Postfix) podremos facilitar el flujo de correos encolados. Vamos a ello. Primero miramos el número de correos que tenemos en cola. Esta operación se puede hacer de diversos modos:
# mailq | tail -n1
-- 70865 Kbytes in 1654 Requests.
# mailq | grep Requests
-- 70865 Kbytes in 1654 Requests.
Para ver una descripción algo más detallada de los correos (id, fecha, origen, destino...) podemos usar mailq sin más modificadores, obviamente el resultado será un chorizo tremendo si hay muchos Requests. Probemos a ver las 20 primeras lineas:
# mailq | head -n20
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
9A792414C6B* 30256 Fri Oct 26 11:41:30 tequilasunrise270@liberotta.it
alguien@server
387924150E9* 41997 Fri Oct 26 11:26:53 1784@lavoca.es
mas@server
1AB8D4141C3* 1163 Fri Oct 26 11:29:51 AIMEE-Jenksya@ariastone.com
otrouser@server
D5808414C6F* 22998 Fri Oct 26 11:41:35 sateve@zongati.com
alguien@server
81983414DDC* 518 Fri Oct 26 11:28:13 otrouser@server
alguien@server
274104137A6* 170349 Fri Oct 26 11:28:19 tequilasunrise270@liberotta.it
mas@server
CCC684141CC* 38295 Fri Oct 26 11:29:20 sateve@zongati.com
Podemos comprobar que algunos de los correos en cola son correctos, otros spam o correo no deseado. Como trataremos de facilitar la tarea del servidor, podemos borrar los que veamos como no deseados.
Pongamos que tequilasunrise270@liberotta.it es uno de los correos a eliminar, nos fijamos en su ID (primer campo): 9A792414C6B y lo referenciamos con postsuper -d:
# postsuper -d 9A792414C6B
postsuper: 9A792414C6B: removed
postsuper: Deleted: 1 message
#
Imaginemos que tequilasunrise270@liberotta.it nos ha estado inundando a correos en casi todas las cuentas del servidor, en vez de ir buscando el ID de una en una:
# mailq | grep tequilasunrise270@liberotta.it
# for i in `mailq | grep tequilasunrise270@liberotta.it | cut -f1 -d*`; do postsuper -d $i; done
postsuper: 769024147F2: removed
postsuper: Deleted: 1 message
postsuper: 93A4B415197: removed
postsuper: Deleted: 1 message
postsuper: BD9FC414BFB: removed
postsuper: Deleted: 1 message
postsuper: 024EF4150C2: removed
postsuper: Deleted: 1 message
postsuper: 12114414813: removed
postsuper: Deleted: 1 message
...
#
Empezamos creando un archivo con la lista de todas las direcciones de correos implicados en cola, por ejemplo:
# mailq | grep : | cut -f3 -d":" | cut -f3 -d" " | sort > ~/mailq.log
# cat ~/mailq.log
14479TDJAR@rrew.com
1919@intl-error.mail.info
3F2ZB9R@barriage.com
4QC5TBFN4Y@rarnyne.net
5minnews.com@kingofthedirt.com
71V8V5@rarrgoico.net
7AP31N@rarrlolico.com
96ZEXFSXB@rarrisolidp.com
9DTOUY@rarrgoldmine.com
aalguien@server.com
Aprafivo69@abebooks.com
BenaeMilne@meiselania.cc
Boospq@123456.com
bueno@server.com
Casey.Wood@jermanyfromhome.net
DAVEY879@RUBIAZA.DE
dario@server.com
DKG40BZ@chickenstolen.de
...
# cat mailq.log | grep -v server.com > mailq.log
# for i in `cat ~/mailq.log`; do `mailq | grep $i| cut -f1 -d* | postsuper -d -`; done
Todo depende de las manos del administrador y de su capacidad de filtrado con las cuentas, pero realmente... ¿qué sistema no depende de un administrador?. Más sencillo sería un postsuper -d ALL aunque apuesto a que más de uno tendría cargo de conciencia.