Estadísticas de Qmail en Plesk con Isoqlog

Que es Isoqlog?

Isoqlog es un analizador de logs de MTA escrito en C. Esta desarrollado para trabajar con los logs de qmail, postfix,

sendmail and exim y genera estadísticas en formato HTML.

//www.enderunix.org/isoqlog/isoqlog.gif

Algunas características
Soporte Multi MTA, Multi dominio, estadísticas de envió y de recepción, estadísticas por tiempo, estadísticas por tamaño, traducción a varios idiomas incluido el español. http://www.enderunix.org/isoqlog/output/ Y vea un ejemplo de los resultados que genera.

1) Descargelo

wget http://www.enderunix.org/isoqlog/isoqlog-2.2.1.tar.gz

2) Descomprimalo

tar -zxvf isoqlog-2.1.1.tar.gz
cd isoqlog-2.1.1

3) Compile, instale y limpie

./configure

make
make install
make clean

4) Cree un enlace de rcpthosts (Solo Qmail)

ln -s /var/qmail/control/rcpthosts /usr/local/etc/isoqlog.domains

5) Cree el directorio de salida

mkdir /home/httpd/vhosts/domain.com/httpdocs/mailstats

6) En el directorio de salida copie algunos archivos necesarios

cp -pr /usr/local/share/isoqlog/htmltemp/images /usr/local/share/isoqlog/htmltemp/library mailstats/

7) Configúrelo

cd /usr/local/etc/

7.1) Configuracion general de isoqlog

cp isoqlog.conf-dist isoqlog.conf
vi /usr/local/etc/isoqlog.conf
=================Isoqlog.conf==============================
#Este es mi archivo de configuración /usr/local/etc/isoqlog.conf
logtype = "qmail-syslog" # log type qmai-multilog, qmail-syslog, sendmail, postfix
logstore = "/usr/local/psa/var/log/maillog"
domainsfile = "/usr/local/etc/isoqlog.domains"
outputdir = "/home/httpd/vhosts/domain.com/httpdocs/mailstats"
htmldir = "/usr/local/share/isoqlog/htmltemp"
langfile = "/usr/local/share/isoqlog/lang/spanish"
hostname = "server.domain.com"
maxsender = 100
maxreceiver = 100
maxtotal = 100
maxbyte = 100
======================================

7.1) Configuracion de lista de dominios

cd /usr/local/etc/
cp isoqlog.domains-dist isoqlog.domains
vi /usr/local/etc/isoqlog.domains
===================Isoqlog.domais========
domain1.com
domainz.net
domainzxe.org
====================================

Ejecútelo manualmente

/usr/local/bin/isoqlog

9) Programelo editando su crontab y agregue la siguiente línea (En mi caso lo tengo en prueba cada 59 Minutos)

vi /etc/crontab
*/59 * * * * root /usr/local/bin/isoqlog 1>/dev/null 2>/dev/null

10) Observe que interesante reporte

http://domain.com/mailstats/

Pdt1: Lo probé con ensim y sendmail y funciona solo que la sumas de tamaños generales quedan en 0
Pdt2: Primera version; Puede tener errores; Bienvenidas las mejoras

Regenerar configuración Qmail en PlesK

En ocasiones se produce algún tipo de corrupción en la configuración de qmail, para rehacer la configuración que hace plesk de qmail disponemos de una aplicación muy interesante:

# /usr/local/psa/admin/bin/mchk
Synopsis:
mchk [OPTION]
–without-spam – restore all settings except for SpamAssassin configuration
–with-spam – restore all settings
–spam-only – restore only SpamAssassin settings

Esta utilidad regenera los ficheros de los directorios /var/qmail/control, /var/qmail/users y ademas retoca los propietarios y permisos de todos los archivos de /var/qmail/mailnames. Esto resulta interesante despues de copiar a “pelo” archivos de correo, practica poco recomendable pero que en ocasiones puedes verte obligado a realizar, sobretodo cuando hay alguna catastrofe y estamos reconstruyendo a partir de deshechos.

Hay que tener en cuenta que si el volumen es alto puede tomarse su tiempo, asi que si lo ejecutas en un servidor en producción tomatelo con calma.

Curso Servidores Ubuntu. Instalación de un Servidor Email

