O servidor de listas de correo Mailman
Mailman é un software gratuíto para a xestión de discusión a través de correo electrónico e listas de e-newsletter. Mailman está integrado coa web, o que facilita aos usuarios administrar as súas contas e aos propietarios da lista administrar as súas listas. Mailman soporta o almacenamento de ficheiros, sistema de devolución (bounce) automático, filtrado de contidos, entrega de resumo diario (colgante), filtros de spam e moito máis.
As características máis importantes de Mailman son:
- Administración via web.
- Moderación de listas, subscrición a listas abertas e pechadas, listas pechadas de membros, filtros en mensaxes, etc.
- Almacenamento de arquivos enviados e xestión a través de ferramenta web.
- Detección de spam ou correo lixo.
Para poder instalar este servizo teremos que asegurarnos previamente de:
- O servidor web Apache.
- O servidor de correo electrónico Postfix
Instalación
Para instalar Mailman en Debian/Ubuntu farémolo instalando o paquete 'mailman:
apt-get install mailman
O asistente de instalación preguntará polos idiomas de configuración do Mailman.
Tamén necesitaremos ter no equipo instalado e configurado o Postfix.
Pasos previos de configuración
Previamente antes de crear a primeira lista, establecemos uns parámetros básicos coma o dominio do enderezo de correo electrónico da lista, o nome do equipo que aloxará a interface web, idioma, e axente de correo (MTA) que retransmitirá o correo.
Editamos o ficheiro /etc/mailman/mm_cfg.py e introducimos
# Default domain for email addresses of newly created MLs
DEFAULT_EMAIL_HOST = 'example.com'
# Default host for web interface of newly created MLs
DEFAULT_URL_HOST = 'listas.example.com'
MTA='Postfix'
Necesitaremos engadir no servidor DNS:
- Un rexistro tipo A para o equipo que ten instalado o servidor de correo Postfix, por exemplo smtp.example.com
- Un rexistro tipo MX co nome do dominio do email, que apunte ao rexistro tipo A que ten instalado o Postfix
- Un rexistro tipo A para o equipo que ten instalado o Mailman, e que aloxará o interface web.
Creación da lista mailman
Unha vez que completamos a integración de Mailman e o noso servidor de correo, necesitamos crear unha lista especial denominada "mailman". Esta lista utilízase para enviar recordatorios de contrasinais e é necesaria para o correo funcionamento de Mailman.
newlist mailman
Pediranos datos, do enderezo de correo do administrador da lista, e o seu contrasinal.
No ficheiro /var/lib/mailman/data/aliases debería aparecer os "alias" da lista mailman. O contido debería ser:
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"
Se non aparece, xenéranse co comando
/usr/lib/mailman/bin/genaliases
Por último reiniciamos o servizo mailman
service mailman start
Configuración de Postfix para Mailman
Editamos o ficheiro de configuración de Postfix, por exemplo usando o comando postconf
postconf -e 'alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases'
postconf -e 'alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases'
#Aquí indicamos o nome do dominio correspondente ao enderezo das listas
postconf -e 'mydestination = exampe.com , localhost'
postconf -e 'owner_request_special = no'
postconf -e 'recipient_delimiter = +'
postconf -e 'unknown_local_recipient_reject_code = 550'
postconf -e 'mailbox_command = /usr/bin/procmail -a "$EXTENSION"'
postconf -e 'relay_domains = example.com'
Reiniciamos o servidor Postfix
service postfix start
e xeramos de novo os alias dos enderezos de correo das listas.
newaliases
Configuración de Apache para Mailman
Primeiro habilitamos o módulo cgi
a2enmod cgi
Cando instalamos Mailman, créase un ficheiro de configuración de exemplo para que poidamos utilizalo na nosa configuración de Apache. Podemos instalalo como sitio virtual de Apache
A configuración do sitio virtual podería ser a seguinte:
<VirtualHost *:80>
ServerName listas.example.com
RedirectMatch ^/$ http://listas.example.com/cgi-bin/mailman/listinfo
ErrorLog /var/log/apache2/lists-error.log
CustomLog /var/log/apache2/lists-access.log combined
<Directory /usr/lib/cgi-bin/mailman/>
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>
<Directory /var/lib/mailman/archives/public/>
Options FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /usr/share/images/mailman/>
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory /var/lib/mailman/archives/>
Options FollowSymLinks
AllowOverride None
</Directory>
ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
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/
</VirtualHost>
Habilitamos o novo sitio virtual
a2ensite mailman.conf
service apache2 reload
E por ultimo, xa podemos acceder ao novo sitio virtual que conten o interface web de mailman http://lists.example.com
Xestión de listas
Existen comandos para o manexo de listas:
- newlist para crear listas.
- rmlist -a Nome lista para eliminar unha lista.
Hai dous contrasinais que se poden crear dende a liña de comandos e que se poden utilizar na web.
- A Site Password pódese utilizar en calquera parte do sistema, sempre que se nos solicite un contrasinal para realizar calquera acción. Este contrasinal danos acceso á administración de calquera lista e pode ser utilizado para acceder como calquera usuario. Pensa en algo similar a unha password de root en Linux.
- A List Creator Password ou contrasinal de creación de listas. Este contrasinal pódese utilizar para delegar o traballo de creación de listas a outros usuarios, sen proporcionarlles o privilexio de administrador. Por suposto que a persoa que teña a "Site Password" tamén poderá crear listas, pero o creador de listas ten limitado o seu rol soamente a iso e nada máis.
Para a xestión via web, é necesario crear previamente os dous contrasinais dende a liña de comandos e reiniciar o servizo mailman.
Suscrición a listas
Os usuarios poderán unirse e borrarse da lista, accedendo a interface web das listas e introducindo o seus enderezos de correo electrónico, ou ben enviando unha mensaxe aos enderezos de xestión da lista:
Para subscribirse a unha Lista, enviar un correo electrónico a:
NomeLista-subscribe@example.com
Para cancelar a subscrición á Lista, enviar un correo electrónico a:
NomeLista-unsubscribe@example.com
Para publicar unha mensaxe na Lista, enviar un correo electrónico a:
NomeLista@example.com
Para obter axuda sobre comandos da lista, enviar un correo electrónico a:
NomeLista-request@example.com --- poñendo como Asunto: help
Tarefas de Mantemento de Mailman
Algunhas características de Mailman requiren que se executen tarefas cada certo tempo, polo que deberemos configurar o noso cron para executar certos programas a esas horas determinadas. Configuración do cron
Mailman inclúe un ficheiro de exemplo con todas as tarefas a realizar para que as incluamos no noso cron. Ese ficheiro está en /usr/lib/mailman/cron/crontab.in
Temos que engadir esas instrucións ao noso crontab (comando crontab -e), copiando o contido do ficheiro, ou executando
crontab -l >novocron
cat /usr/lib/mailman/cron/crontab.in >>novocron
crontab novocron