===== Guía rápida y completa para trabajar con la cola de Postfix (mailq) =====
**Colas de Postfix**:
* Incoming: Cola por la que se reciben los correos.
* Active: Cola donde los correos son enviados.
* Hold: Cola donde simplemente se quedaran los correos sin intentos de envío.
* Deferred: Cola con correos que no han podido ser enviados por alguna razón. Cada cierto tiempo se intentan enviar nuevamente hasta cumplir el timeout, que normalmente es mayor a 24h.
**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