diff --git a/HowtoSympa.md b/HowtoSympa.md index 21f560a3..6031ceff 100644 --- a/HowtoSympa.md +++ b/HowtoSympa.md @@ -91,26 +91,6 @@ WantedBy=multi-user.target Attention, il ne faut pas mettre l'option `ProtectSystem=full` (paramètre par défaut sous Debian 10) car cela va empêcher la modification du fichier `/etc/mail/sympa/aliases`. -Et ajouter la gestion des alias Sympa dans `/etc/postfix/main.cf` (attention `/etc/mail/sympa/aliases` doit être avant `/etc/aliases` pour que Sympa récupère bien les bounces des listes) : - -~~~ -alias_maps = hash:/etc/mail/sympa/aliases hash:/etc/aliases -alias_database = hash:/etc/mail/sympa/aliases hash:/etc/aliases -~~~ - -Et s'assurer d'avoir les alias de base dans `/etc/mail/sympa/aliases` : - -~~~ -## List aliases used for the sympa mailing-list manager -#-- SYMPA begin -## Aliases used for the sympa mailing-list manager -sympa: "|/usr/lib/sympa/bin/queue sympa" -sympa-request: "|/usr/lib/sympa/bin/queue sympa" -sympa-owner: "|/usr/lib/sympa/bin/bouncequeue sympa" -listmaster: root -#-- SYMPA end -~~~ - ## Configuration @@ -146,9 +126,8 @@ Voici la configuration minimum à ajuster : ~~~ domain lists.example.com -listmaster listmaster@lists.example.com +listmaster postmaster@example.com wwsympa_url http://lists.example.com/wws - lang fr ~~~ @@ -250,7 +229,7 @@ dkim_signature_apply_on any ### scenari -De nombreux scénarii (configurations de distribution des listes) sont proposés (et amendables) par défaut (cf. `/usr/share/sympa/default/scenari/`), mais il est possible de préparer un ou plusieurs scénarios pour des besoins spécifiques et récurrents. Voici un exemple qui supprime simplement le paramètre `quiet` afin de recevoir une notification en cas de rejet. +De nombreux scénarii (configurations de distribution des listes) sont proposés par défaut (cf. `/usr/share/sympa/default/scenari/`), mais il est possible de préparer un ou plusieurs scénarios pour des besoins spécifiques et récurrents en les plaçant dans `/etc/sympa/scenari/`. Voici un exemple qui supprime simplement le paramètre `quiet` afin de recevoir une notification en cas de rejet. ~~~ # cat /etc/sympa/scenari/send.confidential-not-quiet @@ -262,29 +241,71 @@ is_owner([listname],[sender]) smtp,dkim,smime,md5 -> do_it true() smtp,dkim,md5,smime -> reject ~~~ -Plus de précisions sur la syntaxe et les options est disponible dans la [documentation officielle des scénarios](https://www.sympa.community/manual/customize/basics-scenarios.html). +Plus de précisions sur la syntaxe et les options sont disponibles dans la [documentation officielle des scénarios](https://www.sympa.community/manual/customize/basics-scenarios.html). + +### Configuration en mode multi-domaines + +**Note :*** nous n'utilisons pas cette configuration en mode multi-domaines en production + +Sympa permet d'utiliser plusieurs domaines différentes du type `list.example.com`, `list.example.org` etc. + +Dans la configuration principale `/etc/sympa/sympa/sympa.conf` on va « désactiver » certaines directives : + +~~~ +domain sympa +sendmail_aliases none +home /var/lib/sympa/expl +etc /etc/sympa +~~~ + +et l'on va configurer différents répertoires : + +~~~ +/etc/sympa/ +├── list.example.com/ +├── list.example.org/ +~~~ + +avec `/etc/sympa/list.example.com/robot.conf` : + +~~~ +http_host list.example.com +wwsympa_url https://list.example.com/wws +title Listes example.com +lang fr +listmaster postmaster@example.com +... +~~~ + +et l'arborescence suivante : + +~~~ +/var/lib/sympa/expl/ +├── list.example.com/ +├── list.example.org/ +~~~ ## Configuration de Postfix -Voici les répertoires importants pour Sympa : +Pour la réception d'emails, le principe de base est que les emails sont *pipés* vers le programme `/usr/lib/sympa/bin/queue` +sauf pour les emails de « rebond » qui sont *pipés* vers le programme `/usr/lib/sympa/bin/bouncequeue`. -* `/var/spool/sympa/` : files d'attente (modération etc.) -* `/var/lib/sympa/arc/` : archives des listes de diffusion générées avec [MHonArc](https://www.mhonarc.org/) -* `/var/lib/sympa/list_data/` : données de configuration des listes de diffusion -* `/usr/share/sympa/bin/` et `/usr/lib/sympa/bin/` : scripts Perl et binaires -* `/usr/share/sympa/lib/` et : bibliothèques Perl -* `/usr/share/sympa/default/` : templates +### Configuration en mode non virtuel +Les emails d'administration (changement de mot de passe, modération, etc.) sont *pipés* vers `/usr/lib/sympa/bin/queue sympa` grâce à des alias : -### Configuration avec un domaine unique (non virtuel) +~~~ +sympa: "|/usr/lib/sympa/bin/queue sympa" +#sympa-request: "|/usr/lib/sympa/bin/queue sympa" +#sympa-owner: "|/usr/lib/sympa/bin/bouncequeue sympa" +bounce: "|/usr/lib/sympa/bin/bouncequeue sympa" +#listmaster: "|/usr/lib/sympa/bin/queue sympa" +listmaster: postmaster +~~~ -**Attention :** Si ce domaine est déjà défini comme virtuel dans Postfix, cela cassera la réception de mails sur boîtes virtuelles associées. - -Les emails d'administration (changement de mot de passe, modération, etc.) sont envoyés à `sympa@lists.example.com`, grâce à un alias Postfix, ils sont *pipés* vers le programme `/usr/lib/sympa/bin/queue sympa`. - -Les emails pour une liste de diffusion *foo* sont envoyés à `foo@lists.example.com`. -Les alias Postfix suivants les redirigent vers différents programmes : +Les emails pour une liste de diffusion *foo* sont envoyés à `foo@example.com`. +Les alias Postfix suivants redirigent vers les différents programmes : ~~~ foo: "| /usr/lib/sympa/bin/queue foo" @@ -297,43 +318,47 @@ foo-owner: "| /usr/lib/sympa/bin/bouncequeue foo" Le message passe ensuite par différentes files d'attente suivant la configuration (modération, etc.). -Afin de distinguer les bounces de Postfix de ceux de Sympa, configuer `/etc/aliases` : +**Attention 1 :** Si ce domaine est déjà défini comme virtuel dans Postfix, cela cassera la réception de mails sur boîtes virtuelles associées à ce domaine. -```diff --bounce: root -+bounce: postmaster -``` +**Attention 2:** vous ne devez pas avoir d'alias local pour `bounce` car il est utilisé par Sympa pour le [VERP](https://www.sympa.community/manual/customize/bounce-management.html#verp), vérifiez notamment qu'il n'est pas utilisé dans la directive Postfix `bounce_notice_recipient`. -Puis exécuter `postalias /etc/aliases`. -Et configurer `/etc/postfix/main.cf` : +### Configuration en mode virtuel avec un domaine dédié -```diff --bounce_notice_recipient = bounce --2bounce_notice_recipient = bounce -+bounce_notice_recipient = postmaster -+2bounce_notice_recipient = postmaster -``` +C'est la configuration conseillée : vous avez un domaine du type `list.example.com` utilisé uniquement pour Sympa. -Vérifier la configuration de Postfix et le redémarrer : +Il suffit alors de définir un transport via `/etc/postfix/transport` : ~~~ -postconf >/dev/null -systemctl restart postfix -systemctl status postfix +list.example.com sympa: ~~~ - -### Configuration multi-domaines virtuels - -**Attention :** Cette section est nouvelle et est en test. - -Note : On considère que le domaine virtual est déjà configuré dans Postfix. - -Aliases génériques des listes : +Et un process `sympa` dans `/etc/postfix/master.cf` : ~~~ -# cat <>/etc/sympa/list_aliases.tt2 + sympa unix - n n - - pipe + flags=FR user=sympa + argv=/var/lib/sympa/bin/postfix-to-sympa.pl ${nexthop} ${mailbox} +~~~ + +Où [postfix-to-sympa.pl](https://www.sympa.org/contribs/index#easy_configuration_for_postfix) est un script Perl (avec `$DEFAULT_DOMAIN` à ajuster) qui va notamment renvoyer vers les commandes Sympa `queue` et `bouncequeue`. Merci Bastien Roucaries pour ce script :) + +Il faut aussi ajouter la directive suivante dans `/etc/postfix/main.cf` : + +~~~ +sympa_destination_recipient_limit = 1 +~~~ + +### Configuration en mode virtuel sans domaine dédié + +Si l'on utilise un même domaine pour recevoir des emails et Sympa, il va falloir gérer des sortes d'alias virtuels pour ne renvoyer vers Sympa que ce qui est nécessaire. + +Donc a priori le domaine virtuel est déjà configuré dans Postfix (par exemple via LDAP), sinon on peut l'ajouter via `virtual_mailbox_domains`. + +On configure un template pour les « alias virtuels » : + +~~~ +# cat /etc/sympa/list_aliases.tt2 #--- [% list.name %]@[% list.domain %]: list transport map created at [% date %] [% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %] [% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %] @@ -341,104 +366,64 @@ Aliases génériques des listes : #[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %] [% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %] [% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %] -<< EOF ~~~ -Ajout des infos pour que Sympa mette-à-jour les boîtes virtuelles de Postfix : +On ajoute les directives suivantes dans `/etc/sympa/sympa/sympa.conf` : ~~~ -cat <>/etc/sympa/sympa/sympa.conf sendmail_aliases /etc/postfix/sympa_transport aliases_program postmap aliases_db_type hash -<< EOF ~~~ -Créer la base de données des boîtes virtuelles pour Postfix : +On crée la base de données des boîtes virtuelles pour Postfix : ~~~ -touch /etc/sympa/sympa_transport -chmod 644 /etc/sympa/sympa_transport -chown sympa: /etc/sympa/sympa_transport -/usr/lib/sympa/bin/sympa_newaliases.pl +# touch /etc/sympa/sympa_transport +# chmod 644 /etc/sympa/sympa_transport +# chown sympa: /etc/sympa/sympa_transport +# /usr/lib/sympa/bin/sympa_newaliases.pl ~~~ -Ajouter aux transports de Postfix : +On s'assure que `/etc/sympa/sympa_transport` contient : ~~~ -cat <>/etc/postfix/master.cf -sympa unix - n n - - pipe - flags=hqRu null_sender= user=sympa argv=/usr/lib/sympa/bin/queue ${nexthop} -sympabounce unix - n n - - pipe - flags=hqRu null_sender= user=sympa argv=$/usr/lib/sympa/bin/bouncequeue ${nexthop} -~~~ - -Editer le main.cf de Postfix et ajouter aux options : - -~~~ -virtual_mailbox_maps = (...) hash:/etc/sympa/sympa_transport -transport_maps = (...) hash:/etc/sympa/sympa_transport -~~~ - -**Attention :** `mydestination` ne doit pas contenir le domaine virtuel. - -Afin de dinstinguer les bounces de Postfix de ceux de Sympa, changer l'alias de bounce : - -```diff --bounce_notice_recipient = bounce --2bounce_notice_recipient = bounce -+bounce_notice_recipient = postmaster -+2bounce_notice_recipient = postmaster -``` - -Supprimer l'alias `bounce` de `/etc/aliases` : - -```diff --bounce: root -``` - -Puis exécuter `postalias /etc/aliases`. - -Ajouter les listes de base : - -~~~ -cat <>/etc/sympa/sympa_transport sympa@example.org sympa:sympa@example.org listmaster@example.org sympa:listmaster@example.org bounce@example.org sympabounce:sympa@example.org abuse-feedback-report@example.org sympabounce:sympa@example.org ~~~ -Mettre-à-jour la base de données avec `postmap` : +On ajoute à `/etc/postfix/master.cf` : ~~~ -postmap hash:/etc/sympa/sympa_transport +sympa unix - n n - - pipe + flags=hqRu null_sender= user=sympa argv=/usr/lib/sympa/bin/queue ${nexthop} +sympabounce unix - n n - - pipe + flags=hqRu null_sender= user=sympa argv=$/usr/lib/sympa/bin/bouncequeue ${nexthop} ~~~ -Vérifier que les droits sont bien en `644` et que le propriétaire/groupe est bien `sympa:sympa` : +Et on ajoute les directives à `/etc/postfix/main.cf` : ~~~ -ls -l /etc/sympa/ -~~~ +virtual_mailbox_maps = (...) hash:/etc/sympa/sympa_transport +transport_maps = (...) hash:/etc/sympa/sympa_transport +~~~ -Vérifier la configuration de Postfix et le redémarrer : - -~~~ -postconf >/dev/null -systemctl restart postfix -systemctl status postfix -~~~ - -Enfin, redémarrer Sympa : - -~~~ -systemctl restart sympa -systemctl status sympa -~~~ +**Attention :** vous ne devez pas avoir d'alias virtuel pour `bounce` car il est utilisé par Sympa pour le [VERP](https://www.sympa.community/manual/customize/bounce-management.html#verp), vérifiez notamment qu'il n'est pas utilisé dans la directive Postfix `bounce_notice_recipient`. ## Plomberie +Voici les répertoires importants pour Sympa : + +* `/var/spool/sympa/` : files d'attente (modération etc.) +* `/var/lib/sympa/arc/` : archives des listes de diffusion générées avec [MHonArc](https://www.mhonarc.org/) +* `/var/lib/sympa/list_data/` : données de configuration des listes de diffusion +* `/usr/share/sympa/bin/` et `/usr/lib/sympa/bin/` : scripts Perl et binaires +* `/usr/share/sympa/lib/` et : bibliothèques Perl +* `/usr/share/sympa/default/` : templates + La configuration d'une liste se trouve à la fois : * dans le répertoire `/var/lib/sympa/list_data/foo/` notamment le fichier `config` @@ -613,6 +598,4 @@ notice Sympa::DatabaseDriver::MySQL::update_field() ALTER TABLE user_table CHANG ... ~~~ -### Script pour simplifier la configuration avec Postfix -Bastien nous a signalé qu'il avait écrit un script pour simplifier la configuration avec Postfix : nous le testerons prochainement, merci :)