Sin duda el tema de spam es un cuento de nunca acabar, algo con lo que tenemos que luchar casi a diario, en lo personal a mi me costo mucho aprender a detectar cuando un usuario esta generando spam, pero poco a poco he logrado controlar esta situación y voy a compartir mi experiencia con ustedes si utilizan un servidor con qmail.

  1. Primero debemos determinar la cantidad de mensajes que están en cola.
  2. # /var/qmail/bin/qmail-qstat
    messages in queue: 4250
    messages in queue but not yet preprocessed: 0

    Como vemos tenemos 4250 mensajes en cola lo cual es demaciado es eviente que hay spam, con 200 o 300 ya es para preocuparse, así que vamos a verificar la cola de mensajes con qmail-qread.

    # /var/qmail/bin/qmail-qread

  3. Al ejecutar ese comando veras muchos correos quiza saliendo desde el mismo dominio entonces vamos a ver el contenido del correo o correos
  4. # /var/qmail/bin/qmail-qread
    19 Nov 2012 01:30:59 GMT #6128879 457
    remote mahemi@enet.cu

  5. Vamos a encontrar el contenedor del fichero del correo
  6. #find /var/qmail/queue/ -name 6129845
    /var/qmail/queue/mess/0/6129845
    /var/qmail/queue/info/0/6129845
    /var/qmail/queue/remote/0/6129845
    less /var/qmail/queue/mess/0/6129845

    Received: (qmail 21482 invoked by uid 0); 26 Nov 2012 16:22:24 -0000
    Received: from usuario (130.255.180.235)
    by server with (DHE-RSA-AES256-SHA encrypted) SMTP; 26 Nov 2012 16:22:23 -0000
    Received: from localhost (mg-1.iunait.es [46.105.126.200])
    by correo (8.13.8/8.13.8) with ESMTP id qAQGJ2Zw017731
    for ; Mon, 26 Nov 2012 17:22:36 +0100
    DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=facilisimo.com;
    s=mail; t=1353946956;
    bh=TpUeLqVxELmRzgCdhgsSi9LYkEjzYSPYVpjwSu70784=;
    h=To:From:Date:List-Unsubscribe:Reply-To:Subject:MIME-Version:
    Content-Type;
    b=cg0F59NmUSCYqVZIwdJ6C8UBRU2u2hv62RJUcDTsGgzBVp2D1uqDF3XBEX8kiYP6B
    SPQeNWPn/cVwsJNq7Bljn6CCVdQX7Ni70ceSUoI7J42QC4Q1O0eG6WA0vMIsgCuY3q
    eZuHfatoO9fNr1z/TQ0P8UFZO5pf9VebqL0d4xug=
    Message-Id: <201211261622.qAQGJ2Zw017731@correo>
    To: contabilidad@ccorreo
    From: “ofertas facilisimo.com”
    Date: Mon, 26 Nov 2012 16:28:42 +0000
    x-job: facilisimocom–2012-11-26
    x-job-id: facilisimocom–2012-11-26….

    Como vez te muestra la IP desde donde se genera el spam, rapidamente debemos borrar el mensaje antes de caer en lista negra, Luego vamos a comprobar si tenemos los mismos mensajes, para eso vamo a analizar el trafico generado desde esa IP

    # tcpdump -i eth0 -n src 130.255.180.235 \or dst 130.255.180.235 -w smtp.tcpdump -s 2048

    Con lo anterior analizamos el trafico entrante y saliente desde dicha IP y lo guardamos en un archivo que lo nombramos tcpdump para luego analizarlo.

    Cuando analices el archivo busca algo como lo siguiente

    334 WGTsem56TR52F
    hQNsAd==
    334 TPAzc3dvdfY9
    VBIzGHI=

    Ojo que dije algo parecido a eso puede ser que aparezca diferente, quizá maś complejo lo importante es saber identificar que ahí está el usuario y contraseña del spamer o cuenta con problemas.

    Ahora vamso a decodificar esos datos para ver el usuario y clave

    #perl –MIME::Base64 -e ‘print decode_base64(“dGVzdA==”)’
    #perl –MIME::Base64 -e ‘print decode_base64(“MTIzNDU=”)’

    Ahora que ya tenemos el usuario y clave del spamer podemos borrar la cuenta o cambiarle la clave y notificar al usuario que no se deben usar claves simples.

    Es posible que el spamer haya creados varias cuentas en diferentes dominios con el mismo nombre, peudes buscarlo del siguiente modo.

    # mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa
    […]
    mysql> SELECT m.mail_name, d.name, a.password FROM mail AS m LEFT JOIN (domains AS d, accounts AS a) ON (m.dom_id = d.id AND m.account_id = a.id) WHERE m.mail_name=’usuario’ AND a.password=’clave′;
    +———–+————+———-+
    | mail_name | name | password |
    +———–+————+———-+
    | usuario | dominio.com | clave |
    +———–+————+———-+
    1 row in set (0.01 sec)

    Como vez la segunda línea te muestra el usuario, dominio y clave, luego puedes ir y borrar la cuenta.

    Notas Importantes:

    Cuando ejecutas /var/qmail/bin/qmail-qread y el resultado del encabezado es algo como esto:

    Received: (qmail 25604 invoked from network); 25 feb 2012 18:20:25

    Significa que el spam viene de una direccion externa entonces puedes bloquear a dicha IP, pero si el resultado es el siguiente:

    Received: (qmail 25604 invoked by uid 1072); 25 feb 2012 18:20:25

    Entonces el spam esta siendo generado por un script dentro del servidor en ese caso hay que identificar al uid y eliminarlo o cambiar la contraseña del mismo.

    MFCP!!!