iRedMail · 8 min read · Sep 26, 2025

Instalando iRedMail y Mailman en Debian Squeeze

Instalando iRedMail y Mailman en Debian Squeeze

Versión: 1
Autor: Jason Norwood-Young
Última edición: 22 de diciembre de 2011

Soy un gran fan de iRedMail, que es básicamente una versión empaquetada de Postfix y otras cosas que hacen que Postfix sea genial, como Spamassassin, greylisting y un backend LDAP o MySql. Una cosa que quería con iRedMail es Mailman, mi servidor de listas de correo favorito. Integrar los dos puede ser una misión, así que aquí hay algunas instrucciones para ahorrarte bastante dolor.

Los chicos de iRedMail ofrecen una consola de administración gratuita para gestionar cuentas de usuario. Me suscribo a la versión Pro de la consola de administración de iRedMail, que es muy útil para que los clientes se autogestionen. No tengo nada que ver con iRedMail, aparte de ser un cliente.

1. Configurando el servidor

Estoy instalando en una instalación limpia de Debian Squeeze. Lo primero que siempre hago en un nuevo servidor es:

apt-get update   
apt-get upgrade   
dpkg-reconfigure tzdata

La última línea te permite establecer tu zona horaria. No es estrictamente necesario para nuestros propósitos, pero considero que es una buena práctica configurarlo.

Ahora necesitamos configurar un nombre de dominio completamente calificado (FQDN). Eso significa que necesitamos un dominio como mailserver.example.com en lugar de solo mailserver. Para comprobar cuál es tu nombre de host, escribe:

hostname -f

NOTA: El nombre de dominio que elijas debe ser diferente del dominio de correo electrónico que deseas usar. Si quieres que tu correo provenga de [email protected], no hagas que el nombre de tu servidor sea example.com; dale un subdominio como obiwan o captainkirk o (si eres aburrido como yo) mailserver.

Si ya tienes un FQDN, puedes pasar al paso 2.

El nombre de dominio se establece en dos lugares: /etc/hostname y /etc/hosts.

Edita tu /etc/hostname para que contenga tu FQDN (para los propósitos de este tutorial usaré mailserver.example.com).

Para tu archivo /etc/hosts, tu primera línea debería verse así:

127.0.0.1     mailserver.example.com mailserver localhost localhost.localdomain

Ahora solo necesitamos decirle al sistema que registre el cambio:

/etc/init.d/hostname.sh   
hostname -f

Ahora deberías ver un FQDN. Si no obtienes uno, ¡entra en pánico! Er, quiero decir, reinicia y verifica de nuevo.

2. Instalando iRedMail

En el momento de escribir esto, la versión de iRedMail es 0.7.3. Consulta en www.iredmail.org para la última versión y ajusta en consecuencia.

cd ~   
wget http://iredmail.googlecode.com/files/iRedMail-0.7.3.tar.bz2   
apt-get install bzip2   
tar xjf iRedMail-0.7.3.tar.bz2   
cd iRedMail-0.7.3   
bash iRedMail.sh

iRedMail instalará todo lo que necesitas. Acepta todos los valores predeterminados excepto por el backend: elige MySql en lugar de LDAP. Cuando se te pida tu primer dominio de correo virtual, pon example.com, NO mailserver.example.com. Responde Sí siempre que se te pregunte.

¡Ahora tienes un servidor de correo impresionante! Eso fue fácil, ¿eh?

3. Instalando Mailman

Primero instalamos Mailman:

apt-get install mailman

Notarás que Mailman aún no se inicia. Primero necesitamos decirle a Postfix que envíe correo a Mailman cuando reciba correo de ciertas direcciones.

4. Configurando cuentas de Transporte y Alias

Vamos a crear un dominio virtual llamado lists.example.com, que vamos a usar para todas nuestras cosas de Mailman. Siempre que algo se envíe al dominio lists.example.com, lo vamos a reenviar al programa Mailman en lugar de manejarlo como un correo normal.

Dado que no queremos que nuestra lista de correo esté en el dominio lists.example.com, sino más bien en example.com, también configuraremos un montón de alias para aceptar los correos enviados a las direcciones de Mailman en example.com y en su lugar redirigirlos a lists.example.com.

Vamos a hacer todo esto a través de la base de datos MySql. Apunta un navegador a https://example.com/phpmyadmin. Nota que es https y no solo http. También ten en cuenta que si no tienes un servidor de nombres apuntando a tu dirección IP ya, es posible que necesites agregar example.com a tu archivo /etc/hosts en tu computadora local.

Inicia sesión con el usuario root y la contraseña que elegiste durante la instalación de iRedMail. Si no puedes recordar ningún detalle, consulta ~/iRedMail-0.7.3/iRedMail.tips; iRedMail guarda convenientemente las ubicaciones, nombres de usuario y contraseñas para todos los servicios de iRedMail allí.

Haz clic en la base de datos “vmail” en el panel izquierdo, y luego en la pestaña “SQL”. Pega el siguiente comando en la pestaña (después de cambiar el dominio por el tuyo, por supuesto) y presiona Ir:

