Instalación y configuración de Piler en Debian 9 con Nginx y MariaDB. (1ra Parte)

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 resvisar 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 q debemos instalar un montón de dependencias.

1-Crearemos un contenedor con Debian 9 en nuestro proxmox (debera ser en proxmox 5).Nuestro CT podra 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:

Ahora eliminaremos el postfix que trae el ct para no tener problemas:

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 repo 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

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):

Ustedes pueden agregar más configuraciones de ‘config.php’ a su gusto. Para evitar errores de operacion 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 reescritura. 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 opcion puede traer muchos problemas de conexion 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 estan 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 reinciado el CT, comprobamos si los demonios inciaron bien:

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:
[email protected]:pilerrocks

La cual se debe de cambiar la contraseña inmediatamente. El usuario [email protected] puede ver los correos de todos, por lo que se recomienda establecer una contraseña y realizar las búsquedas por dicha cuenta. Asi es como luce nuestro piler:

Bueno y hasta aquí esta 1era parte donde les muestro como instalar solamente nuestro server de archivado de correos electronicos. 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

Aquí les dejo la 2da parte.

alex out

(Visited 1.333 times, 1 visits today)
Sobre Alexander Rivas Alpizar 23 Artículos
Administrador de Redes de EMPRESTUR Cienfuegos

10 Comentarios

  1. 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!

    • 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!

    • 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

  2. 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.

  3. 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.

  4. 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.

Dejar una contestacion

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


*