En entradas anteriores os había explicado cómo detectar un posible problema de inodos llenos en el servidor, además de explicaros cómo buscar la fuente del problema:

Pero hay ocasiones en las que aún así, no se logra encontrar la fuente del problema y se siguen generando largas colas de email sin conocer de dónde proviene.

En primer lugar, ejecutamos el siguiente comando para comprobar cuántos elementos tenemos en la cola de qmail:

# /var/qmail/bin/qmail-qstat
messages in queue: 27645
messages in queue but not yet preprocessed: 82

al confirmar que hay muchos mensajes en la cola vamos a intentar averiguar de donde viene el spam. Para ello utilizamos la utilidad qmail-read que muestra los mensajes en cola, quien lo envía y los destinatarios.

# /var/qmail/bin/qmail-qread
2 Oct 2013 15:51:09 GMT  #647441  3521  <> 
remote	stuetrory@yahoo.com

Si un mensaje tiene muchos destinatarios que no son conocidos casi con seguridad que será spam. Elegimos unos cuantos mensajes que parezcan spam y vamos a consultarlos con mas detalle.

El mensaje que hemos localizado en el paso anterior tiene el numero 647441

# find /var/qmail/queue/mess/ -name 647441

Abrimos el fichero en sí:

nano /var/qmail/queue/mess/14/647441

Y en él podemos ver

Received: (qmail 27984 invoked by uid 503); 3 Oct 2013 08:05:00 -0000
Date: 3 Oct 2013 08:05:00 -0000
Message-ID: <20131003080500.27983.qmail@dominio.com>
From: services@dominio.com

Viendo el email from y el uid podemos detectar qué usuario de apache está ejecutando el script, es decir, desde qué directorio web se están enviando masivamente los emails.

Una vez tenemos esto claro, podemos utilizar una herramienta llamada Linux Malware Detect http://www.rfxn.com/projects/linux-malware-detect/ , desde allí podemos descargar la última versión http://www.rfxn.com/downloads/maldetect-current.tar.gz , su instalación es sencilla:

tar -xzf maldetect-current.tar.gz
cd maldetect-1.4.2/
sudo ./install.sh

Una ves instalado, tan solo debemos ejecutarlo de la siguiente forma, si nuestro directorio a analizar es /home/dominio/ la sentencia sería la siguiente:

sudo /usr/local/sbin/maldet -a /home/dominio/

En función del número de ficheros que exista en su interior, tardará más o menos tiempo.

En cuanto haya finalizado la detección, podremos ver qué fichero es el que está causando el problema y eliminarlo.