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 tzdataLa ú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 -fNOTA: 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.localdomainAhora solo necesitamos decirle al sistema que registre el cambio:
/etc/init.d/hostname.sh
hostname -fAhora 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.shiRedMail 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 mailmanNotará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 reload6. 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 restart7. 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/mailmanScriptAlias /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 restart9. Creando tu primera lista
La primera lista de Mailman siempre es “mailman”. Para crear esta lista, ejecuta:
newlist mailmanCompleta 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 startUna 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.logSi necesitas intentar recrear la lista de Mailman, primero ejecuta:
rmlist mailman10. 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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.