Análisis de los Logs de Zimbra con Sendmailanalyzer

En este tutorial les mostraré como podemos monitorear y analizar nuestros logs de zimbra, usando sendmailanalyzer. Para crearlo me base en el tutorial de que se encuentra en este link. Lo modifiqué y perfeccioné un poco para hacerlo más  fácil aun. No soy partidario de instalarle nada extra a zimbra a menos que sea necesario. Lo que haremos será reenviar los logs de zimbra a nuestro analizador de logs sendmailanalyzer. Usaremos rsyslog que viene por defecto en Ubuntu. Nuestro escenario hipotético sería el siguiente:

1 servidor de zimbra.( zimbra.midominio.cu)
1 servidor con sendmailanalyser. (web.midominio.cu)

En el servidor con Zimbra

Lo primero seria configurar en nuestro zimbra el reenvío de logs. Editamos el fichero de configuración del rsyslog de zimbra:

nano /etc/rsyslog.d/xx-zimbra.conf

Las xx son debido a que el número varia en las versiones de zimbra, en mi caso que tengo zimbra 8.7.6 el fichero se nombra 60-zimbra.conf. Una vez abierto agregamos el comando para decirle a zimbra que reenvíe los logs al servidor con sendmailanalyzer.

local0.* -/var/log/zimbra.log
local1.* -/var/log/zimbra-stats.log
auth.* -/var/log/zimbra.log
mail.* -/var/log/zimbra.log
mail.* @web.midominio.cu

Reiniciamos el servicio de rsyslog:

/etc/init.d/rsyslog restart

o también:

systemctl restart rsyslog.service

Como pueden apreciar no modifique la configuración por defecto del zimbra. Solamente agregue que los logs mail.log además de guardarse localmente sean reenviados a otro servidor.

En el servidor con sendmailanalyzer

Ahora nos aseguramos que el servidor donde esta nuestro sendmailanalyzer reciba esos logs. Editamos la configuración del rsyslog:

nano /etc/rsyslog.conf

Solo tendremos que descomentar unas lineas.

#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog # provides kernel logging support
#$ModLoad immark # provides –MARK– message capability

# provides UDP syslog reception
$ModLoad imudp (descomentar)
$UDPServerRun 514 (descomentar)

# provides TCP syslog reception
$ModLoad imtcp (descomentar)
$InputTCPServerRun 514 (descomentar)

Reiniciamos el servicio de rsyslog:

/etc/init.d/rsyslog restart

o también

service rsyslog restart

Comprobamos ahora el efecto de la configuración del rsyslog

netstat -nlp | grep 514


Ya el puerto por defecto del rsyslog 514 está escuchando para recibir los logs de zimbra.
En cuestión de segundos nuestro mail.log empezara a recibir las estadísticas de zimbra. Lo comprobamos con:

tail -100f /var/log/mail.log

Pasamos ahora a instalar sendmailanalyzer en nuestro servidor web.midominio.cu. Comenzaremos instalando todas las dependencias

apt-get install build-essential
apt-get install apache2 libapache2-mod-perl2

Como sendmailanalyzer usa PERL para su funcionamiento necesitaremos instalar un módulo perl para el correcto grafiado de las estadisticas de los logs.

perl -MCPAN -e 'install GD::Graph::bars3d'

En el caso de los que dependan de un proxy padre como yo para salir a internet, les doy este tips

export http_proxy=http://proxy:port/
export https_proxy=https://proxy:port/

Si usan autenticación

export http_proxy=http://username:password@proxy:port/
export https_proxy=https://username:password@proxy:port/

Con eso aseguran su salida através del proxy en el servidor. Con todas las dependencias instaladas procedemos a instalar el sendmailanalyzer. Entramos a su sitio web donde encontraremos toda la documentación necesaria para la instalación y la guía de uso del sendmailanalyzer. Mi consejo es que además de este tutorial, se lo lean así tendrán mayor conocimiento del mismo.
Descargamos el código fuente de aquí. Así siempre tendrán la versión mas actualizada. Hasta la fecha de este tutorial la versión mas reciente es sendmailanalyzer-9.2.tar.gz. Lo copiamos en /usr/local/src/ una ves ahí lo descomprimimos y compilamos. También podemos bajarlo directamente por consola:

