Mailing List · 5 min read · Sep 09, 2025

Cómo instalar y configurar Mailman (con Postfix) en Debian Squeeze

Cómo instalar y configurar Mailman (con Postfix) en Debian Squeeze

Versión 1.0
Autor: Falko Timme
Sígueme en Twitter

Mailman es un gestor de listas de correo de código abierto, es decir, se puede utilizar para gestionar discusiones por correo electrónico y listas de boletines. Probablemente sea el gestor de listas de correo más popular y ampliamente utilizado en Internet. Este tutorial explica cómo instalar y configurar Mailman en un servidor Debian Squeeze con un servidor de correo Postfix.

¡No garantizo que esto funcione para ti!

1 Nota Preliminar

En este tutorial configuraré un host virtual con el nombre de host lists.example.com donde instalaré Mailman. lists.example.com también es la parte correcta de las direcciones de correo electrónico de la lista de correo que se configurarán en Mailman, es decir, los correos a una lista de correo deberán enviarse a la dirección @lists.example.com.

Como tu nombre de host será diferente, ajusta este tutorial en consecuencia. También asegúrate de que tu nombre de host exista en DNS.

Mailman se puede utilizar con muchos servidores de correo (por ejemplo, Postfix, Exim, Sendmail, Qmail). Utilizaré Postfix en este tutorial. Asegúrate de tener una instalación de Postfix funcionando, por ejemplo, como se muestra en este tutorial: Usuarios y dominios virtuales con Postfix, Courier, MySQL y SquirrelMail (Debian Squeeze)

2 Instalando Mailman y Apache

Como Mailman viene con un frontend web, necesitamos un servidor web además de Mailman. Elijo Apache. Mailman y Apache se pueden instalar de la siguiente manera:

apt-get install mailman apache2

Verás las siguientes preguntas/mensajes:

Idiomas a soportar: <– es (Español)
Lista de sitios faltante
Mailman necesita una llamada “lista de sitios”, que es la lista desde la cual se envían recordatorios de contraseña y similares. Esta lista debe ser creada antes de que Mailman comience. Para crear la lista, ejecuta “newlist mailman” y sigue las instrucciones en pantalla. Ten en cuenta que también necesitas iniciar Mailman después de eso, usando /etc/init.d/mailman start. <– Ok

Mailman viene con un archivo de configuración de Apache, /etc/mailman/apache.conf, que copiamos a /etc/apache2/sites-available/mailman.conf:

cp /etc/mailman/apache.conf /etc/apache2/sites-available/mailman.conf

Abre /etc/apache2/sites-available/mailman.conf…

vi /etc/apache2/sites-available/mailman.conf

… y añade la siguiente configuración de vhost al archivo (ya hay un vhost para lists.example.net en el archivo que está comentado - por favor no uses ese vhost ya que mi configuración de vhost difiere un poco aunque se vea bastante similar):

| [...] ServerName lists.example.com DocumentRoot /var/www/lists ErrorLog /var/log/apache2/lists-error.log CustomLog /var/log/apache2/lists-access.log combined Options FollowSymLinks AllowOverride None Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ScriptAlias /admin /usr/lib/cgi-bin/mailman/admin ScriptAlias /admindb /usr/lib/cgi-bin/mailman/admindb ScriptAlias /confirm /usr/lib/cgi-bin/mailman/confirm ScriptAlias /create /usr/lib/cgi-bin/mailman/create ScriptAlias /edithtml /usr/lib/cgi-bin/mailman/edithtml ScriptAlias /listinfo /usr/lib/cgi-bin/mailman/listinfo ScriptAlias /options /usr/lib/cgi-bin/mailman/options ScriptAlias /private /usr/lib/cgi-bin/mailman/private ScriptAlias /rmlist /usr/lib/cgi-bin/mailman/rmlist ScriptAlias /roster /usr/lib/cgi-bin/mailman/roster ScriptAlias /subscribe /usr/lib/cgi-bin/mailman/subscribe ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo |

La penúltima línea ScriptAlias / /usr/lib/cgi-bin/mailman/listinfo es opcional; hace que cuando vayas a http://lists.example.com/, seas redirigido a http://lists.example.com/listinfo. Esto tiene sentido si no tienes archivos que servir en la raíz del documento /var/www/lists.

A continuación, crea la raíz del documento /var/www/lists, habilita la configuración del vhost lists.example.com y reinicia Apache:

mkdir /var/www/lists
a2ensite mailman.conf
/etc/init.d/apache2 restart