INSERT INTO `vmail`.`domain` (`domain`, `description`, `disclaimer`, `aliases`, `mailboxes`, `maxquota`, `quota`, `transport`, `backupmx`, `defaultuserquota`, `defaultuseraliases`, `defaultpasswordscheme`, `minpasswordlength`, `maxpasswordlength`, `created`, `modified`, `expired`, `active`) VALUES ('lists.example.com', '', '', '0', '0', '0', '0', 'mailman:', '0', '1024', '', '', '0', '0', NOW(), '0000-00-00 00:00:00', '9999-12-31 00:00:00', '1');

Eso configuró nuestro Transporte para obtener todo de lists.example.com a la aplicación Mailman.

Ahora necesitamos agregar los alias de Mailman. Necesitarás hacer esto cada vez que agregues una nueva lista a Mailman, solo busca y reemplaza “mailman” con el nombre de tu nueva lista y ejecuta el SQL nuevamente.

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

5. Configurando Postfix

De vuelta a la línea de comandos. Necesitamos ejecutar:

postconf -e 'relay_domains = lists.example.com'   
postconf -e 'mailman_destination_recipient_limit = 1'   
/etc/init.d/postfix reload

6. Desactivar Greylisting

Ahora probablemente querrás desactivar el Greylisting. El Greylisting simplemente devuelve todo el correo que recibe de un nuevo remitente. Si el remitente intenta enviar de nuevo en un tiempo, probablemente no sea un bot de spam. Es muy efectivo para detener el spam, pero a menudo significa retrasos entre alguien enviándote un correo y tú recibiéndolo. En el caso de Mailman, si el mensaje a Mailman se retrasa una hora, hace que el sistema se sienta poco receptivo, especialmente para nuevos suscriptores. También hace que las pruebas sean un problema. No necesitas desactivarlo; la siguiente parte es opcional.

Edita /etc/postfix-policyd.conf:

[...]  
GREYLISTING=0  
[...]  

Ahora reinicia el servicio de políticas de Postfix:

/etc/init.d/postfix-policyd restart

7. Configurando Mailman

Vamos a decirle a Mailman que envíe correos desde @example.com en lugar de @lists.example.com. Sin embargo, todos los enlaces que envíe deben provenir del dominio lists.example.com. Esto se debe a que vamos a configurar un dominio virtual solo para Mailman.

pico /etc/mailman/mm_cfg.py
[...]  
DEFAULT_URL_PATTERN = 'http://%s/'  
[...]  
DEFAULT_EMAIL_HOST = 'example.com'  
[...]  
DEFAULT_URL_HOST = 'lists.example.com'

8. Configurando Apache

Casi hemos terminado. Solo necesitamos configurar el servidor Apache para servir el sitio web de Mailman cada vez que vayamos a lists.example.com. No olvides configurar este dominio en /etc/hosts o tu servidor de nombres.

pico /etc/apache2/sites-available/mailman
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/  
Alias /pipermail/ /var/lib/mailman/archives/public/  
Alias /images/mailman/ /usr/share/images/mailman/  
  
    AllowOverride None  
    Options ExecCGI  
    AddHandler cgi-script .cgi  
    Order allow,deny  
    Allow from all  
    Satisfy Any  
  
  
    Options FollowSymlinks  
    AllowOverride None  
    Order allow,deny  
    Allow from all  
  
  
    AllowOverride None  
    Order allow,deny  
    Allow from all  
  
  
    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  

Ahora solo necesitamos habilitar este host virtual.

a2ensite mailman   
mkdir /var/www/lists   
apache2ctl restart

9. Creando tu primera lista

La primera lista de Mailman siempre es “mailman”. Para crear esta lista, ejecuta:

newlist mailman

Completa la dirección de correo electrónico y la contraseña de tu administrador. Te pedirá que presiones Enter para notificar al administrador. Cuando lo hagas, no recibirás un correo inmediatamente. Tenemos un paso más que hacer:

/etc/init.d/mailman start

Una vez que hagamos eso, el administrador de la lista debería recibir un correo con un enlace a la interfaz de administración de la nueva lista.

Si eso funciona, también querrás probar las suscripciones (solo envía un correo en blanco a [email protected]). Si recibes una confirmación de suscripción y puedes hacer clic en el enlace, entonces lo más probable es que todo esté funcionando al 100%. Si no, ¡entra en pánico! Quiero decir, echa un vistazo a /var/log/mail.log para tener una idea de qué está saliendo mal.

Consejo: para mantener un ojo en el registro de correo, usa:

tail -f /var/log/mail.log

Si necesitas intentar recrear la lista de Mailman, primero ejecuta:

rmlist mailman

10. Creando más listas

Para crear una lista llamada “listname”, primero agrega los alias de la nueva lista a la tabla de alias en la base de datos MySql vmail:

INSERT INTO `alias` (`address`, `goto`, `name`, `moderators`, `accesspolicy`, `domain`, `created`, `modified`, `expired`, `active`) VALUES
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1),
('[email protected]', '[email protected]', '', '', 'public', 'example.com', NOW(), NOW(), '9999-12-31 00:00:00', 1);

Una vez que eso esté hecho, ejecuta este comando para crear una nueva lista:

newlist listname

¡Diviértete con tu nuevo servidor Mailman! Espero que crees algunas grandes comunidades de correo electrónico.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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