Como todos los sysadmins sabemos, se nos exige por resolución, que debemos guardar por 1 año todos los correos electrónicos que entran y salen. No importa que solución de correo usemos, la tarea es engorrosa, sobre todo si poseemos muchos usuarios. Bueno hoy les mostrare una herramienta que nos permitirá solucionar este problema.
Que es piler?Piler es una solución avanzada open source de archivado de correos electrónicos con todas las características necesarias para una empresa.
Que beneficios nos reporta?
Con piler tendremos un repositorio central seguro de correos electrónicos que nos proporcionara información necesaria incluso si tus servidores de correos están caídos. El MinCom (Ministerio de las Comunicaciones) regula que usted debe preservar los correos electrónicos durante 1 año. Para cumplir con estas obligaciones, Piler guarda tus correos electrónicos en su almacenamiento a largo plazo. Con piler podremos proporcionar información relevante de manera oportuna en caso de descubrimiento de ilegalidades, también podemos auditar y revisar todo el correo almacenado incluyendo los adjuntos en una gran variedad de formatos.
Piler ahorra espacio de almacenamiento por compresión y deduplicación inteligente. También le permite descargar datos del servidor de correo a la carga, por lo tanto, minimiza los costos de almacenamiento.
Los correos electrónicos constituyen una fuente de conocimientos y datos por lo que una solución adecuada de archivado de correo electrónico le ofrece los siguientes beneficios:
- Respuesta rápida a las solicitudes de descubrimiento electrónico
- Reducir la carga del servidor de correo
- Ahorrar espacio de almacenamiento
- Proteger contra el desastre
Bueno pues pondremos mano a la obra. Les recomiendo paciencia y una buena conexión a Internet ya que debemos instalar un montón de dependencias.
1-Crearemos un contenedor con Debian 9 en nuestro proxmox (debera ser en proxmox 5).Nuestro CT podrá ser:
CPU: 2 cores
RAM: 4GB (puede ser mas si posees gran cantidad de tráfico de correo)
HDD: En la experiencia del usuario si ya tiene una medida de cuanto se lleva un año de salvas de correos. En mi caso serian 20GB para 50 usuarios con buzones de 500MB. Use 80GB.
Una vez levantado y establecida la conexión ssh con el mismo, procedemos a editar su source.list
nano /etc/apt/sources.list
Agregaremos esta línea al source.list:
deb http://ftp.debian.org/debian stretch-backports main
2-Seguido actualizamos nuestro Debian 9:
apt updateapt upgrade
Comprobamos nuestra versión:
root@piler:~# cat /etc/debian_version
9.2Ahora eliminaremos el postfix que trae el ct para no tener problemas:
root@piler:~# apt remove postfix
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
postfix
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 4010 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 20248 files and directories currently installed.)
Removing postfix (3.1.6-0+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...En este punto recomiendo hacerle un backup al CT por si tenemos que regresar por algun error.
3-Ahora vamos a instalar todas las dependencias necesarias para que funcione nuestro piler:
apt install nginx openssl libssl-dev mariadb-server default-libmysqlclient-dev sphinxsearch memcached build-essential ngrep python-mysqldb
Nota: en caso de usar Ubuntu como servidor solo cambia el paquete default-libmysqlclient-dev por libmysqlclient-dev
apt install php7.0-fpm php7.0-curl php7.0-gd php7.0-mysql php7.0-cli php7.0-imap php7.0-ldap php7.0-mbstring php-memcached
apt install libtre-dev sysstat gcc libwrap0 libwrap0-dev latex2rtf latex2html catdoc poppler-utils unrtf tnef unixodbc libpq5
apt install libzip-dev libzip4 zipcmp zipmerge ziptool
Las separe en bloques para que se vean mejor. Quiero resaltar que las librerías se llevan 1GB de tamaño así que, si tienen un repositorio local de debian 9 actualizado mucho mejor, sino mucha paciencia y buen ancho de banda.
Editar el archivo /etc/default/sphinxsearch y asegurarse que se muestre la siguiente línea:
START="no"
4- Crear un usuario sin privilegios para ejecutar Piler
groupadd piler useradd -g piler -m -s /bin/sh -d /var/piler piler usermod -L piler chmod 755 /var/piler
En este punto recomiendo hacerle un backup al CT por si tenemos que regresar por algún error.
5- Compilar Piler y configurarlo. Nos bajamos la última versión del piler de aqui (la version actual es piler-1.3.1 (~15.1 MB), 2017.10.15).La copiamos para nuestro CT en root y la descompactamos:
tar -zxvf piler-x.y.z.tar.gz cd piler-x.y.z
./configure --localstatedir=/var --with-database=mysql --enable-tcpwrappers --enable-memcachedmake make install
En este punto recomiendo hacerle un backup al CT por si tenemos que regresar por algún error.
Ejecute 'ldconfig' como root para asegurarse que la librería libpiler.so es reconocida. Sale de las primeras. Para comprobarlo ejecute el comando 'ldconfig -v' y podrá observar la librería cargada en detalles. En caso de que no se cargue, cree el archivo '/etc/ld.so.conf.d/piler.conf' y agregue: /usr/local/lib
6- Tareas de postinstalación:
La utilidad de postinstalación realiza una serie de preguntas, crea una base de datos para Piler, genera una llave de encriptación, copia los archivos de configuración de sphinxsearch, crea algunas tareas en el cron (del usuario piler) y finalmente copia el directorio de la GUI.
Ejecutar el siguiente comando:
# make postinstall
Responder las preguntas como sigue:
Please enter the webserver groupname [apache] www-data Please enter mysql hostname [localhost] Please enter mysql socket path [/var/run/mysqld/mysqld.sock] Please enter mysql database [piler] Please enter mysql username [piler] root [password] ponemos la clave de root [password] repetimos la clave de root Please enter the path of sphinx.conf [/etc/sphinxsearch/sphinx.conf] Please enter smtp relay [] Please enter smtp relay port [25]
Utilizar el usuario root para administrar la base de datos de Piler, puede ser una mala práctica ya que la contraseña es guardad en texto plano en /usr/local/etc/piler/piler.conf por lo que se recomienda crear un usuario y asignarle los permisos a la base de datos para Piler. Ya es a su opción cambiar el usuario que accede a la BD, que lo podrá hacer en el conf de piler.
NOTA: Nunca ejecute la utilidad anterior si actualiza Piler, está diseñada para la primera instalación.
7- Personalizar piler.conf
# nano /usr/local/etc/piler/piler.conf
configurar hostid=mailpiler.midominio.cu (poner el nombre de nuestro servidor piler)
Compruebe que la sección MySQL que coincida con los parámetros especificados por usted.
mysql_connect_timeout=2 mysqldb=piler mysqlpwd=password (la password de root que uso en el postinstall debe estar aqui) mysqlsocket=/var/run/mysqld/mysqld.sock mysqluser=root (cambiar esto si esta puesto a piler ponerlo a root)
También podrán configurar el tiempo por el que almacenarán sus correos (por defecto vienen como 7 años):
default_retention_days=396 (Aqui se almacenan por 13 meses)
8- Soporte TLS
Por defecto viene activado en el archivo de configuaración 'piler.conf' mediante las siguientes directivas:
tls_enable=1 pemfile=/usr/local/etc/piler.pem
El certificado como la llave son creados durante el proceso de postinstalación, para crear un nuevo certificado, así como su llave:
# openssl genrsa 2048 > /usr/local/etc/piler.pem # chmod 600 /usr/local/etc/piler.pem # openssl req -new -key /usr/local/etc/piler.pem > 1.csr # openssl x509 -in 1.csr -out 1.cert -days 3650 -req -signkey /usr/local/etc/piler.pem # cat 1.cert » /usr/local/etc/piler.pem
9- Ajustando la configuración para la GUI
Durante el proceso de postinstalación se definió directorio raíz para la GUI: /var/www/pilerDentro se encuentra el archivo 'config.php' que contiene los parámetros por defecto y el archivo 'config-site.php' en el cual se deben de realizar todos los ajustes. En caso de que se desee ajustar algún parámetro, se toma de 'config.php' y se agrega en 'config-site.php'. Para editar la información específica del sitio, así como la configuración de MySQL:
# nano /var/www/piler/config-site.php
Para evitar el error SMPT status piler error en la web de piler:
tomar la opcion PILER_HOST de config.php (linea 170) y ponerla en config-site.php
$config['PILER_HOST'] = '127.0.0.1'; (aqui debemos poner la ip de nuestro server piler o 127.0.0.1)
Si desea usar HTTPS en la GUI, edite el archivo anterior ajuste la siguiente línea como se muestra:
$config['SITE_URL'] = 'https://piler.dominio.cu/';
El config-site.php debe quedarles algo como esto (ejemplo de mi piler):
<?php
$config['SITE_NAME'] = 'piler.escfg.tur.cu';
$config['SITE_URL'] = 'http://' . $config['SITE_NAME'] . '/';
$config['DIR_BASE'] = '/var/www/piler/';
$config['SMTP_DOMAIN'] = 'piler.escfg.tur.cu';
$config['SMTP_FROMADDR'] = '[email protected]';
$config['ADMIN_EMAIL'] = '[email protected]';
$config['DB_DRIVER'] = 'mysql';
$config['DB_PREFIX'] = '';
$config['DB_HOSTNAME'] = 'localhost';
$config['DB_USERNAME'] = 'root';
$config['DB_PASSWORD'] = 'password';
$config['DB_DATABASE'] = 'piler';
$config['SMARTHOST'] = '';
$config['SMARTHOST_PORT'] = 25;
$config['PILER_HOST'] = '127.0.0.1';
$config['ENABLE_SYSLOG'] = 1;
?>Ustedes pueden agregar más configuraciones de 'config.php' a su gusto. Para evitar errores de operación le daremos permiso a la carpeta temp del piler (es la de la web de piler no la temp del debian).
chown piler:www-data /var/www/piler/tmp
10- Creando un Virtual Host para Piler
En dependencia del tipo de servidor web, el procedimiento puede variar. Básicamente lo que se hace es crear un Virtual Host y activar las reglas de re escritura. En el directorio de las fuentes en 'contrib/webserver' se encuentran ejemplos para Nginx y Apache2. Borramos el sitio por defecto:
rm /etc/nginx/sites-enabled/default
Creamos el de PILER usando el de ejemplo que está en 'contrib/webserver' editamos y lo copiamos a /etc/nginx/sites-enabled/Arreglamos esta linea del ejemplo que tiene un error:
root /var/piler/www; debe decir root /var/www/piler;
Reiniciamos todo el servicio web
systemctl restart nginx systemctl restart php7.0-fpm.service
11- Restringiendo el acceso a Piler
Para evitar que otros servidores de correo envíen mensajes a Piler es necesario activar el soporte 'tcp_wrappers', para ello editar el archivo '/etc/hosts.allow' y agregar:
piler: x.x.x.x: ALLOW (donde x.x.x.x es la ip del servidor de correos)
sshd: ALL: ALLOW ALL: ALL: DENY
Donde la primera línea indica que servidor puede acceder a Piler, la segunda permite acceso a ssh a todos y la última deniega el acceso a todos, para cerrar. Esto también se puede hacer mediante iptables.
NOTA: Esta opción puede traer muchos problemas de conexión entre el piler y el server de correo, puede provocar el error de Estado de SMTP: piler: Error. Deben revisar bien y si les da problema no la usen.
12- Iniciando sphinx search daemon y piler
NOTA: tenga presente que por defecto Piler corre sobre el puerto 25, por lo que dicho puerto debe encontrarse libre. Para cambiar el puerto, editar el archivo /usr/local/etc/piler/piler.conf y localizar la línea:
listen_port=25
luego poner el puerto deseado. Dentro de los archivos fuentes se encuentra el directorio 'init.d', el cual contiene los scripts de inicio para Piler y sphinxsearch. Para iniciarlos (antes debe de asignarles permisos de ejecución). En root nos pasamos a la carpeta donde están los fuentes:
#cd piler-1.3.1/
# sh init.d/rc.piler start # sh init.d/rc.searchd start
NOTA: En este punto puede darnos problemas el inciar el piler, al menos ese fue mi caso. El error puede estar dado por que el puerto (25) esta en uso. Como recordaran desintalamos el postfix del CT, pero no reiniciamos el CT. Por lo tanto, hacemos que los scripts inicien automático y después reiniciamos el CT.
Para agregar los scripts al inicio automático
# cp init.d/rc.piler /etc/init.d/ # cp init.d/rc.searchd /etc/init.d # cd /etc/init.d/ # update-rc.d rc.piler defaults # update-rc.d rc.searchd defaults
Una vez reiniciado el CT, comprobamos si los demonios iniciaron bien:
root@piler:~# /etc/init.d/rc.searchd status
searchd is running.
root@piler:~# /etc/init.d/rc.piler status
piler is running.13- Accediendo a la GUI por primera vez
Para acceder a Piler escriba en el navegador: http://piler.dominio.cu o http://IP-del-server (esto depende de cómo se estableció la variable '$config['SITE_URL']' en /var/www/piler/config-site.php).
Por defecto es creada una cuenta (usuario:clave):
admin@local:pilerrocks
La cual se debe de cambiar la contraseña inmediatamente. El usuario auditor@local puede ver los correos de todos, por lo que se recomienda establecer una contraseña y realizar las búsquedas por dicha cuenta. Así es como luce nuestro piler:

Bueno y hasta aquí esta 1era parte donde les muestro como instalar solamente nuestro server de archivado de correos electrónicos. En una segunda parte les mostrare como configurarlo para archivar correos de un postfix o exim.
EXTRA: Si queremos saber si el piler está funcionando bien y a la escucha contra nuestro postfix podemos usar el comando ngrep
ngrep -X -e port 25 and host ip_postfixAquí les dejo la 2da parte.
alex out






No comments yet