Installare e configurare Mailman con Sendmail

Da Linux User Group Scandiano.
Information icon.png
Cosa tratta questa guida?

Questa pagina contiene una guida all'installazione e configurazione di GNU Mailman con Postfix. La guida è stata redatta dal LUG consultando diverse guide[1][2] presenti in rete e sulla base dei problemi riscontrati nel corso dell'installazione su Debian Wheezy.

Prerequisiti

Per utilizzare questa guida è necessario avere soddisfatto i seguenti pre-requisiti:

  • Avere un webserver Apache2 installato e funzionante su una macchina GNU/Linux
  • Avere i DNS opportunamente configurati per puntare sul server che si desidera configurare sia con il record A (per l'accesso all'interfaccia web della mailing list), che con il record MX.

Instazione di mailman

La prima operazione da compiere è installare GNU Mailman selezionando, nel corso dell'installazione, i linguaggi desiderati. Per installare digitare il comando:

aptitude install mailman

Configurazione di Apache

GNU Mailman viene fornito con un modello di configurazione per il virtual host di Apache. Questo file è salvato in /etc/mailman/apache.conf e può essere copiato in/etc/apache2/sites-available/mailman.conf. Il file mailman.conf dovrebbe contenere una configurazione simile alla seguente, nella quale ovviamente è necessario rimpiazzare il valore ServerName con quello del proprio server.

<VirtualHost *:80>
ServerName lists.example.com
DocumentRoot /var/www/lists
ErrorLog /var/log/apache2/lists-error.log
CustomLog /var/log/apache2/lists-access.log combined

<Directory /var/lib/mailman/archives/>
    Options FollowSymLinks
    AllowOverride None
</Directory>

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
</VirtualHost>

Prima di attivare il virtual host è necessario creare la root del virtual host:

mkdir /var/www/lists

Successivamente abilitare il virtual host di apache e riavviare il servizio:

cd /apache2/sites-available/
a2ensite malman.conf
/etc/init.d/apache2 restart

Configurazione di Mailman

Editare il file /etc/mailman/mm_cfg.py correggendo le righe seguenti in base ai propri parametri

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

Installare e configurare postfix

Per installare postfix digitare:

aptitude install postfix

Successivamente scegliere nelle opzioni di configurazione "Sito internet". Poi configurarlo con i comandi seguenti:

postconf -e 'relay_domains = lists.example.com'
postconf -e 'mailman_destination_recipient_limit = 1'

Verificare inoltre che nel file /etc/postfix/master.cf sia presente la configurazione per mailman come riprotato sotto:

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

Definire il transport di postfix con il seguente comando

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

e aggiungere il contenuto seguente nel file /etc/postfix/transport

lists.example.com      mailman:

eseguire il comando

postmap -v /etc/postfix/transport

e successivamente riavviare postfix con

/etc/init.d/postfix restart

Creare la lista mailman

Lanciare il comando newlist per creare la lista mailman e seguire le istruzioni. Al termine della procedura verranno elencati tutti gli alias come di seguito:

## mailman mailing list
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"

Copiarli in /etc/aliases e lanciare il comando

newaliases
/etc/init.d/postfix restart
/etc/init.d/malman start

Per rendere attive le modifiche

Creare una nuova lista

Per aggiungere una nuova mailing list è possibile procedere alla sua creazione attraverso l'interfaccia web. Successivamente sarà necessario aggiungere la lista degli alias nel file /etc/aliases. Per ottenere la lista degli alias da incollare è possibile lanciare lo script /var/lib/mailman/bin/genaliases[3]. Una volta inserito il file in/etc/aliases. Lanciare il comando:

newaliases 

Installazione della traduzione in italiano

A quanto pare[4] se Debian viene installato in lingua inglese è possibile che ci siano delle difficoltà ad abilitare la traduzione di Mailman in italiano.

Per prima cosa abilitare le seguenti configurazioni di mailman:

DEFAULT_SERVER_LANGUAGE = 'it'
DEFAULT_PREFERRED_LANGUAGE = 'it'
DEFAULT_AVAILABLE_LANGUAGES = ['it', 'en']

Successivamente verificare che nella cartella /var/lib/mailman/templates sia presente il template IT. Se non è presente occorre scaricare il sorgente della versione di Mailman in uso ed estrarre la cartella IT da collocare nei template.


Problemi di permessi

La fresh installation di mailman su Debian Wheezy non è esente da bug[5] che rendono inaccessibile l'archivio della mailing list. Per correggere il problema si può lanciare lo script check_perms del pacchetto mailman con il flag -f. Questo risolverà i problemi di accesso agli archivi privati ma non agli archivi pubblici. Per risolvere il problema di accesso agli archivi pubblici è necessario intervenire a mano impostando il proprietario della cartella /var/lib/mailman/archives/private a www-data come riportato di seguito:

drwxrws--- 8 www-data list 4096 set 10 21:37 private

Note

  1. Guida di HowToForge
  2. Manuale di installazione di GNU Mailman
  3. Come indicato nel manuale di GNU Mailman
  4. Vedi: http://www.rigacci.org/wiki/doku.php/doc/appunti/linux/sa/mailman
  5. Vedi Bug#603904