Gestionar la cola de correo en Qmail con QmHandle

La cola de correo es algo que cualquier administrador de sistemas se acostumbra a lidiar con ello. Normalmente no dá problemas y se regula muy bién por si misma si está bién configurada y optimizada para las necesidades de cada servidor. Ahora, cuando se detecta un spammer o un cliente envía email con una de sus listas, la cola de mensajes empieza a subir y los envios de emails se pueden retrasar hasta que la cola se normalice.

El sintóma típico de que suba es alguien haciendo spam. Para localizar el spammer podemos seguir los pasos comentados en este otro post.

Y para gestionar la cola de correo y limpiarla de los emails “malos” a mi me gusta mucho qmHandle.

qmHandle es una herramienta (script) escrita en perl que sirve para manejar la cola de correo de Qmail.
La última versión puede ser descargada aquí, paso a describir las distintas opciones de las que dispone:

Utilización:

qmhandle <opción>

Opciones de Qmhandle:

-a : Enviar todos los mensajes pendientes de la cola
-l : Listar las colas de correo
-L : Listar cola de correo local
-R : Listar cola de correo remota
-s : Mostrar por pantalla estadísticas
-mN : Mostrar mensaje N
-dN : Borrar mensaje N
-Stext : Borrar todos los mensajes cuyo asunto contenga «text»
-D : Borrar todos los correos de la cola (remota y local)
-V : Sacar versión por pantalla
-c : Resultados con colores
-N : Listar solo números (identificadores) de mensaje

Primero listamos cuantos mensajes en la cola (sobre todo la remota) existen.
Si hay miles, hay un spammer seguro.

Primero listo los mensajes en remoto:

# ./qmHandle -R | less

y miro los que se repiten, es habitual que hayan muchos emails con el mismo asunto. SI ves que hay
centenas de mensajes repetidos y que además vienen devueltos, lo más sencillo y rápido es borrarlos

# ./qmHandle -S”texto-a-buscar-en-asunto-y-eliminar”

Si por ejemplo el subject es “Win lottery now”, lo colocas en S”texto” y te los borrará automaticamente.
Si buscasa la palabra “failure” en el subject, ya te cargas unos cuantos.

Cuidado porque Qmhandle para el servicio qmail y si tiene algún problema lo deja parado y no lo arranca.

Saber el top de dominios que envia mas emails en un servidor (Plesk + QMail)

Siempre es útil conocer quienes son los clientes y dominios que dentro de un servidor envian más email y quienes pueden abusar los recursos. Por eso os voy a copypastear los scripts que me encontre en el blog personal de oscar montero:

Por ejemplo para saber  el top de dominios que más envia emails en un servidor (con qmail y plesk) puedes usar:

grep user  /usr/local/psa/var/log/maillog | grep LOGIN | cut -c50-140 | cut -d,
-f 2 | cut -d@ -f 2 |sort|uniq -c|sort -nk 1

Otra forma sería esta:
Continuar leyendo «Saber el top de dominios que envia mas emails en un servidor (Plesk + QMail)»

Instalar dovecot con Qmail

Dovecot es un servidor IMAP y POP ligero y rápido. Vamos a ver como instalarlo en un servidor qmail con vpopmail.

Desde site oficial de dovecot se puede descargar el paquete, una vez descomprimido lo configuramos según el siguiente configure:

./configure --disable-ipv6 --with-mysql \
      --with-sql=yes --with-sql-drivers

Al finalizar el configure tenemos que asegurarnos que ha detectado el vpopmail en las lineas de “user database modules” y “password lookup modules“:

Install prefix …………………. : /usr/local
File offsets …………………… : 64bit
I/O loop method ………………… : epoll
File change notification method ….. : inotify
Building with SSL support ……….. : yes (OpenSSL)
Building with IPv6 support ………. : no
Building with pop3 server ……….. : yes
Building with mail delivery agent .. : yes
Building with GSSAPI support …….. : no
Building with user database modules . : static prefetch passwd passwd-file sql vpopmail nss
Building with password lookup modules : passwd passwd-file shadow checkpassword sql vpopmail
Building with SQL drivers …………: mysql

Continuamos compilando e instalando:

make && make install

Añadimos un usuario para el daemon:

useradd dovecot

A continuación passamos a configurar el daemon con los siguientes ficheros:

  • /usr/local/etc/dovecot.conf:
    mail_location = maildir:/home/vpopmail/domains/%d/%n/Maildir
    
    ssl_disable=yes
    disable_plaintext_auth=no
    
    verbose_proctitle = yes
    first_valid_uid = 89
    last_valid_uid = 89
    
    protocol imap {
    	listen = *:143
    }
    
    auth default {
    
    	passdb vpopmail {
    	}
    
    	userdb vpopmail {
    	}
    }
  • /usr/local/etc/dovecot-sql.conf
    • No aparecen los correos

      dovecot: IMAP(ejemplo@systemsadmins.es): mkdir(/home/systemsadmins.es/ejemplo/Maildir/cur) failed: Permission denied

      Esto puede ser debido a que dovecot lo busca en un path incorrecto. Comprueba que /home/systemsadmins.es/ejemplo/Maildir/cur exista, y si no es así, modifica el parametro mail_location según corresponda.

    • Fallo de autenticación

      dovecot: auth(default): vmysql: sql error[3]: MySQL server has gone away

      Este error aparece quando se ha reiniciado el mysql. Debes reiniciar el dovecot

  • driver=mysql
    connect = host=/tmp/mysql.sock user=vpopmail password=vpopmailpassword dbname=vpopmail
    default_pass_scheme = PLAIN
    password_query = SELECT CONCAT(pw_name, '@', pw_domain) AS user, pw_clear_passwd AS password FROM vpopmail WHERE pw_name = '%n' AND pw_domain = '%d'
    user_query = SELECT pw_dir as home, 64020 AS uid, 64020 AS gid FROM vpopmail WHERE pw_name = '%n' AND pw_domain = '%d'

    Para iniciar el daemon sólo hace falta ejecutar «dovecot» sin parámetros, peró recomendamos su uso combinado con las daemontools. Su fichero runsupervise sería: para el

    #!/bin/bash
    exec /usr/local/sbin/dovecot -F

    Problemas freqüentes de dovecot

    Algunos de sus problemas freqüentes són:

No aparecen los correos

dovecot: IMAP(ejemplo@systemsadmins.es): mkdir(/home/systemsadmins.es/ejemplo/Maildir/cur) failed: Permission denied

Esto puede ser debido a que dovecot lo busca en un path incorrecto. Comprueba que /home/systemsadmins.es/ejemplo/Maildir/cur exista, y si no es así, modifica el parametro mail_location según corresponda.

Fallo de autenticación

dovecot: auth(default): vmysql: sql error[3]: MySQL server has gone away

Este error aparece quando se ha reiniciado el mysql. Debes reiniciar el dovecot

Fuente: http://systemadmin.es