… porque al final es un mecanismo casi universal de acceso a la información.
Y para ello estoy instalando un gestor de listas de correo con el que tengo ya cierta experiencia llamado Sympa. Está escrito en Perl, es bastante robusto y dispone de un completo interfaz web con el que gestionar las listas, los subscriptores y el archivo de las mismas.
El programa está empaquetado para Debian en una versión relativamente reciente así que eso es lo que voy a emplear.
Para funcionar Sympa precisa de:
- Un nombre de dominio para las listas como por ejemplo grupos.taquiones.net.
- Un servidor de correo amigable que permita despachar correo a ciertas direcciones empleando programas.
- Una base de datos compatible.
- Espacio en disco para archivar los correos.
- Un servidor web para gestionar el interfaz visual. También admite órdenes vía mensajes de correo pero eso lo hace muy inapropiado para el humano medio
Configuración
La configuración es prácticamente automática con la instalación del paquete. Se pregunta el nombre del dominio del correo, el tipo de base de datos y sus credenciales, y el servidor web que va a dar acceso al interfaz web.
No hay que hacer mucho más que asegurarse de que el servidor de correo se entiende con Sympa y que servidor web hace lo mismo por su parte.
Conectando con exim4
Al parecer la configuración no es del todo automática en este caso ya que existen varios problemas:
- A partir de cierta versión de Exim4 ya no se permiten los alias que conectan con procesos (pipes)
- Los alias de las listas de correo son gestionados por Sympa en un archivo especial del que Exim4 no tiene constancia inicialmente.
Para el primer problema, y teniendo una configuración fragmentada en Exim4, se añaden las siguientes definiciones al archivo /etc/exim4/exim4.conf.localmacros
que crean un transporte para el enrutador system_aliases
#-------------- # Activating pipe transport in system_aliases router (pipes in /etc/aliases) .ifndef SYSTEM_ALIASES_PIPE_TRANSPORT SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe .endif .ifndef SYSTEM_ALIASES_USER SYSTEM_ALIASES_USER = sympa .endif .ifndef SYSTEM_ALIASES_GROUP SYSTEM_ALIASES_GROUP = sympa .endif #--------------
Luego añadimos un nuevo enrutador para los alias de las listas en el archivo /etc/exim4/conf.d/router/450_local-config_sympa_aliases
sympa_aliases: debug_print = "R: system_aliases for $local_part@$domain" driver = redirect domains = +local_domains allow_fail allow_defer data = ${lookup{$local_part}lsearch{/etc/mail/sympa/aliases}} user = sympa group = sympa pipe_transport = address_pipe
Situándolo en un servidor virtual con Apache
La configuración que me ha funcionado dentro de un servidor virtual es la siguiente:
<VirtualHost *:443> ServerAdmin admin@empresa.net ServerName listas.empresa.net Include /etc/apache2/ssl.conf LogLevel debug ErrorLog /var/log/apache2/listas.empresa.net/error.log CustomLog /var/log/apache2/listas.empresa.net/access.log Combined <Location /sympa> SetHandler fcgid-script Require all granted </Location> ScriptAlias /sympa /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi <Location /sympasoap> SetHandler fcgid-script Require all granted </Location> ScriptAlias /sympasoap /usr/lib/cgi-bin/sympa/sympa_soap_server-wrapper.fcgi Alias /static-sympa /var/lib/sympa/static_content <Directory /var/lib/sympa/static_content> Require all granted </Directory> ## Si todo el servidor virtual está dedicado a Sympa RewriteEngine on RewriteRule ^/?$ /sympa [R=301] </VirtualHost>
La parte más complicada de entender es que los programas web de Sympa necesitan acceder al mismo contenido que los programas de correo del programa, en las mismas condiciones. Apache funciona con www-data como cuenta mientras que Sympa lo hace con sympa. De ahí que sea necesario utilizar un programa envoltorio con el atributo suid para que llegue a funcionar.
Acceso de usuarios vía LDAP
Sympa tiene varios mecanismos para validar las credenciales de los usuarios que pueden usarse en cadena; todos se incluyen en el archivo /etc/sympa/auth.conf
en un orden específico para intentar.
ldap regexp .* host ldap.empresa.net:389 timeout 30 suffix ou=users,dc=empresa,dc=net get_dn_by_uid_filter (uid=[sender]) get_dn_by_email_filter (|(mail=[sender])(mailalternateaddress=[sender])) email_attribute mail scope sub user_table regexp .*
Como puede verse la primera y a veces única directiva es una expresión regular que puede filtrar el tipo de mecanismo a emplear.
Personalizando interfaz web
Para el logotipo se puede emplear la directiva logo_html_definition en el archivo /etc/sympa/sympa/sympa.conf
logo_html_definition <a href="http://listas.empresa.net"><img style="float: left; margin-top: 7px; margin-left: 37px;" src="https://empresa.net/images/empresa-net-med.png" alt="Listas de Venexma" /></a>
Enlaces y referencias