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 update
apt upgrade
Comprobamos nuestra versión:
root@piler:~# cat /etc/debian_version
9.2
Ahora 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-memcached
make
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/piler
Dentro 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_postfix
Aquí les dejo la 2da parte.
alex out
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Creamos el de PILER usando el de ejemplo que está en ‘contrib/webserver’ editamos y lo copiamos a /etc/nginx/sites-enabled
DUDA: no encuentro como crear segun el ejemplo ‘contrib/webserver’
slds
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Hola
Aunque el post ya tiene mas de una año, pienso que admita mas comentarios
Mi duda no es respecto a la instalación de Piler, mas bien es respecto a la Resolución del MINCOM que dice lo de conservar los correos durante 1 año
¿En que resolución lo dice y en que artículo?
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0
Notas para la version 1.3.4
– cuando instalas php y sus dependencias puedes solamente usar por ejemplo php-fpm php-curl, esto instalara las ultimas versiones de php por lo tanto a la hora de configurar el virtualhost en nginx tendras que tenerlo en cuenta,
quedaria asi la linea de fastcgi para la version 7.2 de php `fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;`
– la ruta de la webUI esta mal esta en /var/piler/www hay que arreglarlo en el fichero `util/postinstall.sh`
– cuando pones Please enter the path of sphinx.conf [/etc/sphinxsearch/sphinx.conf] la configuracion no lo coge tienes que modificarlo en init.d/rc.searchd asi el proceso inicia bien.
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
En ubuntu 18.04 ni hay necesidad de hacer el cambio por libmysqlclient-dev pero es valida la aclaracion para los que instalen sobre 16.04 espero que sean los menos.
Mozilla/5.0 (Windows NT 6.2; rv:56.0) Gecko/20100101 Firefox/56.0
Hola, el block sobre activar el policyd funciona bien, solo para dominios de primer nivel, como se podría implementar para 2 o más niveles de dominios. Saludos
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Excellent pieces. Keep writing such kind of information on your blog.
Im really impressed by your site.
Hi there, You’ve performed an excellent job. I will certainly digg it and in my opinion recommend to my friends.
I am confident they will be benefited from this web site.
Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0
naturally like your web site but you need to test the spelling on quite
a few of your posts. A number of them are rife with spelling issues and I in finding it very
bothersome to inform the truth nevertheless I’ll definitely come again again.
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0
Hi! This is my 1st comment here so I just wanted to give a quick shout out and tell you I genuinely
enjoy reading your articles. Can you suggest any other blogs/websites/forums that deal with the same topics?
Thanks for your time!
Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Hola!
He seguido tu tutorial sin problemas 🙂 Solo añadir que en la pestaña Health el SMTP status me ponía ERROR, y era porque no permitíamos, según tu tutorial, en el /etc/hosts.allow las conexiones del propio servidor piler. Una vez permitidas y reiniciando el demonio, está OK.
Ahora bien, no consigo hacer un par de cosillas:
1) Redireccionar el correo al Piler. He configurado en mi servidor de correo el parámetro allways_bcc a la dirección [email protected], donde archive.dominio.local es el fqdn del host del piler, puesto a fuego en el /etc/hosts tanto del servidor de correo como del propio servidor piler, y [email protected] es el valor que he puesto en el parámetro $config[‘ADMIN_EMAIL’] del config.php del piler. He probado a hacer telnets al 25 del piler (tras permitir en el /etc/hosts.allow la direccion del servidor de correo y la del propio piler) y en el mail.log del piler veo el correo, así como que en la sección «Health» del piler veo que ha sumado ese correo de prueba, pero no tengo ni idea de cómo verlo, ni como usuario auditor. También tengo configurado el always_bcc del main.cf en el pos
2) Ver los correos. Relacionado con lo anterior, usé la herramienta de importación IMAP de mi servidor de correo actual e importé los correos de un mailbox. En la sección «Health» efectivamente los cuenta, pero ni entrando como auditor ni como el propio usuario propietario del mailbox los veo (el usuario primero lo creé local del piler y como no los veía, lo borré y configuré la autenticación vía IMAP).
Así que estoy esperando como agua de Mayo la segunda parte de este fenomenal tutorial. A ver si me esclarece alguna duda. La verdad es que la documentación oficial la encuentro bastante incomprensible y el desarrollador (un tal jsuto) es un poco… arisco, por decirlo de una forma educada: ni le he escrito porque ya veo cómo responde a todo aquél que le hace una pregunta (básicamente un RTFM).
Saludos!
Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Vaya, justo acabo de ver el pingback al blog de Jorge de la Cruz donde dice cómo ver los emails… sencillamente había que darle a buscar con el campo de búsqueda en blanco xD Ya puedo verlos tanto como el usuario auditor como con el usuario dueño del mailbox autenticado via IMAP.
Ahora a que me redirecciones los correos!
Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0
Ya consegúi redireccionar el correo de mi postfix a mi piler. Mirando detalladamente en los log de mail.log, vi que no reconocía el fqdn de la máquina resuelto via /etc/hosts. He tenido que hacer una entrada tipo A en el DNS, que es el que tienen en el DC Windows, unas entradas en el firewall para permitir dichas consultas DNS a la DMZ, que es donde se encuentra el servidor de correo. Una vez resuelto el nombre via DNS, los mails han empezado a redireccionarse. 🙂
Pues parece que ya está en marcha, ahora solo me falta hacer toda la importación actual de los todos los mailboxes y pasarlo a producción 😉
Muchas gracias por tu tutorial \o
Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Saludos, Reptil.
Te quedó bueno el post. Ya estoy pensando en algo al respecto. No obstante, te diré por PV algunos detalles que se pueden arreglar.
😀