Guía rápida y completa para trabajar con la cola de Postfix (mailq)

Colas de Postfix:

IDs de correo en postfix.

010281A33* # El mensaje está en la cola activa (se intenta enviar).
010281A33! # El mensaje está en la cola de espera.

Manejo de la cola de postfix.

postqueue -p          # Visualiza el contenido de la cola, equivale a "mailq".
postqueue -f          # Intenta enviar (Flushing) los correos de la cola deferred.
 
postcat -vq XXXXXXX   # Visualiza el cuerpo de un correo en la cola.
 
postuser -h XXXXXXX   # Se pone el correo en la cola "hold" (no se intentará enviar).
postuser -h ALL       # Se ponen todos los correos de las otras colas en la de espera (no se intentarán enviar).
postuser -H XXXXXXX   # Saca un correo de la cola de espera, por lo que será enviado o bien volverá a la "deferred".
 
postsuper -d XXXXXXX         # Elimina un mensaje concreto de la cola.
postsuper -d ALL deferred    # Elimina todos los mensajes de la cola "deffered" (/var/spool/mqueue/).
postsuper -r XXXXXXX         # Encola de nuevo el mensaje en la cola activa.
postsuper -r ALL             # Encolar de nuevo todos los mensajes en la cola activa para ser enviados.
 
postconf -nf          # Visualiza la configuración del archivo main.cfg.
postconf              # Comprobar la sintaxis de postfix.
 
qshape                # Muestra la congestión por dominios(FROM) de la cola "incoming" y "active" ().
qshape                # Muestra la congestión por dominios(TO) de la cola "incoming" y "active" ().
qshape deferred       # Muestra la congestión de la cola deferred (FROM).
 
# Salida de qshape: 1 destinatario con dominio "busindre.com" lleva más de 160Min en cola.
 
               T  5 10 20 40 80 160 320 640 1280 1280+
        TOTAL  1  0  0  0  0  0   1   0   0    0     0
 busindre.com  1  0  0  0  0  0   1   0   0    0     0

Comandos útiles para trabajar con la cola de postfix.

# Para el envío de corroes (no la recepción).
postconf -e defer_transports=smtp;postfix reload
 
# Habilita de nuevo el envío de correos.
postconf -e defer_transports=;postfix reload;postfix flush
 
# Borra correos en la cola con la dirección USUARIO@EJEMPLO.COM en "FROM".
postqueue -p | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { if ($7 == "USUARIO@EJEMPLO.COM" && $9 == "") print $1 } ' | tr -d '*!' | postsuper -d - 
# Borra correos en la cola con direcciones del dominio EJEMPLO.COM en "FROM".
postqueue -p | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { if ($7 ~ /@EJEMPLO\.COM/ && $9 == "") print $1 } ' | tr -d '*!' | postsuper -d -
 
# Borra correos en la cola con la dirección USUARIO@EJEMPLO.COM en "TO".
postqueue -p | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { if ($8 == "USUARIO@EJEMPLO.COM" && $9 == "") print $1 } ' | tr -d '*!' | postsuper -d - 
# Borra correos en la cola con direcciones del dominio EJEMPLO.COM en "TO".
postqueue -p | tail -n +2 | grep -v '^ *(' | awk  'BEGIN { RS = "" } { if ($8 ~ /@EJEMPLO\.COM/ && $9 == "") print $1 } ' | tr -d '*!' | postsuper -d - 

Buscar con grep cadenas en el cuerpo / cabecera de todos los mensajes en la cola de postfux.

# Busca la cadena XXXXX en el cuerpo y cabeceras de todos los mensajes de correo en la cola.
find /var/spool/postfix/deferred/ -type f -exec grep --color  -aoi 'XXXXX' '{}' \; 
 
# Busca la cadena XXXXX en el cuerpo y cabeceras de todos los mensajes de correo contabilizando las ocurrencias.
find /var/spool/postfix/deferred/ -type f -exec grep --color  -aoi 'XXXX' '{}' \; | sort | uniq -c | sort -n
 
     20  XXXXAA
     25  Hola XXXXBB, qué marcha me llevas?
     60  XXXXCC: chafas que me estafas
     200 Su password es XXXX