révision doc pour Sympa

This commit is contained in:
Gregory Colpart 2024-02-27 15:13:22 +01:00
parent ef6545b951
commit bd83446c50

View file

@ -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 <<EOF >>/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 <<EOF >>/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 <<EOF >>/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 <<EOF >>/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 : <https://www.sympa.org/contribs/index#easy_configuration_for_postfix> nous le testerons prochainement, merci :)