Servidor de Correo – Casillas y usuarios virtuales

Postfix - Cómo revisar las colas de mensajes

Cómo revisar las colas de mensajes de Postfix

1) Visualizar las colas de correo: diferido y pendiente

# mailq

o

# postqueue -p

Alternativamente, para guardar la salida en un archivo de texto, ejecuta

# mailq > mailqueue.txt

o

# postqueue -p > mailqueue.txt

Cualquiera de estos comandos mostrará el remitente, los destinatarios y el ID, pero no el mensaje en sí. Aunque el ID ayudará a localizar los mensajes individuales.

Ver el mensaje (contenido, cabecera y cuerpo) en la cola de Postfix

Los ID de los mensajes están disponibles en la cola de mensajes. Así que, para ver un mensaje con el ID XXXXXXX, ingresar

# postcat -vq XXXXXXXXXX

O, para guardarlo en un archivo, introducí

# postcat -vq XXXXXXXXXX > emailXXXXXXXX.txt

Una característica útil para los servidores web es habilitar mail.add_x_header = on en la configuración de Postfix.
Esto añadirá una cabecera a todos los mensajes de correo electrónico salientes mostrando el script y el usuario que generó cada mensaje. Una vez habilitado esto añadirá la siguiente cabecera extra al mensaje:

X-PHP-Originating-Script: 1001:spamEmailer.php

En este ejemplo, 1001 es el ID del usuario y spamEmailer.php es el script que envía el mensaje. Esto permite rastrear rápidamente el origen de cualquier mensaje de spam enviado desde nuestro servidor.

Monitoreo de la cola en tiempo real

# watch -n1 mailq

Para filtrar la salida con grep es necesario especificar el comando entre comillas

# watch 'mailq | grep "[^A-F0-9]"'

Cómo eliminar el correo en cola de espera

Forzar el procesamiento de la cola

# postqueue -f

o

# postfix flush

Eliminar el correo en cola

Un comando permite eliminar todos los mensajes en cola en Postfix. Esto incluye los mensajes de las pending (pendiente) y deferred (diferido):

# postsuper -d ALL

Para borrar específicamente todos los mensajes de la cola diferida (es decir, sólo los que el sistema pretende reintentar más tarde), ingresá

# postsuper -d ALL deferred

Eliminar selectivamente el correo de la cola

También se pueden eliminar mensajes específicos de la cola de correo. Esto no es algo que esté incluido de forma nativa con las herramientas estándar de Postfix, pero (gracias a que usamos software libre) existe una solución para ello.

Así, para eliminar todos los mensajes de la cola de correo enviados por o a usuario@ejemplo.com (el comando es el mismo independientemente de si se trata de la dirección del remitente o del destinatario), se puede utilizar este comando:

# mailq | tail +2 | awk 'BEGIN { RS = "" } / usuario@ejemplo\.com$/ { print $1 }' | tr -d '*!' | postsuper -d -

O

# postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@dominio\.com/ { print $1 }' | tr -d '*!' | postsuper -d -