Zimbra implementacion de cbpolicyd en zimbra 8.X para el control de envio de correo nacional e internacional(CUBA)

Esta es la versión en sysadminsdecuba del manual de Arian Molina Aguilera (@linuxcuba en telegram), me toca ser su editor, 😀 .

Entendiendo que es Cluebringer Policyd, para que se utiliza y su implementación en Zimbra

Cluebringer Policyd (Policyd V2) es un servicio multi-plataforma que permite implementar políticas de seguridad anti-spam para servidores MTA. PolicyD es un software desarrollado en C que permite implementar políticas de seguridad en nuestro servidor MTA con facilidad: control de acceso, gestión de EHLO/HELO, gestión de SPF, Greylisting, cuotas, accounting e integración con amavis. Para poder ver todas las funcionalidades que nos ofrece este sistema, aconsejo que se den una vuelta por su sitio web oficial.

Les comento que cuando vi esta variante de control se me hizo la vida un poco más fácil, porque es una herramienta mediante la cual puedes establecer políticas de manera muy rápida y de efecto casi inmediato.
A partir de la versión 7.1 de Zimbra, se añadió este servicio, el cual nos permite tener un control exhaustivo del correo que entrada y salida de nuestro servidor, aparte de darle nuevas funcionalidades al sistema de antispam. El sistema de Policyd por defecto viene deshabilitado en el sistema cuando instalamos Zimbra y no lo podemos habilitar mediante la administración web de manera estándar.

Vamos a entrar en contenido, primero nos autenticamos en nuestro server con el usuario Zimbra, y hacemos las verificaciones iniciales para el servicio cbpolicyd.

#nos logueamos con el usuario zimbra
su - zimbra
#comprobamos si esta instalado y si existe el servicio
zmprov gs `zmhostname` | grep zimbraServiceInstalled
#instalamos el servicio de no estar
zmprov ms `zmhostname` +zimbraServiceInstalled cbpolicyd

Si entramos a la consola de administración de Zimbra veremos que es servicio esta listado con el resto pero esta deshabilitado(si estoy usando las imágenes del anual de Arian).

servicios zimbra

#habilitamos el servicio
zmprov ms `zmhostname` +zimbraServiceEnabled cbpolicyd
#comprobamos que fue habilitado correctamente
zmprov gs `zmhostname` | grep zimbraServiceEnabled | grep cbpolicyd
#esta debe ser la salida del comandoanterior
zimbraServiceEnabled: cbpolicyd

 

cbpolicyd habilitado

Después de un par de minutos, zmconfigd detecta que tenemos el servicio habilitado y automáticamente instala la base de datos y nos inicia el servicio de Policyd. Esperamos un par de segundos y verificamos que el servicio está funcionando correctamente.

zmcbpolicydctl status
#mostrando como resultado
policyd is running


Una vez el servicio de Policyd esté funcionando, hemos de indicarle al servidor de postfix (MTA de Zimbra) que cuando llegue un correo, lo reenvié al puerto 10031, que es donde escucha por defecto Policyd:

zmprov mcf +zimbraMtaRestriction "check_policy_service inet:127.0.0.1:10031"
zmprov ms `zmhostname` zimbraMtaEnableSmtpdPolicyd TRUE
#Habilitamos el módulo a emplear, AccessControl: Para el control de acceso a los correos de entrada y salida.
zmprov ms `zmhostname` zimbraCBPolicydAccessControlEnabled TRUE
zmprov ms `zmhostname` zimbraCBPolicydCheckHeloEnabled TRUE
zmprov ms `zmhostname` zimbraCBPolicydCheckSPFEnabled TRUE
#Reiniciamos los servicios de Policyd y de postfix, para que se apliquen los cambios que hemos realizado
zmcbpolicydctl restart && zmmtactl restart

Ya tenemos el servicio habilitado y corriendo. En la documentación oficial de la wiki de Zimbra las modificaciones en cada uno de los módulos habilitados se hace directamente en las bases de datos mediante sentencias sql pero nos haremos más fácil la vida haciendo accesible la web administrativa de Policyd.

Creamos enlaces simbólicos para la Web de Policyd

Los enlaces tenemos que hacerlos con el usuario root por lo tanto debemos salir del usuario Zimbra que hemos usado hasta ahora lo hacemos con exit, ademas vamos a hacer uno para las versiones 8.6.x de Zimbra y otro para los que usen la versión 8.7.x y superior

#Zimbra8.6.x 
ln -s /opt/zimbra/cbpolicyd/share/webui/ /opt/zimbra/httpd/htdocs/policyd
#Editamos la configuración de módulo de administración de policyd
nano /opt/zimbra/cbpolicyd/share/webui/includes/config.php
#Zimbra 8.7.x o superior
ln -s /opt/zimbra/common/share/webui/ /opt/zimbra/data/httpd/htdocs/policyd
#Editamos la configuración de módulo de administración de policyd
nano /opt/zimbra/common/share/webui/includes/config.php
#En el fichero de configuracion comentamos la linea
$DB_DSN="mysql:host=localhost;dbname=cluebringer";
#Agregamos  debajo de ella agregamos lo siguiente
$DB_DSN="sqlite:/opt/zimbra/data/cbpolicyd/db/cbpolicyd.sqlitedb";

