Saltar al contenido

Como buscar el origen de spam en un servidor con qmail y plesk

Esto puede serle muy útil si alguien está utilizando tu servidor para enviar spam y quieres ver su procedencia.

Comprueba el número de mensajes que hay en la cola de Qmail ejecutando el siguiente comando:

/var/qmail/bin/qmail-qstat

te salda algo como lo siguientemessages in queue: 27843messages in queue but not yet preprocessed: 256
Si la cola tiene muchos mensajes es que algo no va bien y están utilizando el servidor para enviar SPAM, veamos como descubrir al culpable.
Si el correo está siendo enviado a través del servidor smtp, pero no desde un script PHP, puedes ejecutar el siguiente comando:

cat /usr/local/psa/var/log/maillog |grep -I smtp_auth |grep -I user |sort |uniq -c |sort -n

aparecerán las conexiones smtp con el usuario y contraseña y la ip de acceso, si hay muchas conexiones de un mismo usuario podemos haber encontrado el culpable.

Para vez las cabeceras de los mensajes de la cola podemos ejecutar:

/var/qmail/bin/qmail-qread

así se muestran los remitentes y destinatarios de los mensajes. Si hay algún mensaje sospechsos hay que investigar si es SPAM. Puede buscar el mensaje por su id, como por ejemplo 64166987

find /var/qmail/queue/mess/ -name 64166987cat /var/qmail/queue/mess/0/64166987

examina el mensaje y busca la primera línea “Received” para saber desde dónde se envió la primera vez, por ejemplo, si encuentras:

Received: (qmail 24019 invoked by uid 1007); 3 Nov 2010 12:46:52 +0100

Significa que este mensaje fue enviado a través de algún script por el usuario con uid 1007. Usando este uid podemos encontrar el dominio que está enviando el correo:

grep 1007 /etc/passwd

Si el uid es el 48  (del servidor apache) significa que el correo fue enviado a través de un script PHP.En este caso, puedes intentar descubrir el spammer usando la información de los propios correos (direcciones de/para, asunto o cualquier otro dato). Generalmente es muy difícil descubrir la fuente de spam en estos casos, y más si tienes muchos dominios en el servidor.

Si la línea “Received” es como sigue:

Received: (qmail 22672 invoked from network); 03 nov 2010 15:30:12 +08002 Received: from dominio.com (192.168.1.1)

significa que el mensaje ha sido aceptado y entregado a través del servidor SMTP y que el remitente es un usuario de correo autorizado.

 

Tambien cabe la posibilidad de buscar el origen si es un scrip del siguiente modo, ejecutando el siguiente comando vía ssh

lsof +r 1 -p `ps axww | grep httpd | grep -v grep | awk ‘ { if(!str) { str=$1 } else { str=str»,»$1}}END{print str}’` | grep vhosts | grep php