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.

Migrar cuentas de Yahoo y Hotmail a GMail

Todos queremos Gmail. Mucho espacio, una interficie bonita, y muy buenas posibilidades de búsqueda.

En esta guía vamos a montar servidores de reenvío para Hotmail y Yahoo Mail, los cuales reenviaran todos los emails recibidos a nuestra cuenta en Gmail (o cualquier otra cuenta) Hotmail Para Hotmail usaremos gotmail.

emerge gotmail

Gotmail por defecto utiliza ~/.gotmailrc como archivo de configuración.

username=
password=
forward=
delete

Rellenamos la información necesaria. gotmail –help Te dará más opciones para la configuración. Configura lo como quieras. Nota: Si no tienes funcionando Sendmail, Necesitarás especificar un servidor smtp.

Antes de ejecutar gotmail, queremos estar seguros de que nuestra cuenta gmail está lista. Añade un filtro que clasificará todos los archivos con la etiqueta hotmail. Querría también que vayan a alguna carpeta automáticamente, quizás solo para la primera vez que se ejecute gotmail. (todos los e-mails que recivas se guardarán en la bandeja de entrada.)

Con todo configurado, ejecuta gotmail. tomará un rato, pero trás completarse tendrás todos los correos de hotmail en tu cuenta gmail.

Yahoo Mail Para Yahoo Mail, usaremos fetchyahoo.

emerge fetchyahoo

La configuración se encuentra en /etc/fetchyahoorc y está bien comentada.

Deberíamos configurar los mismos filtros que usamos para hotmail antes.

Funciona como gotmail.

Programarlo para que se ejecute automáticamente

Funciona, pero ejecutarlo cada vez que queramos pasar los mensajes es engorroso. ¿Como podemos configurarlo para que está enviando continuamente los e-mails?

Aquí tienes dos soluciones.

Configurarlo con cron Facil y efectivo. Configuralo en el fichero cron.

Configurándolo como servicio o demonio (daemon) En lugar de cron, podemos configurarlo como servicio. Ventajas: Facil configuración, y puede pararse tan facilmente como ejecutarse. Estoy seguro de que debe haber una solución mejor, pero esta es la única que se me ocurre. Requiere: at (el demonio del calendario) .gotmailrc debe moverse a /etc/gotmailrc

#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/mail-mta/postfix/files/postfix.rc6.2.2.9,v1.1 2006/03/07     21:07:20 ferdy Exp $opts=“${opts} reload”

depend() {
use sendmail net atd
}

start() {
ebegin “Iniciando webmaild”
/usr/local/sbin/webmaild &>/dev/null &
eend $?
}

stop() {
ebegin “Parando webmaild”
killall webmaild
eend $?
}

reload() {
ebegin “Recargando webmaild”
killall webmaild
/usr/local/sbin/webmaild &>/dev/null &
eend $?
}

Archivo: /usr/local/sbin/webmaild

#!/bin/bash
gotmail -c /etc/gotmailrc
fetchyahoo &> /dev/null

sleep 30m
/usr/local/sbin/webmaild &> /dev/null &

No es la mejor solución, pero funciona. Ahora podemos ejecutar webmaild como un servicio, y el e-mail será copiado cada 30 minutos

Una alternativa al script previo: /ruta/a/webmaild.sh

#!/bin/sh
while [ 1 == 1 ]; do
gotmail -c /ruta/a/gotmailrc &> /dev/null
fetchyahoo &> /dev/null
# añade a todos los programas como el anterior &> /dev/null, para que su
# salida (de información) vaya a /dev/null en lugar de a la pantalla
sleep 30m
done

Básicamente se ejecuta en un bucle infinito.

Matándolo o haciéndolo terminar: mata.el.servicio.sh

kill `ps aux | grep webmaild.sh | awk ‘{ print $2 }’`