O servidor de listas de correo Mailman

De Manuais Informática - IES San Clemente.
Revisión del 12:44 7 mar 2016 de Bruno (discusión | contribuciones) (Configuración de Apache para Mailman)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

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