Si se está usando el MTA postfix, se sabe que éste dispone de un comando para ver la queue (cola) del servidor de correo electronico, y éste es mailq.
Tambien se puede obtener el mismo resultado usando el comando postqueue -p.
Sin embargo al ejecutar cualquier de los dos comandos antes mencionados, se muestra que existen mensajes que aun no se han procesado y a lo cual se han generado como mensajes de error; para poder eliminarlos de la QUEUE (cola) es necesario ejecutar una secuencia de comandos para limpiar dicha QUEUE. Aqui se ilustran algunos ejemplos.
# mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- 5D85F826 8843 Thu Aug 24 08:51:29 MAILER-DAEMON (connect to ncklefc.ehabar.stream[91.201.85.67]:25: Connection refused) BiblicalDietBreakthrough@ehabar.stream
64133823 2729 Thu Aug 24 07:34:14 MAILER-DAEMON
(connect to mail.standstills.club[162.217.206.55]:25: Connection timed out)
Tamara_Paterson@binder.standstills.club
60583827 2742 Thu Aug 24 08:57:41 MAILER-DAEMON
(connect to mail.yyxinyou.bid[103.214.108.62]:25: Connection timed out)
CVS.Customer-Bonus@graph.yyxinyou.bid
63EB7814 8862 Wed Aug 23 16:46:55 MAILER-DAEMON
(connect to n022wz74g.setsparents.stream[192.140.20.244]:25: Connection refused)
FidelityLifeIns@setsparents.stream
Pero tenerlos ahi en la queue es algo molesto, por eso que decido eliminarlos. Para ello utilizo el comando postsuper -d 5D85F826 donde 5D85F826 es el Queue ID del mensaje a borrar:
# postsuper -d 5D85F826 postsuper: 5D85F826: removed postsuper: Deleted: 1 message #
Pero que sucede cuando son un gran numero de correos de éste tipo, el poder eliminarlos 1×1 seria muy “pesado”, para ello usaremos una serie de comandos para realizar o hacer el trabajo mucho más facil y/o practico.
Aquí los tres ejemplos, hacen practicamente lo mismo, eliminar los MAILER-DAEMON de la QUEUE del servidor de correo
1) # mailq | awk ' /^[0-9A-F][0-9A-F]*[^*].*MAILER-DAEMON$/ {print $1}' | postsuper -d - 2) # mailq | grep MAILER-DAEMON |cut -f 1 -d " "| postsuper -d - 3) # for i in `mailq | grep MAILER-DAEMON | cut -f 1 -d " "`; do postsuper -d $i ; done
También se anexa unos comandos útiles para el manejo de la QUEUE.
# postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == " micorreo@midominio.com" ) print $1 }' | tr -d '!*' | postsuper -d -
# postqueue -p | awk 'BEGIN { RS = "" } { if ($7 == " micorreo@midominio.com" ) print $1 }' | tr -d '!*' | postsuper -h -
# mailq | grep “textobuscado” | awk ‘{ print($1); }’ | postsuper -d –
# mailq | awk ' /^[0-9A-F][0-9A-F]*[^*].*MAILER-DAEMON$/ {print $1}'| postsuper -d -
# time smtp-source -s 40 -l 10000 -m 1000 -c -f micorreo1@midominio.com \
-t micorreo2@midominio.com mail.midominio.com:25
# postsuper -d Queue-ID (eliminar el mensaje)
# postsuper -d ALL (eliminar todos los mensajes)
# postsuper -r Queue-ID (Encolar de nuevo el mensaje)
# postsuper -r ALL (Encolar de nuevo todos los mensajes)
# postcat -q Queue-ID (mostrar el contenido del correo con ese ID)
Aqui otros ejemplos
1) Cuantos correos hay en la queue actualmente
# postqueue -p | tail -n 1
2) Extraer la línea del resumen al final (KBytes y Requests)
# postqueue -p | tail -n 1 | cut -d” ” -f5
3) Contar el número de emails que actualmente hay en cola, tal como se aprecia aquí:
# postqueue -p | tail -n 1 | cut -d” ” -f5 15
4) Mismo resultado que el anterior pero de otra manera:
# postqueue -p | tail -n 1 | cut -d” ” -f2,3
5) Que tamaño que ocupan.
# postqueue -p | tail -n 1 | cut -d” ” -f2,3
25 Kbytes
6) Eliminar todos los correos de un usuario con la cuenta de email comprometida
# grep sasl_username=usuario /var/log/mail.log | awk -F ‘ ‘ ‘{print $6}’ | awk -F ‘:’ ‘{print $1}’ | postsuper -d –
ó para algun dominio virtual.. (?) # grep sasl_username=usuario /var/log/mail.log | awk -F ' ' '{print $6}' | awk -F ':' '{print $1}' | postsuper -c `pwd` -d -
PD: Más informacion en sites.google.com
Suerte!!