… 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.localmacrosque 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