Linux:Listes de diffusion avec Mailman et Postfix
Un article de Djjnet.
Sommaire |
Installer mailman
apt-get install mailman
Configurer mailman
Modifier le fichier /etc/mailman/mm_cfg.py :
# Liste mailman :
MAILMAN_SITE_LIST = 'mailman'
# Domaine par défaut pour les listes créées :
DEFAULT_EMAIL_HOST = 'dj-j.net'
# Site par défaut pour les listes créées :
DEFAULT_URL_HOST = 'mailman.dj-j.net'
# Valider les paramètres par défaut :
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#Langue par défaut :
DEFAULT_SERVER_LANGUAGE = 'fr'
# Lien avec postfix :
MTA='Postfix'
# Listes virtuelles pour gérer plusieurs domaines :
# Liste des domaines gérés :
POSTFIX_STYLE_VIRTUAL_DOMAINS = ['dj-j.net','dj-j.org']
# Association en les sites web (apache) et les domaines :
VIRTUAL_HOSTS = { 'mailman.dj-j.net': 'dj-j.net' ,
'listes.dj-j.org': 'dj-j.org'
}
Paramétrer la liste système mailman
newlist mailman config_list -i /var/lib/mailman/data/sitelist.cfg mailman
Définir les mots de passes principaux
Mot de passe global qui a accès à tout :
mmsitepass <your-site-password>
Mot de passe qui permet de créer des listes :
mmsitepass -c <list-creator-password>
Vérifier les droits des dossiers
/var/lib/mailman/bin/check_perms -f
Paramétrer postfix
Dans le fichier main.cf :
- ajouter :
unknown_local_recipient_reject_code = 550
- modifier ainsi pour les alias et les virtuels :
alias_maps = hash:/etc/aliases hash:/var/lib/mailman/data/aliases alias_database = hash:/etc/aliases hash:/var/lib/mailman/data/aliases virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf hash:/var/lib/mailman/data/virtual-mailman
Dans mon cas d'utilisation avec mon serveur de mail complet Linux:Serveur_de_mail_avec_CyrusImap_Sieve_Postfix_Clamav_Dspam J'ai besoin d'interroger dans une base mysql l'existence des adresses emails, donc j'ajoute une tâche planifiée pour mettre à jour une table SQL :
Fichier /etc/cron.hourly/updatelist
#!/bin/bash
for addr in $(grep '^[^$,#]' /var/lib/mailman/data/virtual-mailman|awk '{ print $1 }')
do
mysql --defaults-file=/etc/mysql/debian.cnf mail -e "REPLACE lists_mailman (address) VALUES ('${addr}');"
done
Créer la table :
use mail CREATE TABLE `lists_mailman` (`address` char(50) NOT NULL, PRIMARY KEY (`address`));
Paramétrage d'apache
<Directory /usr/lib/cgi-bin/mailman>
AllowOverride All
Options MultiViews -Indexes Includes FollowSymLinks
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /var/lib/mailman/archives/public>
AllowOverride All
Options MultiViews -Indexes Includes FollowSymLinks
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<Directory /usr/share/images/mailman>
AllowOverride All
Options MultiViews -Indexes Includes FollowSymLinks
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
<VirtualHost *:80> ServerAdmin webmaster@dj-j.net ServerName mailman.dj-j.net ServerAlias listes.dj-j.org ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/ Alias /pipermail/ /var/lib/mailman/archives/public/ Alias /images/mailman/ /usr/share/images/mailman/ ErrorLog /var/log/apache2/mailman.dj-j.net-error_log CustomLog /var/log/apache2/mailman.dj-j.net-access_log combined </VirtualHost>