Debido a que estamos utilizando un vhost aquí (lists.example.com), necesitamos ajustar las siguientes variables en /etc/mailman/mm_cfg.py:

vi /etc/mailman/mm_cfg.py

| [...] DEFAULT_URL_PATTERN = 'http://%s/' [...] DEFAULT_EMAIL_HOST = 'lists.example.com' [...] DEFAULT_URL_HOST = 'lists.example.com' [...] |

3 Configurando Postfix

Ahora necesitamos configurar Postfix. Primero ejecuta:

postconf -e ‘relay_domains = lists.example.com’
postconf -e ‘mailman_destination_recipient_limit = 1’

Luego abre /etc/postfix/master.cf…

vi /etc/postfix/master.cf

… y asegúrate de que tienes las siguientes líneas en él (deberían estar allí por defecto):

| [...] mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} [...] |

A continuación, debemos asociar el dominio lists.example.com al transporte de mailman. Cómo lo hagas depende de tu configuración de Postfix. Por ejemplo, si has configurado tu servidor de acuerdo con el tutorial Usuarios y dominios virtuales con Postfix, Courier, MySQL y SquirrelMail (Debian Squeeze), los transportes se almacenan en una base de datos MySQL; en la mayoría de otras configuraciones, el archivo /etc/postfix/transport se utiliza para crear transportes. Voy a describir ambos casos en los capítulos 3.1 y 3.2.

3.1 Transportes en una base de datos MySQL

Si has configurado tu servidor de acuerdo con el tutorial Usuarios y dominios virtuales con Postfix, Courier, MySQL y SquirrelMail (Debian Squeeze), los transportes se almacenan en la tabla de transporte en la base de datos MySQL mail. Para crear el transporte necesario, inicia sesión en MySQL…

mysql -u root -p

… y ejecuta los siguientes comandos de MySQL:

USE mail;
INSERT INTO transport (domain, transport) VALUES (‘lists.example.com’, ‘mailman:’);
quit;

Reinicia Postfix después:

/etc/init.d/postfix restart

3.2 Transportes en /etc/postfix/transport

Si no tienes tu transporte en una base de datos MySQL, probablemente uses el archivo /etc/postfix/transport. En este caso, puedes configurar el transporte necesario de la siguiente manera:

postconf -e 'transport_maps = hash:/etc/postfix/transport'

Abre /etc/postfix/transport…

vi /etc/postfix/transport

… y añade la siguiente línea:

| lists.example.com mailman: |

Ejecuta

postmap -v /etc/postfix/transport

despues y reinicia Postfix:

/etc/init.d/postfix restart   

4 Creando la lista de correo mailman

Antes de que podamos comenzar a usar Mailman, debemos crear una lista de correo llamada mailman; esto es obligatorio - sin ella Mailman no comenzará:

newlist --urlhost=lists.example.com --emailhost=lists.example.com mailman

En la mayoría de los casos, los switches –urlhost y –emailhost no son necesarios porque nuestro vhost ya se llama lists.example.com, y también lo tenemos en /etc/mailman/mm_cfg.py (DEFAULT_EMAIL_HOST y DEFAULT_URL_HOST), pero si quieres asegurarte de que Mailman utiliza el nombre de host correcto, utiliza estos switches.

root@server1:~# newlist –urlhost=lists.example.com –emailhost=lists.example.com mailman
Ingresa el correo electrónico de la persona que ejecuta la lista: <– especifica la dirección de correo electrónico del administrador de la lista, por ejemplo, [email protected]
Contraseña inicial de mailman: <– mailman_password
Para terminar de crear tu lista de correo, debes editar tu archivo /etc/aliases (o equivalente) añadiendo las siguientes líneas, y posiblemente ejecutando el programa newaliases:

lista de correo 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”

Presiona enter para notificar al propietario de mailman… <– ENTER

root@server1:~#

Ahora abre /etc/aliases y añade los alias que ves en la salida del comando newlist (esto debe hacerse manualmente para cada nueva lista que crees):

vi /etc/aliases

| [...] ## lista de correo 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" |

Cada vez que modifiques /etc/aliases, necesitas ejecutar

newaliases
/etc/init.d/postfix restart

despues.

Ahora finalmente podemos iniciar Mailman:

/etc/init.d/mailman start

root@server1:~# /etc/init.d/mailman start
Iniciando el qrunner maestro de Mailman: mailmanctl.
root@server1:~#

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.