Ya con esto garantizamos que la Web de Administración funcione correctamente y podemos acceder a la misma a través de la dirección http://zimbra.subdominio.localdomain:7780/policyd/index.php nos mostrará la pagina siguiente:

policyd

Volvemos a autenticar con el usuario Zimbra su - zimbra

 

#si no tienen ccze instalenlo se los recomiendo
tailf /opt/zimbra/log/cbpolicyd.log | ccze

Ahora vamos a la segunda y mejor parte de este manual que donde configuramos las políticas a aplicar.

Vamos a Policies->Groups creamos un grupo voy a llamarlo  «g_nacionales», en la parte superior de Policy Lists vamos a Actions->Add

Grupo Nacionales

Después de crear la política tenemos que habilitarla marcamos la política y vamos a Action->change que mostrar para actualizar la política y decir que no esta deshabilitada como se crea por defecto.

Una vez habilitada solo nos queda agregarle los miembros los miembros no son mas que los usuarios que van a formar parte de ese grupo y que solo van a enviar correos nacionales, lo hacemos en Action->Members

y agregamos a nuestro primer usuario, y agregariamos usuario@dominio.

Para no seguir el tedioso proceso para todos los usuarios que vamos a agregar en ese grupo encontré una variante, alternativa que les comparto en este otro articulo (primero terminen este, :P), recomiendo agreguen un usuario va a ser útil para el desarrollo de esa variante.

Lo que crees en policyd debe ser habilitado porque todo se crea deshabilitado por defecto, por lo que tienes que seleccionar
cada uno y usa Action->Change y
en disabled poner no para habilitarlo.

Con esto ya tenemos nuestro primer usuario agregado al grupo «g_nacionales» ahora continuamos con las acciones que vamos a aplicarle.

Creamos en Policies->Groups el grupo dominio_cu y agregamos un miembro a este grupo @*.cu es decir todos los dominios .cu, vamos a Action->change y habilitamos el grupo y quedaria de la siguiente forma.

Ya tenemos los grupos ahora vamos a crear las políticas para garantizar la comunicación de entre los grupos, para eso vamos a Policies->Main y en Actions->Add vamos a agregar la política para la entrada de correos, hemos utilizado el nombre p_nacionales_in con una prioridad de 15 como se ve a continuación.

Una vez creada la política vamos a agregarle como miembro la restricción de que solo permita la entrada de el grupo dominio_cu para las cuentas del grupo g_nacionales:

El resultado va a ser una vista como la siguiente y recuerden habilitarla.

Nuevamente vamos a Policies->Main y en Actions->Add donde vamos a agregar p_nacionales_out con una prioridad de 15 como vemos a continuación.

En esta política vamos a agregar como miembro con la configuración de salida de correos para dominios nacionales.

El resultado va a ser la siguiente vista y recuerden habilitarlo.

Para los no programadores el símbolo ‘!‘ es la negación es decir lo contrario por tanto !%dominio_cu quiere decir los que no sean cu.

Hasta aquí hemos creado las políticas con sus respectivos miembros una para la entrada desde los dominios .cu y otra para la salida de correos hacia los dominios .cu, ahora vamos a crear las reglas de control de acceso en las que se deniegue la entrada y la salida desde y hacia los dominios .cu para los usuarios miembros de grupo g_nacionales.

Para agregar las reglas de control de acceso vamos a AccessControl->Configure y en Actions->Add.

Entrada de correo

 

Se vincula esta regla a la política p_nacionales_in y el veredicto es REJECT devolviendo en el mensaje de error al usuario que envía el correo el mensaje: Este usuarios solo puede recibir correos de dominios .cu
Recuerda que también tienes que habilitar esta regla.

 

Creamos la regla de control de acceso para la salida de correos nacionales

salida de correo

Se vincula esta regla a la política p_nacionales_out y el veredicto es REJECT devolviendo en el mensaje de error al usuario que envía el correo el mensaje: Su cuenta de correo solo puede enviar correos nacionales.
Recuerda que también tienes que habilitar esta regla.

 

 

 

Con esto concluimos la configuración, cbpolicyd puede usarse para muchas otras configuraciones como las cuotas de los usuarios pero eso es tema de otro articulo. Hasta la próxima.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuar!

Promedio de puntuación 5 / 5. Recuento de votos: 10

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Sobre Rafael L. Salgueiro 12 artículos
Administrador de redes y sistemas. Melómano, hedonista Usuario de GNU/Linux, Linux-User: #418573. Amante de las tecnologías en general.