Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
mailman [Le 05/03/2008, 17:28] – déplacée depuis /serveur/mailman ; mise aux normes Ner0lph | mailman [Le 04/08/2020, 14:41] (Version actuelle) – [Les liste de diffusions Mailman] 80.8.5.240 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | ====== Les liste de diffusions Mailman ====== | ||
+ | |||
+ | |||
+ | {{serveur: | ||
+ | |||
+ | **Mailman** est une application libre pour gérer des listes de diffusion électroniques, | ||
+ | |||
+ | <note warning> | ||
+ | la version inclue par défaut dans le [[pu> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Pré-requis ===== | ||
+ | |||
+ | Il est nécessaire, | ||
+ | |||
+ | |||
+ | ==== Apache2 ==== | ||
+ | |||
+ | [[Apache2]] est déjà disponible dans les dépôts, donc [[: | ||
+ | ==== Exim4 ==== | ||
+ | |||
+ | <note important> | ||
+ | [[: | ||
+ | |||
+ | Une fois Exim4 installé, les fichiers de configuration se trouvent dans « /etc/exim4/ ». Dans Ubuntu, par défaut, les fichiers de configuration de Exim4 sont répartis en plusieurs fichiers. | ||
+ | |||
+ | Vous pouvez changer ceci en éditant la variable ci-dessous dans « / | ||
+ | < | ||
+ | dc_use_split_config=' | ||
+ | |||
+ | Si vous faites face à un problème durant l' | ||
+ | |||
+ | ==== Mailman ==== | ||
+ | |||
+ | [[: | ||
+ | |||
+ | Cette dernière copiera les fichiers d' | ||
+ | Enfin, le programme créera le groupe et l' | ||
+ | |||
+ | |||
+ | ===== Configuration ===== | ||
+ | |||
+ | Pour cette section, il est nécessaire que vous ayez complété avec succès l' | ||
+ | |||
+ | ==== Apache ==== | ||
+ | |||
+ | Une fois l' | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | Mailman utilise Apache pour créer un rendu de ses scripts CGI. Les scripts de Mailman se trouvent dans le dossier « / | ||
+ | <file xml> | ||
+ | Ceci aura pour effet de poser le répertoire **/ | ||
+ | Alias /archives/ / | ||
+ | |||
+ | Vous pouvez évidemment fignoler les préférences, | ||
+ | <file xml>< | ||
+ | AllowOverride None | ||
+ | Options ExecCGI | ||
+ | Order allow,deny | ||
+ | Allow from all | ||
+ | </ | ||
+ | < | ||
+ | Options Indexes MultiViews FollowSymLinks | ||
+ | AllowOverride None | ||
+ | Order allow,deny | ||
+ | Allow from all | ||
+ | </ | ||
+ | |||
+ | Pensez à activer le module cgi de Apache2 par la commande suivante : | ||
+ | |||
+ | sudo a2enmod cgi | ||
+ | |||
+ | ==== Exim4 ==== | ||
+ | |||
+ | Pour que Mailman puisse fonctionner avec Exim4, vous êtes supposé configurer ce dernier. Comme mentionné plus haut, par défaut, Exim4 utilise de multiples fichiers de configurations, | ||
+ | |||
+ | Pour démarrer Mailman, nous devons ajouter un nouveau fichier de configuration avec les catégories suivantes : | ||
+ | * Configuration globale (main) | ||
+ | * Transport | ||
+ | * Routeur (router) | ||
+ | |||
+ | Exim crée un fichier principal de configuration, | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | |||
+ | |||
+ | === Configuration globale (main) === | ||
+ | |||
+ | Tous les fichiers de configuration concernant le type « main » sont stockés dans le dossier « / | ||
+ | |||
+ | < | ||
+ | # start | ||
+ | # Home dir for your Mailman installation -- aka Mailman' | ||
+ | # directory. | ||
+ | # By default this is set to "/ | ||
+ | # On a Red Hat/Fedora system using the RPM use "/ | ||
+ | # On Debian using the deb package use "/ | ||
+ | # This is normally the same as ~mailman | ||
+ | MM_HOME=/ | ||
+ | # | ||
+ | # User and group for Mailman, should match your --with-mail-gid | ||
+ | # switch to Mailman' | ||
+ | MM_UID=list | ||
+ | MM_GID=list | ||
+ | # | ||
+ | # Domains that your lists are in - colon separated list | ||
+ | # you may wish to add these into local_domains as well | ||
+ | domainlist mm_domains=bluestar.co.in | ||
+ | # | ||
+ | # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | ||
+ | # | ||
+ | # These values are derived from the ones above and should not need | ||
+ | # editing unless you have munged your mailman installation | ||
+ | # | ||
+ | # The path of the Mailman mail wrapper script | ||
+ | MM_WRAP=MM_HOME/ | ||
+ | # | ||
+ | # The path of the list config file (used as a required file when | ||
+ | # verifying list addresses) | ||
+ | MM_LISTCHK=MM_HOME/ | ||
+ | # end | ||
+ | </ | ||
+ | |||
+ | === Transport === | ||
+ | |||
+ | Tous les fichiers de configuration concernant le type « transport » sont stockés dans le dossier « / | ||
+ | |||
+ | < | ||
+ | mailman_transport: | ||
+ | | ||
+ | | ||
+ | ' | ||
+ | | ||
+ | | ||
+ | | ||
+ | current_directory = MM_HOME | ||
+ | home_directory = MM_HOME | ||
+ | user = MM_UID | ||
+ | group = MM_GID | ||
+ | </ | ||
+ | |||
+ | === Routeur (router) === | ||
+ | |||
+ | Tous les fichiers de configuration concernant le type « router » sont stockés dans le dossier « / | ||
+ | |||
+ | < | ||
+ | mailman_router: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | ==== Mailman ==== | ||
+ | |||
+ | Modifiez d' | ||
+ | DEFAULT_EMAIL_HOST = ' | ||
+ | DEFAULT_URL_HOST = ' | ||
+ | L' | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | Créez ensuite une liste de diffusion, ici « mailman »: | ||
+ | <code bash> | ||
+ | |||
+ | Entrez l' | ||
+ | Mot de passe initial de la liste mailman : | ||
+ | Pour achever la création de votre liste de diffusion, vous devez | ||
+ | modifier votre fichier / | ||
+ | lignes suivantes et peut être exécuter le programme « newaliases »: | ||
+ | |||
+ | liste de diffusion ## mailman | ||
+ | mailman: | ||
+ | mailman-admin: | ||
+ | mailman-bounces: | ||
+ | mailman-confirm: | ||
+ | mailman-join: | ||
+ | mailman-leave: | ||
+ | mailman-owner: | ||
+ | mailman-request: | ||
+ | mailman-subscribe: | ||
+ | mailman-unsubscribe: | ||
+ | |||
+ | Tapez sur Entrée pour aviser le propriétaire de mailman... | ||
+ | </ | ||
+ | |||
+ | Nous avons configuré Exim afin qu'il reconnaisse tous les courriels de Mailman. Ainsi, il n'est plus obligatoire de créer des entrées dans « / | ||
+ | |||
+ | Enfin, démarrez Mailman : | ||
+ | |||
+ | sudo / | ||
+ | |||
+ | Pour avoir le site web en français, modifier la ligne suivante du fichier: | ||
+ | <file - / | ||
+ | DEFAULT_SERVER_LANGUAGE = ' | ||
+ | </ | ||
+ | ===== Administration ===== | ||
+ | |||
+ | {{ serveur: | ||
+ | |||
+ | Nous allons maintenant voir comment administrer Mailman. Cette étape considère que l' | ||
+ | |||
+ | Mailman fournit une administration web facile d' | ||
+ | |||
+ | La liste de diffusion par défaut « mail » devrait apparaître sur l' | ||
+ | |||
+ | Vous pouvez créer une nouvelle liste de diffusion en utilisant l' | ||
+ | |||
+ | ==== Gestion des rebonds ==== | ||
+ | Les rebonds (bounces) correspondent à des refus de distribution du serveur de mail du destinataire. Les rebonds sont tracés dans le fichier / | ||
+ | |||
+ | ===== Utilisateurs ===== | ||
+ | |||
+ | Mailman fournit aussi une interface web pour les utilisateurs. Pour y accéder, entrez le lien suivant dans votre navigateur : | ||
+ | http:// | ||
+ | |||
+ | La liste de diffusion par défaut, « mailman », devrait apparaître à l' | ||
+ | |||
+ | ===== Handlers ===== | ||
+ | ==== Principe ==== | ||
+ | Il peut être utile de modifier les mails que l’on envoie d’une manière n’étant pas prévue par Mailman. Dans cette optique on peut vouloir par exemple changer les en-têtes d’un mail, le corps des messages ou tout simplement effectuer une modération selon certains critères préprogrammés. | ||
+ | |||
+ | Le traitement des mails depuis leur réception jusqu’à leur renvoi à la liste est décomposé par Mailman en plusieurs phases, appelées « Handlers », dont l’ordre et l’usage est défini dans le fichier « Mailman/ | ||
+ | |||
+ | < | ||
+ | GLOBAL_PIPELINE = [ | ||
+ | ' | ||
+ | ' | ||
+ | … | ||
+ | ' | ||
+ | ' | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | Tous les handlers de cette liste sont des fichiers contenant du code en Python et sont situés dans le répertoire « Mailman/ | ||
+ | |||
+ | ==== Handlers personnalisés==== | ||
+ | === Avantages=== | ||
+ | Les handlers personnalisés ont plusieurs avantages : | ||
+ | * Ils permettent de ne pas modifier le code original de l’application. Cela évite les dommages collatéraux non prévus et facilite la maintenance ultérieure par une tierce personne. | ||
+ | * Ils ne seront pas affectés par une mise à jour de l’application. | ||
+ | * Ils permettent de n’être appliqués qu’à une collection spécifique de listes. Le code du handler n’a donc pas à effectuer de filtre pour savoir s’il doit, ou non, s’appliquer en fonction de la liste qui l’appelle. | ||
+ | * Tous les changements sont regroupés ce qui permet une désactivation ou suppression aisée du comportement modifié. | ||
+ | |||
+ | === Code=== | ||
+ | Un handler est codé en python. Il doit nécessairement définir la fonction « process(mlist, | ||
+ | * mlist est l’instance de la liste | ||
+ | * msg est l’instance du mail | ||
+ | * msgdata contient les méta-données du mail | ||
+ | Toutes les méthodes relatives à la liste ou au message peuvent donc être appelées à l’intérieur de cette fonction. | ||
+ | Toutes les modifications qui sont effectuées dans cette fonction affecteront le message et donc le traitement qui sera effectué par les handlers suivants. Il convient donc de placer le handler personnalisé au bon endroit dans le pipeline de traitement du mail. | ||
+ | |||
+ | === Insertion du handler=== | ||
+ | Considérons que notre handler personnalisé a bien été créé et est sauvegardé dans le répertoire « Mailman/ | ||
+ | Pour cela je vous laisse vous reporter à la liste de handlers que nous avons vu plus haut (le champ GLOBAL_PIPELINE dans le fichier « Defaults.py »). | ||
+ | Pour l’exemple nous allons le positionner avant le handler « Moderate ». | ||
+ | Une fois que l’on sait où placer notre code, il existe plusieurs moyens de le faire prendre en compte par l’application : | ||
+ | * L’insertion globale qui va l’appliquer à toutes les listes sans modifier les autres handlers. Nous allons alors éditer le fichier de configuration de Mailman (/ | ||
+ | < | ||
+ | GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index(' | ||
+ | </ | ||
+ | * Le remplacement global, qui va remplacer un des handlers par défaut par notre nouveau handler. Comme au dessus, nous allons ajouter dans le fichier de configuration de Mailman la ligne suivante : | ||
+ | < | ||
+ | GLOBAL_PIPELINE[GLOBAL_PIPELINE.index(' | ||
+ | </ | ||
+ | * L’insertion/ | ||
+ | < | ||
+ | mlist.pipeline = [ | ||
+ | ' | ||
+ | ' | ||
+ | … | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | … | ||
+ | ' | ||
+ | ' | ||
+ | ] | ||
+ | </ | ||
+ | Soit le pipeline global au complet ainsi que notre handler personnalisé inséré au bon endroit. Bien sûr si vous souhaitez remplacer « Moderate » par « MonHandler », vous supprimez « Moderate » du pipeline. | ||
+ | |||
+ | Ensuite pour l’appliquer à la liste « MaListe » il ne reste qu’à exécuter la commande : | ||
+ | < | ||
+ | bin/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | Enfin redémarrez Mailman : | ||
+ | < | ||
+ | sudo / | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== FAQ ===== | ||
+ | ====Envoi de mails avec Exim==== | ||
+ | Si vous n' | ||
+ | |||
+ | === 554 SMTP service not available === | ||
+ | |||
+ | Il suffit d' | ||
+ | exim : ALL | ||
+ | |||
+ | === 553 sorry, your envelope sender domain must exist (#5.7.1) === | ||
+ | |||
+ | Modifiez le paramètre **primary_hostname** dans le fichier de configuration d' | ||
+ | primary_hostname = mon_domaine.fr | ||
+ | |||
+ | ==== Je ne reçois pas mes propres mails depuis mon entreprise ==== | ||
+ | Avec mon adresse professionnelle, | ||
+ | < | ||
+ | """ | ||
+ | """ | ||
+ | |||
+ | import re | ||
+ | |||
+ | def process(mlist, | ||
+ | from_val = msg.get(' | ||
+ | if from_val: | ||
+ | from_val = re.sub(' | ||
+ | del msg[' | ||
+ | msg[' | ||
+ | </ | ||
+ | |||
+ | Pour corriger le problème sur toutes les listes et éviter que cela arrive sur les listes futures, nous allons insérer ce handler de manière globale dans le pipeline : | ||
+ | < | ||
+ | GLOBAL_PIPELINE.insert(GLOBAL_PIPELINE.index(' | ||
+ | </ | ||
+ | |||
+ | Pourquoi l’insérer avant « Cleanse » ? En fait on l’insère plutôt après « AvoidDuplicates ». Si nous l’avions inséré n’importe où avant ce handler, Mailman aurait considéré que vous n’étiez pas l’expéditeur du mail (vu que le nom de domaine est différent) et vous aurait donc envoyé une copie de votre propre mail malgré le fait que vous ayez configuré l’option « Recevez les messages que vous envoyez à la liste ? » à « Non ». | ||
+ | |||
+ | ==== Migrer MailMan entre 2 serveurs ==== | ||
+ | |||
+ | < | ||
+ | for list in < | ||
+ | echo $list | ||
+ | rsync -az --progress -e ssh < | ||
+ | rsync -az --progress -e ssh < | ||
+ | rsync -az --progress -e ssh < | ||
+ | rsync -az --progress -e ssh < | ||
+ | done | ||
+ | # Vérifier les listes visibles sur le nouveau serveur | ||
+ | list_lists | ||
+ | # Si utilisation sur un nom DNS qui n'est pas dédié aux listes mailman, on regénère les aliases à utiliser dans le MTA | ||
+ | / | ||
+ | # Démarrage du service | ||
+ | / | ||
+ | # Paramétrer le serveur web et le MTA (comme une nouvelle installation) | ||
+ | # Vérifier le bon fonctionnement | ||
+ | </ | ||
+ | |||
+ | Ressources : | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | ==== Mailman ne fonctionne qu'en local après migration vers Precise 12.04 (Relay access denied) ==== | ||
+ | |||
+ | Si l' | ||
+ | |||
+ | Un exemple de log Postfix : | ||
+ | < | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:08 server-mail postfix/ | ||
+ | May 1 10:46:09 server-mail postfix/ | ||
+ | May 1 10:46:09 server-mail postfix/ | ||
+ | May 1 10:46:11 server-mail postfix/ | ||
+ | May 1 10:46:11 server-mail postfix/ | ||
+ | May 1 10:46:11 server-mail postfix/ | ||
+ | |||
+ | Ubuntu lors de la migration vers Precise modifie le fichier ''/ | ||
+ | < | ||
+ | fe00::0 ip6-localnet | ||
+ | ff00::0 ip6-mcastprefix | ||
+ | ff02::1 ip6-allnodes | ||
+ | ff02::2 ip6-allrouters | ||
+ | ff02::3 ip6-allhosts</ | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | ===== Dbmail ===== | ||
+ | [[dbmail# | ||
+ | |||
+ | ===== Lien ===== | ||
+ | Site officiel [[http:// | ||
+ | ---- | ||
+ | |||
+ | // |