En servidores dedicados o VPS en Internet con los que damos servicio de correo electrónico a clientes, es importante tener control sobre todos los procesos para evitar que los servidores puedan ser comprometidos y utilizados, por ejemplo, para enviar spam.

Uno de esos controles debería ser el número de mensajes en la cola de correo saliente del servidor que esperan a ser enviados, bien por saturación, porque los servidores de destino no están accesibles en ese momento o por cualquier otro error como direcciones de e-mail o dominios mal escritos. Un número elevado de mensajes en la cola del servidor de correo suele ser indicativo de que hay algún problema. Puede ser problema de saturación (puntual o prolongado, síntoma de que el servidor se queda corto para el volumen de mensajes a procesar) o más comúnmente por envío masivo de mensajes, la mayoría de veces síntoma de que se está enviando spam a través de nuestro servidor, por alguna cuenta de correo comprometida o por algún script malicioso instalado aprovechando alguna vulnerabilidad. Cuando el problema es el spam, la cola de correo suele llenarse porque se envía un volumen elevado de correos en poco tiempo a miles o millones de destinatarios y algunos de esos e-mails ya no funcionan, tienen la bandeja de entrada llena, el servidor de destino no está disponible,… con lo que se quedan en la cola de correo saliente de nuestro servidor esperando nuevos intentos de envío.

Así pues, si conseguimos que se nos alerte por e-mail cuando la cola de correo tiene muchos mensajes, podremos atajar el problema más rápidamente para evitar que nuestro servidor de correo entre en listas negras o sea desconectado de la red por nuestro proveedor de hosting. Si disponemos de un servidor de correo Exim, el script siguiente de shell scripting de Linux envía por e-mail mensajes de alerta cuando la cola de correo saliente supera un determinado número de mensajes:

#!/bin/bash
strContador=$(/usr/sbin/exim -bpc)
if [ $strContador -gt 50 ]
then
  /usr/sbin/exim -bpc | mail -s
  'ALERTA COLA SERVIDOR CORREO > 50 MENSAJES' miemail@example.com
fi

Nota: unir en una única línea las dos líneas entre then y fi: “/usr/sbin/exim -bpc | mail -s ‘ALERTA COLA SERVIDOR CORREO > 50 MENSAJES’ miemail@example.com”

El comando “/usr/sbin/exim -bpc” devuelve el número de mensajes en la cola de correo. En el script anterior, si ese número de mensajes es mayor que 50, envía un mensaje a miemail@example.com (cambiadlo por la vuestra) con el asunto “ALERTA COLA SERVIDOR CORREO > 50 MENSAJES” y en el cuerpo el número de mensajes en la cola en esos momentos.

Para que este script se ejecute cada cierto tiempo (cada 15 minutos, por ejemplo), podemos ponerlo en una tarea Cron. Normalmente, si intentamos desde un panel de control de hosting como Plesk o cPanel que se ejcute el script en una tarea cron puede dar error de permisos (“exim: permission denied“) porque el usuario de Plesk o cPanel no tenga permisos para ejecutar el comando “exim –bpc”. Para que la tarea cron que ejecuta el script lo haga como root se puede incluir en el crontab general con el comando “crontab -e” desde ssh (línea de comandos). Añadiendo la siguiente línea en crontab el script se ejecutará como root cada 15 minutos:

*/15 * * * * /ruta/exim_alert.sh

Adaptar este script a otros servidores de correo como Qmail es una tarea sencilla.

Etiquetas: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
Una Respuesta a “Alerta de saturación de cola en servidor de correo Exim en Linux (posible síntoma de spam)”
  1. victor hugo dice:

    disculpa . veo que este mensaje fue escrito hace tiempo. pero es lo que justamente.
    he querido hacer..
    tengo un servidor vps y ya he tenido saturacion de correos y han afectado a los otros
    clientes que estan en el mismo servidor.
    esto a causa de los ataques troyanos. en un correo.. que fue mas de 1000 en solo 2 hrs.

    perdon pero no entiendo en donde debo de incrustar este:

    #!/bin/bash
    strContador=$(/usr/sbin/exim -bpc)
    if [ $strContador -gt 50 ]
    then
    /usr/sbin/exim -bpc | mail -s
    ‘ALERTA COLA SERVIDOR CORREO > 50 MENSAJES’ miemail@example.com
    fi

    en un archivo y en que directorio?
    disculpa estoy iniciando apenas en esto de los vps

    gracias y disculpa mi ignorancia pero si me interesa como hacer que me mande al servidor la alerta a un correo y asi detener el ataque spam
    att..hugo

  2.  
Deja una Respuesta