Buscar en este blog

27.1.11

Gestor de listas de correo: Debian, Postfix y MailMan

Se pretende configurar un sistema de gestión de listas de correo con MailMan. Además debe disponer de acceso seguro SSL a la web de gestión (Apache2 + mod_ssl) de MailMan y detección de Spam (SpamAssassin).

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