VideoTutorial del Curso Ubuntu Servidores. Instalación de un Server Mail. Introducción a los Servidores Mail: MTA, MDA, MUA; Agentes para la transferencia de Mails; Instalar Postfix y Paquetes asociados: clamav, mailx, mailscanner, postfix, postfix-docs, postgrey y qpopper. Modelos de Configuración de Postfix; Instalación desde la línea de comandos. Envío de nuestro primer mail con mailx y con Thunderbird.

Descargar:

http://rapidshare.com/files/163751407/ubuntu_servidores002.rar

Mails en cola con mucha antigüedad con Qmail – QueueLifeTime

Hace poco observé que la cola de mails del servidor Plesk tenía mails antiguos con hasta siete días de antigüedad. Esto es porque pueden haber mails que tienen destinatarios falsos y por tanto, el servidor SMTP no es capaz de entregar el mensaje correctamente, con lo cual, lo pone en cola y espera a entregarlo más tarde. El número de reintentos va con la antigüedad del mail, a más antigüedad, menos reintentos.

Para modificar el valor por defecto del SMTP(Qmail) en relación al tiempo que un mail permanece en espera en el servidor, hemos de crear un archivo y reiniciar el servicio.  Lo aconsejable son 48 horas, 172800 segundos.

# joe /var/qmail/control/queuelifetime

Editamos con el valor 172800 y Ctrl+K+X para guardar. Reiniciamos el servicio.

# /etc/init.d/qmail restart

Para poder ver que todo marcha bien, podemos examinar el log de qmail.

# tail -f /usr/local/psa/var/log/mailog

Encontrar scripts spammers en el servidor

Cuando el script del spammer es un script realizado en php, el problema que tenemos para localizarlo es que el usuario será apache (a no ser que el servidor use su_exec o similares) y será más dificultoso encontrarlo ya que no puede ser identificado con el nombre de usuario del dominio.

Si se usa Plesk hay dos procedimientos estándares creando wrappers de Sendmail y que suelen funcionar. El propio Plesk lo describe en estos dos artículos:

http://kb.parallels.com/article_22_1711_en.html

http://kb.parallels.com/en/766

Podemos dejar el wrapper funcionando durante algún día para intentar localizar al spammer. Adicionalmente podemos dejar un cron que dispare un fichero con greps del tipo:

grep X-Additional /var/tmp/mail.send | grep `cat /etc/psa/psa.conf | grep HTTPD_VHOSTS_D | sed -e ’s/HTTPD_VHOSTS_D//’ ` | awk ‘{print $2}’ | awk ‘BEGIN {FS=”|”} {print $1}’ | sort|uniq -c | sort -rn

y que nos envié por email los resultados del wrapper.

Una vez conocido el directorio o fichero desde donde se envía el spam, tendremos que comprobar en los logs como se ha logrado el acceso para subir el citado fichero. Normalmente suele haber aplicaciones php muy antiguas que no han sido actualizadas a versiones nuevas. Tendremos que advertir al propietario del sitio que actualice sus aplicaciones, cambie sus claves, revise todos los ficheros e incluso suba un backup anterior. Habrá que eliminar los ficheros maliciosos y colocar restricciones más fuertes al dominio creando un fichero .htaccess o en el propio /conf/vhosts.conf del dominio.

Tales restricciones podrían ser:

php_flag register_globals off

php_flag allow_url_fopen off

php_flag file_uploads off

php_flag magic_quotes_gpc on

php_flag safe_mode on

php_flag disable_functions show_source

php_flag disable_functions system

php_flag disable_functions shell_exec

php_flag disable_functions passthru

php_flag disable_functions exec

php_flag disable_functions phpinfo

php_flag disable_functions popen

php_flag disable_functions proc_open

Adicionalmente habría que revisar los directorios temporales /tmp para comprobar que no hay scripts con usuario apache que estén enviando spam.

Igualmente siempre es utilizar las reglas actualizadas de mod_security para prevenir ataques comunes vía web (el 95% de los ataques son vía web) y herramientas de deteción de intrusos como OSSEC, y Atomic Secure Linux

Sería recomendable añadir a iptables las ips de las maquinas que realizaron el ataque, aunque el atacante atacará desde otras ips sin complicaciones. Incluso puede ser interesante bloquear rangos de ips de forma momentanea si hay un ataque en progreso.