Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sympa

Sympa n'est pas géré par Ansible, on fait ici une liste à compléter au fil de l'eau des opérations utiles, notamment pour les nouveaux admins.

📜 Pour le troubleshooting mail, voir la documentation dédiée.

Une très bonne introduction, explicitant des éléments difficiles à inférer de la documentation officielle, est consultable sur ce PDF.

Généralités

L'ensemble des listes Sympa est géré via une mono-instance hébergée sur origan.

  • Utilisateur sympa;
  • Une BDD sympa via l'utilisateur sympa;
  • Dossier de configuration /etc/sympa;

Pour un aperçu de la hiérarchie et des différents fichiers de configuration, voir la documentation officielle.

💡 Certains fichiers n'existent par liste, par exemple edit_list.conf. Dans ce cas, créer le fichier avec l'ownership sympa:sympa.

Sympa est contrôlé par systemd à travers deux services principaux :

  • sympa pour le backend;
  • wwsympa pour le serveur web.

Configuration générale

Elle est dans /etc/sympa/sympa/sympa.conf.

(Note) On Debian 8 (jessie) or earlier, /etc/sympa/sympa.conf is used. On Debian 9 (stretch) or later, /etc/sympa/sympa.conf may also be used, though /etc/sympa/sympa/sympa.conf is used by default. (source)

💡 Certains paramètres semblent sortir de nulle part : ils ne sont pas définis dans un fichier de configuration actif, mais existent tout de même. L'astuce utilisée par les mainteneurs du paquet Sympa pour contourner l'absence de fusion des fichiers de configuration est d'utiliser un script Perl pour assigner les valeurs par défaut : voir /usr/share/sympa/lib/Sympa/Config/Schema.pm.

Ajout d'un·e admin à un domaine

En plus de la configuration générale de l'instance, chaque domaine a une configuration spécifique dans /etc/sympa/<domaine>.

Le fichier robot.conf permet d'appliquer des paramètres "haut niveau", e.g. nom de domaine, signatures cryptographiques, etc.

La clé listmaster configure les administrateur·ices des listes du domaine, sous le format suivant :

listmaster nom@tld,nom2@tld2,[...]

⚠️ Chez Paquerette, certains domaines n'ont pas de compte admin partagé : il faut créer un compte personnel et le rajouter à cette liste.

Une fois que la modification est faite, il faut redémarrer Sympa et son serveur mail :

systemctl restart sympa
systemctl restart wwsympa

Modifier les privilèges de paramétrage des listes

Sympa permet de configurer finement quel rôle peut éditer quel paramètre depuis l'interface web via le fichier edit_list.conf.

Un défaut est fourni avec le paquet Debian (/usr/share/sympa/default/edit_list.conf). En l'absence de configuration pour l'instance ou pour une liste en particulier, c'est à ce fichier que Sympa se réfère.

⚠️ Le fonctionnement de la configuration est hiérarchique mais il n'y a pas de fusion. Sympa s'arrête au premier fichier trouvé; il faut donc recopier tous les paramètres par défaut que l'on ne souhaite pas changer.

Cette configuration est conçue par exclusion. En effet les lignes suivantes :

default 			privileged_owner    write
default 			owner 				write
default 			editor 				read
default 			listmaster 			write

indiquent par exemple que les propriétaires des listes peuvent éditer tous les paramètres qui ne sont pas explicitement reconfigurés.

À titre d'exemple, max_size est configuré comme tel :

max_size    		owner,privileged_owner 		hidden

En conséquence, les administrateur·ices et éditeurs peuvent lire et écrire la taille maximale des messages, mais les propriétaires des listes ne voient même pas ce champ.

Déléguer la vérification de la taille maximum à Sympa

Contexte

Par défaut, Sympa est configuré avec max_size == 5242880 (voir configuration générale), c'est-à-dire 5Mo. En cas de dépassement de la taille, Sympa envoie un hard bounce à l'émetteur.

Mais il faut encore que le mail arrive jusqu'à Sympa. En effet, s'il est envoyé depuis un MUA autre que Sympa, il passe d'abord par Postfix (voir ce schéma de fonctionnement moins général mais qui s'applique ici).

On peut vérifier la configuration de Postfix comme suit :

$ postconf -d | grep message_size_limit
message_size_limit = 10240000

C'est le défaut, soit 10Mo.

Quel impact sur le comportement ?

Le comportement n'est donc pas homogène entre Sympa et Postfix.

Si la taille du message est comprise entre 5 et 10Mo, c'est Sympa qui rejette le message et renvoie par mail une "raison" lisible par les humains, par exemple :

## Message trop gros
Ceci est une réponse automatique du robot de listes Sympa.
Problème de diffusion de votre message pour la liste `quentin-test@<DOMAIN>` :

Votre message n'a pas pu être envoyé parce que sa taille (8302 ko) était supérieure à la taille maximum de message autorisée pour cette liste (5120 ko).

Si la taille du message est supérieure à 10Mo, c'est Postfix qui rejette le message (ça pourrait être via un code d'erreur SMTP qui sera immédiatement affiché par le MUA, mais c'est par un hard-bounce). Le mail est moins lisible, par exemple :

## Undelivered Mail Returned to Sender

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
[...]
The mail system
<quentin-test@<DOMAIN>.fr>: message size 21525473 exceeds size
limit 10240000 of server listes.paquerette.eu[148.251.158.205]

On retrouve bien les deux limites, dans les deux cas.

Laisser Sympa s'occuper de la taille des mails

La solution consiste à (virtuellement) désactiver la limite de taille côté Postfix. Peu d'effets indésirables sont à prévoir; en effet :

  • Dans tous les cas, les mails sont entièrement téléversés avant d'être rejetés (pas d'ajout de surface de DoS);
  • À travers l'interface Sympa, un mail trop volumineux serait rejeté directement;
  • L'intégralité des mails sont présumés transiter par Sympa;
  • Dans l'éventualité d'une fuite, les MTA intermédiaires rejetteraient alors le mail, mais il est peu vraisemblable que cela soit un motif de mise sur liste noire (les spammeurs n'utilisent pas les gros fichiers).

La valeur de message_size_limit est limitée à LONG_MAX, soit au minimum 2Go sur les systèmes 32 bits.

Considérant qu'un humain n'a probablement aucune bonne raison d'essayer d'envoyer une pièce jointe de plus de 100Mo, ou que le cas est suffisamment rare pour essuyer un message d'erreur plus cryptique, on ajoute la ligne suivante dans /etc/postfix/main.cf1 :

message_size_limit = 104857600

Enfin, vérifier que la configuration est correcte et la recharger :

postconf
postfix reload

  1. Le calcul est fait sur cette ressource en considérant les puissances de 2 (*"kilo" is 1024).