Maurotech

BLOG TI Sistemas y Diseño

Linux

Postfix mta: cómo manejar la cola

Escenario

Estamos recibiendo ataques de spam en nuestro servidor desde el dominio static.vnpt.vn (Vietnam).
Si utilizáis el MTA postfix, disponemos de un comando mailq para ver la cola de correo.
Puedes conseguir lo mismo con este otro comando postqueue -p.
Veo que hay muchos mensajes que no salen.
Concluyo que que el MTA está parando el ataque:

1
2
3
4
5
6
7
8
9
10
11
# mailq
-Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient-------
7615C16206BF     5278 Thu Apr 13 09:48:29  MAILER-DAEMON
              (connect to static.vnpt.vn[203.162.0.78]:25: Connection refused)
                                         Puckett7424@static.vnpt.vn
71D9A16206C2     5284 Thu Apr 13 09:48:29  MAILER-DAEMON
              (connect to static.vnpt.vn[203.162.0.78]:25: Connection refused)
                                         Puckett7424@static.vnpt.vn
...

Pero me molesta tenerlos encolados así que decido eliminarlos. Para ello utilizo el comando postsuper -d 81E7E1622C1Cdonde 81E7E1622C1C es el Queue ID del mensaje a borrar:

1
2
3
4
5
6
7
8
AE1F81622AB6     5102 Fri Apr 14 10:20:11  MAILER-DAEMON
(delivery temporarily suspended: connect to static.vnpt.vn[203.162.0.78]:25: Connection refused)
                                         Moody745@static.vnpt.vn
-- 31 Kbytes in 6 Requests.
root@server:~# postsuper -d AE1F81622AB6
postsuper: AE1F81622AB6: removed
postsuper: Deleted: 1 message

Comandos postfix

Algunos de los comandos que os serán útiles para gestionar la cola de Postfix, y los que más utilizo son los siguientes:

1
2
3
4
5
6
7
8
9
postqueue -p         # mostrar la cola de correo
mailq                # hace lo mismo
postqueue -f         # flush de la cola de correo (intentar volver a enviar todos los emails)
postcat -q ID        # mostrar contenido del correo con ese ID
---
postsuper -d ID      # eliminar el mensaje con ese ID
postsuper -d ALL     # eliminar todos los correos
postsuper -r Number  # encolar de nuevo el mensaje con ese ID
postsuper -r ALL     # encolar de nuevo todos los mensajes

Iremos añadiendo otros que mediante tuberías (Pipes | ) permiten extraer información útil, de momento uno para contar:

1
postqueue -p | tail -n 1

Con esto conseguimos extraer la línea resumen del final (KBytes y Requests). Si afinamos:

1
postqueue -p | tail -n 1 | cut -d" " -f5

Con este filtro podemos contar el número de emails que actualmente hay en cola, como se aprecia aquí:

1
2
root@server:~# postqueue -p | tail -n 1 | cut -d" " -f5
5

O bien si trabajamos de esta forma:

1
postqueue -p | tail -n 1 | cut -d" " -f2,3

Podemos saber el tamaño que ocupan.

1
2
root@server:~# postqueue -p | tail -n 1 | cut -d" " -f2,3
25 Kbytes

Por hoy suficiente, hasta la próxima!

Loading