Projet

Général

Profil

Tâche #37322

Scénario #35899: Restreindre les droits d'écriture sur les listes générées

Gérer les comptes sans adresse mail dans les requêtes include_ldap_2level_query

Ajouté par Laurent Brillard il y a environ 2 mois. Mis à jour il y a environ un mois.

Statut:
À valider
Priorité:
Normal
Assigné à:
Début:
06/02/2026
Echéance:
% réalisé:

0%

Restant à faire (heures):

Description

Bonjour,

Les listes Sympa sont peuplées depuis l'annuaire OpenLDAP Scribe avec des requêtes include_ldap_2level_query
Le problème est que certains comptes sont sans adresses mél, ce qui est permit dans Scribe mais génère parfois des erreurs dans les logs Sympa, qui sont retranscrits dans la messagerie d'admin :

notice main:: Sympa 6.2.40 Started
notice main:: Loading list cassr...
err main::#911 > Sympa::List::new#418 > Sympa::List::sync_include_admin#7049 > Sympa::List::_sync_include_user#7063 > Sympa::List::_load_list_admin_from_include#6169 > Sympa::List::_include_users_ldap_2level#5460 Skip badly formed email address: "" 
notice main:: ...Done.

Dans les fichiers config de listes présents dans /var/lib/sympa/expl/<domaine>/<liste>/config, les requêtes include_ldap_2level_query sont de la forme :

include_ldap_2level_query
port 389
host 127.0.0.1
timeout1 30
suffix1 cn=cassr,ou=local,ou=groupes,ou=9740734e,ou=ac-reunion,ou=education,o=gouv,c=fr
filter1 (objectClass=posixGroup)
attrs1 memberUid
select1 all
scope1 base
timeout2 30
suffix2 ou=ac-reunion,ou=education,o=gouv,c=fr
filter2 (&(uid=[attrs1])(mail=*))
attrs2 mail
select2 first
scope2 sub

Une solution serait de remplacer :

filter2 (uid=[attrs1])

par

filter2 (&(uid=[attrs1])(mail=*))

Source : la liste Sympa, cf https://lists.sympa.community//arc/fr/2026-02/msg00000.html

Si ce changement est retenu, il faudrait aussi l'appliquer aux requêtes présentes dans les 2 fichiers include de récupération des modérateurs enseignants et administratifs :
- /etc/sympa/data_sources/ldap-9740734e-administratifs.incl
- /etc/sympa/data_sources/ldap-9740734e-professeurs.incl

Merci d'avance !
Laurent

Révisions associées

Révision 56ed2532 (diff)
Ajouté par Benjamin Bohard il y a environ un mois

Écarter les utilisateurs sans adresse courriel

Ref #37322

Révision 6b867894 (diff)
Ajouté par Benjamin Bohard il y a environ un mois

Corriger les filtres des listes pré-existantes

Ref #37322

Historique

#1 Mis à jour par Laurent Gourvenec il y a environ un mois

  • Lié à Scénario #35899: Restreindre les droits d'écriture sur les listes générées ajouté

#2 Mis à jour par Joël Cuissinat il y a environ un mois

  • Tâche parente mis à #35899

#3 Mis à jour par Benjamin Bohard il y a environ un mois

Dans les fichiers créés sur la VM de test, le filtre2 est déjà dépourvu de la condition mail=*.
C’est cohérent avec le contenu du fichier /usr/lib/python3/dist-packages/scribe/templates.py.

Si cette observation se confirme, l’action adéquate consisterait à nettoyer les fichiers déjà en place.

Tout s’explique : j’avais compris l’inverse de ce qui a été fait…

#4 Mis à jour par Benjamin Bohard il y a environ un mois

Je traduis ce changement en terme fonctionnel : les professeurs sans adresse courriel sont exemptés de la tâche de modération.

#5 Mis à jour par Laurent Brillard il y a environ un mois

Benjamin, je ne suis pas sûr d'avoir compris...

Actuellement, les fichiers /var/lib/sympa/expl/<domaine>/<liste>/config ont les requêtes include_ldap_2level_query avec filter2 (uid=[attrs1]) donc quand sympa_sync traite les fichiers config, si un compte LDAP n'a pas d'adresse mail, cela va générer une erreur.
L'erreur disparait quand les requêtes se font avec filter2 (&(uid=[attrs1])(mail=*)) (les comptes LDAP n'ayant pas d'adresse mail ne sont pas traités)

Il faudrait donc modifier le fichier /usr/lib/python3/dist-packages/scribe/templates.py pour remplacer les occurrences filter2 (uid=[attrs1]) par filter2 (&(uid=[attrs1])(mail=*)) ce qui agira sur les futurs fichiers /var/lib/sympa/expl/<domaine>/<liste>/config

Pour les fichiers /var/lib/sympa/expl/<domaine>/<liste>/config existants, sur nos serveurs, je peux m'en charger via un script qui permet de faire le remplacement de filter2 et que je pourrais mettre à disposition ici même si cela peut servir.

Est-ce bien ce qui est envisagé ?

#6 Mis à jour par Benjamin Bohard il y a environ un mois

  • Assigné à mis à Benjamin Bohard

#7 Mis à jour par Benjamin Bohard il y a environ un mois

  • Statut changé de Nouveau à À valider

Formats disponibles : Atom PDF