Partiendo de una instalación "limpia" de Debian 5 64bits.
Se dispone de un dominio principal de la organización, llamado "prueba.com". Para no interferir con el servidor de correo principal esta máquina se llamara "lists.prueba.com" y gestionará las listas como
"nombrelista@lists.prueba.com"
Pasos previos:
#apt-get install ntp
Es importante que el servidor esté siempre sincronizado para que la hora de los mensajes sea correcta.
Instalar Apache2:
#apt-get install apache2
Instalar postfix:
#apt-get install postfix
Configurar como "Internet Site", nombre del host "lists", nombre de dominio "prueba.com".
Testear que el servicio de correo funciona, enviándo un mensaje de prueba a una dirección de correo real.
#echo "mensaje de prueba" | /usr/sbin/sendmail direccionreal@dominio.com
Instalar "Mailman" y el paquete de ayuda a la configuración de listas:
#apt-get install mailman listadmin
Iniciar todos los servicios necesarios
#/etc/init.d/apache2 start
#/etc/init.d/postfix start
#/etc/init.d/mailman start
Generar la lista principal de "Mailman". Es necesaria para que la aplicación funcione:
#newlist mailman
El "Gestor de la lista" debe ser una dirección de correo real, ya que ahí van a llegar las peticiones de alta, moderación, etc.
La "clave inicial" será la contraseña de administración de la lista.
La lista inicial "mailman" es ficticia y solamente se utiliza para el funcionamiento interno de Mailman.
Una vez generado la lista inicial, o cualquier lista futura, se deben seguir los pasos indicados y añadir al archivo "/etc/aliases" las lineas que aparecen:
## lista de distribuci�n mailman
mailman: "|/var/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/var/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/var/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman"
Y posteriormente se debe ejecutar el comando:
#newaliases
que se encarga de leer el nuevo estado del archivo.
Desde este momento el servicio de listas de correo es operativo. Ya se pueden generar otras listas de correo y es posible acceder al gestor web de Mailman desde:
http://lists.prueba.com/cgi-bin/mailman/listinfo/
Archivos de lista.
Por defecto Mailman guarda una copia de cada mensaje que gestiona y genera unos archivos HTML de consulta de todo el tráfico. Para que la visualización de esta bitácora funcione, deben añadirse las siguientes lineas al archivo "/etc/apache2/apache2.conf"
Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/
y reiniciar Apache2:
#/etc/init.d/apache2 restart
Acceso seguro SSL al gestor web de Mailman.
Por defecto el Apache estará escuchando el puerto 80 y las conexiones al gestor web de Mailman no están cifradas. Ya que en estas conexiones pueden enviarse contraseñas, es una buena práctica modificar el servidor web para que escuche por el puerto 443/SSL.
Hacer esto de forma aislada provoca que el gestor web de Mailman falle a la hora de mostrar algunas páginas o de ejecutar ciertos script cgi. El efecto más conocido es cuando tratamos de hacer la moderación de un correo o de aprobar una invitación de alta o revocación.
Esto se soluciona cambiando el esquema de mailman:
Para servicio:
#/etc/init.d/mailman stop
Editar "/usr/lib/mailman/Mailman/mm_cfg.py" y cambiar la linea
[...]
DEFAULT_URL_PATTERN = 'http://%s/cgi-bin/mailman/'
[...]
por
[...]
DEFAULT_URL_PATTERN = 'https://%s/cgi-bin/mailman/
[...]
Esto hace que la web de todas las listas nuevas funcione correctamente. Si hay listas creadas previamente seguirán fallando. Para propagar el cambio a las listas ya creadas, ejecutar:
#/usr/lib/mailman/bin/withlist -l -a -r fix_url
Iniciar servicio:
#/etc/init.d/mailman start
Filtrado de SPAM con SpamAssassin.
Filtro Spam:
#apt-get install spamassassin#mkdir /var/lib/spamassassin
# useradd -r -d /var/lib/spamassassin -s /sbin/nologin -c 'SpamAssassin' spamassassin
Editar "/etc/default/spamassassin"
[...]
ENABLED=1
SAHOME="/var/lib/spamassassin/"
OPTIONS="--create-prefs --max-children 5 --username spamassassin --helper-home-dir ${SAHOME} -s ${SAHOME}spamd.log"
CRON=0
[...]
Editar "/etc/spamassassin/local.cf"
use_bayes 1
bayes_auto_learn 1
Comprobar que existen los manejadores de spamassassin para mailman. deben existir los archivos siguientes:
/usr/lib/mailman/Mailman/Handlers/SpamAssassin.py
/usr/lib/mailman/Mailman/Handlers/spamd.py
Activar el filtrado en mailman.
Editar "/usr/lib/mailman/Mailman/mm_cfg.py"
Descomentar la linea
GLOBAL_PIPELINE.insert(1, 'SpamAssassin')
Definir las variables que dicen cuando descartar un mensaje, etc:
SPAMASSASSIN_DISCARD_SCORE = 7.5
SPAMASSASSIN_HOLD_SCORE = 5
SPAMASSASSIN_MEMBER_BONUS = 2
Explicación de las variables:
SPAMASSASSIN_DISCARD_SCORE: If a message receives a score above this limit, the message will be discarded without moderation. The default value for this variable is 10.
SPAMASSASSIN_HOLD_SCORE: If a message receives a score above this limit, the message will be held for moderation. The default value for this variable is 5.
SPAMASSASSIN_MEMBER_BONUS: If the message was sent by a member of the list, an adjustment can be performed on the score. This makes it less likely that a message claiming to come from a list member will be held for moderation. The default value for this variable is 2.
Reiniciar "mailman"
#/etc/init.d/mailman restart
Esta solución esta sacada de: http://wiki.list.org/display/DOC/4.27+Securing+Mailman%27s+web+GUI+by+using+Secure+HTTP-SSL
Manuel de Mailman:
http://www.gnu.org/software/mailman/docs.html