cd /usr/local/src/
wget http://sourceforge.net/projects/sa-report/files/sa-report/9.2/sendmailanalyzer-9.2.tar.gz

Descompactamos y compilamos

tar xzf sendmailanalyzer-9.2.tar.gz
cd sendmailanalyzer-9.2/
perl Makefile.PL
make && make install

Configuramos el sendmailanalyzer.

nano /usr/local/sendmailanalyzer/sendmailanalyzer.conf

Damos el camino a los logs que importamos de zimbra y lo ponemos en idioma español.

# Path to the maillog file to analyse.
# Can be overwritten with --log or -l
LOG_FILE /var/log/mail.log

# Path to the language translation file (relative to the CGI directory).
# Default: lang/en_US
LANG lang/sp_SP

Podemos correr el sendmailanalyzer en 2 modos uno standalone(autónomo) y el otro como servicio(daemon)
Standalone
En este modo tendremos que crear una tarea para correr el analizador de logs cada vez que queramos. Por ejemplo todos los días después del horario de trabajo (8pm), así analizara lo ocurrido durante ese día.

nano /etc/crontab

y agregamos

0 20 * * * root /usr/local/sendmailanalyzer/sendmailanalyzer -i -b -f

Donde el programa correrá en modo interactivo(-i), analizara todo el log buscando la última posición donde quedo (-f) y salir al finalizar el análisis (-b).
Daemon
Para correr SendmailAnalyzer como daemon, usaremos los scripts que están en su código fuente(en el directorio /usr/local/src/sendmailanalyzer-9.2/start_scripts/), en este caso rc.sendmailanalyzer. Lo copiamos para /etc/init.d/ y lo lanzamos como servicio:

/etc/init.d/rc.sendmailanalyzer start

Configuraremos ahora nuestro apache para mostrar la web del sendmailanalyzer. Crearemos la configuración del sitio.

nano /etc/apache2/sites-available/sendmailanalyzer.conf

Dentro crearemos un alias a la web (si desea crear un vhost, tambien es válido)

Alias /sareport/ "/usr/local/sendmailanalyzer/www/"
<Directory "/usr/local/sendmailanalyzer/www/">
Options Indexes FollowSymLinks MultiViews ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex sa_report.cgi
AllowOverride All
Order allow,deny
Allow from all

Hay que destacar que con la opción Allow from all se permite la entrada a la web desde cualquier ip. Si desea que solo entre un ip en específico (ejemplo la del sysadmin o la del activista) cambie este parametro a Allow from x.x.x.x
Habilitamos el sitio y el módulo de CGI de nuestro servidor de apache y reiniciamos el apache.

a2ensite sendmailanalyzer.conf
a2enmod cgi
chown -R www-data:www-data /usr/local/sendmailanalyzer/www/
chmod 777 -R /usr/local/sendmailanalyzer/www/
service apache2 restart

Podremos acceder a nuestro sitio desde nuestro navegador através del link http://web.midomio.cu/sareport
La primera vez que entremos no tendra ningún dato que mostrar, por lo que tendremos que crearle la cache. Crearemos una tarea:

nano /etc/crontab

Para el reporte diario

# SendmailAnalyzer log reporting daily cache
0 1 * * * /usr/local/sendmailanalyzer/sa_cache > /dev/null 2>&1

Para análisis de servidores zimbra con mucho tráfico de correo, se recomienda hacer un cacheo cada 5 minutos y usar la opción -a (–actual-day-only) para solo crear la cache del día actual.

# On huge MTA you may want to have five minutes caching
*/5 * * * * /usr/local/sendmailanalyzer/sa_cache -a > /dev/null 2>&1

La cache se creará dentro de la carpeta /usr/local/sendmailanalyzer/data/. Dentro de la carpeta data se creará una estructura de carpetas compuesta del siguiente orden mailhost(nombre del host de correo)/year/month/day/.

Se puede apreciar en el camino /usr/local/sendmailanalyzer/data/correo/2017/06/ , donde correo es el mailhost, le sigue el año (2017), después el mes (06) y dentro se verán los días ya cacheados de ese mes.
Finalmente, la interfaz es muy intuitiva y no requiere de ninguna explicación. Los dejo con una captura del sendmailanalyzer en acción.

Espero les haya gustado el tutorial y cualquier duda comenten

alex out

Sé el primero en comentar

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*