Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP
- From: Antoine Boursier <adresse@cachée>
- To: adresse@cachée
- Subject: Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP
- Date: Tue, 23 Jan 2018 10:28:36 +0100
Bonjour, J'ai enfin réussi à faire fonctionner le scénario (en version minimal pour l'instant). Les quelques soucis que j'ai rencontré sont : _ Les appels aux modules (spécifier le chemin complet lors des appels aux méthodes) _ La méthode is_user de List.pm, remplacée par is_list_member dans les nouvelles versions _ Un espace après la virgule lors de la déclaration des variables $sender et $listname my ($sender,$listname) = @_; Merci à tous pour vos retours :) Je met met sur le scénario pour la récupération des anciennes adresses via le LDAP. Bonne journée, Antoine On 01/22/2018 09:06 AM, David Verdin
wrote:
Non, un simple espace suffit. D'après les logs, c'est un require qui plante. Je soupçonne Log. Rempalce use Log; par use Sympa::Log; Ça devrait résoudre le problème. bonne journée, David On 19/01/2018 15:48, Benoît Marchal
wrote:
Bonjour,
Juste un truc bête, mais il me semble qu'il faut au moins
une tabulation entre CustomCondition::... et smtp,dkim, ...
Cdlt
Bonjour
à tous,
Après avoir bloqué quelques jours sur ces customs conditions, j'en suis toujous au même point. J'ai essayé chacun de vos scripts, sans réussir à les
faire fonctionner. Du coup je suis passé sur quelque chose de beaucoup plus simple pour juste tester l'exécution du scénario. Et j'ai toujours les mêmes erreurs. Voici ce que contient mon scenario d'envoi :
Et le test.pm
Je vous met les logs d'erreurs en PJ si ça peut aider.
Merci une fois de plus pour votre aide.
Bonne journée,
Antoine Boursier
On 01/09/2018 08:15 PM,
David VERDIN wrote:
Je me demande si ce genre de choses ne trouverait pas utilement sa place dans le cœur de Sympa. Comme règle de scénario standard. ----- Original Message ----- From: Benoît Marchal <adresse@cachée> To: sympa-fr <adresse@cachée> Sent: Tue, 09 Jan 2018 17:33:07 +0100 (CET) Subject: Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP Et bien on a retrouvé. En tout cas merci beaucoup car cela nous sert encore aujourd'hui. Bonne soirée ----- Le 9 Jan 18, à 17:25, LALOT Dominique <adresse@cachée> a écrit : Salut Benoit, On y voit encore TRACEDOM. Tiens ça doit être moi A utiliser sans modération.. Et bien pratique quand on change de domaine, voire valider des mails alternatifs. A+ Dom -- Dominique LALOT Responsable Pôle Environnement Numérique Direction O p érationnelle du Système d'Information (DOSI) ( Aix * Marseille U niversité Coordonnées: [ http://annuaire.univ-amu.fr/personnel/detail/bGFsb3Q= | http://annuaire.univ-amu.fr/personnel/detail/bGFsb3Q= ] De : adresse@cachée <adresse@cachée> de la part de Benoît Marchal <adresse@cachée> Envoyé : mardi 9 janvier 2018 13:26:52 À : sympa-fr Objet : Re: [sympa-fr] Scenario d'autorisation -RequêteLDAP Bonjour, Nous avons eu le même souci en 2012 lors de la création de l'université de Lorraine, fusion des 4 universités lorraines. J'avais fait un truc du genre en reprenant une idée de quelqu'un : le fichier custom_conditions/is_subscriber.pm !/usr/bin/perl use lib '/home/sympa/bin'; package CustomCondition::is_subscriber; use strict; use List; use ULSympa; use Log; # optional : we log parameters sub verify { my $listName = shift; my $sender = shift; my $robot = (scalar @_ )? $_[$#_]:""; # BM : Création de l'objet List my $list = ( $listName =~ /\@/ || $robot eq "")? new List($listName) : new List ($listName, $robot); return -1 if( !defined($list)); my @alternatemail=ULSympa::alternate($sender); #do_log ('info', "custom: is_subscriber(new): sender : ".$sender." pour la liste ".$listName.(( $robot ne "" )? "@".$robot:"")); foreach my $mail (@alternatemail){ #do_log ('info', "custom: is_subscriber: mail teste : ".$mail); return 1 if $list->is_user($mail); } #do_log ('info', "TRACEDOM sender: $sender -> $list_name"); return -1; } ## Packages must return true. 1; Il y a un petit patch pour récupérer le robot de la liste s'il n'est pas connu dans le premier paramètre passé à la fonction. Et le module ULSympa.pm package ULSympa; use Exporter; use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION); @ISA = ('Exporter'); @EXPORT = qw( &alternate); use Net::LDAP; use strict; my $refLDAP = { hosts => [ "<mon server ldap>" ], basedn => "ou=people, dc=univ-lorraine, dc=fr", filter => "(|(mail=%s)(udlMailAlias=%s))", attrs => [ "mail", "udlMailAlias" ], #filter => "(|(mail=%s)(udlOldMails=%s)(udlMailAlias=%s))", #attrs => [ "mail", "udlOldMails", "udlMailAlias" ], }; my $checkMail = "<listes des anciens domaines en les séparant par un pipe>"; ########################################################################################## # recoit une adresse mail en parametre # retourne un tableau de toutes les adresses mail valides ########################################################################################## sub alternate { my $mail2check = shift; return $mail2check unless ($mail2check =~ /\@/); my @TMailsValides = (lc($mail2check)); my $refAttrs = $$refLDAP{attrs}; return @TMailsValides if ($mail2check !~ /$checkMail/i); my $ldap = Net::LDAP->new($$refLDAP{hosts}) or return @TMailsValides; my $mesg = $ldap->bind('', version => 3 ) or return @TMailsValides; my $filter = "$$refLDAP{filter}"; $filter =~ s/\%s/$mail2check/sg; $mesg = $ldap->search ( # perform a search base => $$refLDAP{basedn}, filter => $filter, attrs => $$refLDAP{attrs}, scope => "one" ); $ldap->unbind(); return @TMailsValides if ($mesg->count == 0); my $entry = $mesg->shift_entry; foreach my $attr (@$refAttrs){ my $refVal = $entry->get_value($attr, asref =>1); next unless (defined($refVal)); foreach my $val (@$refVal){ my $mail = lc($val); next unless($mail =~ /\@/); push (@TMailsValides, $mail) unless (grep /^$mail$/, @TMailsValides); } } return @TMailsValides; } ## Packages must return true. 1; C'est un peu compliqué que la solution de david, mais présentent l'avantage de prendre systématiquement l'ensemble des adresses d'une personne, si c'est connu de l'annuaire de l'établissement. Ce qui est le cas chez nous. A ce jour, on a supprimé le test avec $checkMail, puis que nous n'avons plus les anciennes adresses (ou alors, elles sont dans l'annuaire). Cela s'utilise comme David le donne. Pas de souci pour aider si besoin. Cordialement ----- Le 9 Jan 18, à 12:50, David Verdin <adresse@cachée> a écrit : Bonjour, À la louche, je dirais que c'est un bon candidat pour une custom condition: [ https://www.sympa.org/manual/authorization-scenarios#custom_perl_package_conditions | https://www.sympa.org/manual/authorization-scenarios#custom_perl_package_conditions ] Un truc dans ce genre, peut-être, certainement améliorable : #!/usr/bin/perl package CustomCondition::lilletruc; use strict; use List; sub verify { my ($sender, $listname) = @_; return 0 unless ($sender && $listname); my $list = List::new($listname); return 0 unless ($list); if ($list->is_user($sender) { return 1; } return 0 unless ($sender =~ m{ univ-lille\.fr }); $sender =~ s{univ-lille\.fr}{univ-lille1.fr}; if ($list->is_user($sender) { return 1; } $sender =~ s{univ-lille1\.fr}{univ-lille2.fr}; if ($list->is_user($sender) { return 1; } $sender =~ s{univ-lille2\.fr}{univ-lille3.fr}; if ($list->is_user($sender) { return 1; } return 0; } 1; Après, tu mets cette ligne dans ton scénario : CustomCondition:: lilletruc ([sender],[listname]) smtp,smime,md5,dkim -> do_it() Le scénario renvoie 1 si la personne est abonnée. Si l'adresse d'expédition n'est pas abonnée et que c'est du univ-lille.fr, il essaie de substituer avec du lille 1 2 ou 3. Voilà. Le scénario n'est pas testé, donc à prendre avec des pincettes mais ça vous fait une base de départ. Bonne journée ! David On 09/01/2018 12:22, Antoine BOURSIER wrote: Bonjour à tous, Je me permet de vous solliciter une fois de plus, pour un soucis sur un scenario d'autorisation. Nous avons historiquement à l'université, 3 types d'adresses mails (@univ-lille1.fr, @univ-lille2.fr et @univ-lille3.fr). Cette année, les 3 universités de Lille fusionnent et tout le monde utilisera à terme une adresse en univ-lille.fr. J'aimerais pouvoir mettre en place un scénario, qui autorise un utilisateur qui écrit avec son adresse @univ-lille.fr à écrire à une liste, si celui-ci est abonné avec son adresse en @univ-lille(1|2|3).fr. J'ai pensé à faire une recherche LDAP pour récupérer l'ancienne adresse mail de l'utilisateur et vérifier si celui-ci est abonné à la liste, mais je ne trouve pas le moyen de le mettre en oeuvre. Comment utiliser le résultat d'une requête LDAP avec la condition "is_subscriber" du scénario, au lieu de "search" ? Si quelqu'un a déjà eu l'occasion de travailler sur des scénario complexes ou à une idée sur la façon de procéder, je suis preneur :) PS : Je ne peux pas abonné les deux types d'adresses à la même liste. Les mails étant transférés d'une boite à l'autre, cela causerait des doublons. Merci à vous et bonne journée à tous. Antoine Boursier Administrateur Systèmes Direction des systèmes d'information | Cellule Systèmes & Hébergements [ mailto:adresse@cachée | adresse@cachée ] Université de Lille | Sciences Humaines et Sociales -- "Mieux vaut viser la perfection et la rater que viser la médiocrité et l'atteindre." - Francis Blanche -- Benoît MARCHAL Sous direction Infrastructure & Services Direction du Numérique Université de Lorraine Tél : 03.72.74.11.39 mél : adresse@cachée --
--
Benoît MARCHAL
Sous direction Infrastructure & Services
Direction du
Numérique
Université de
Lorraine
Tél :
03.72.74.11.39
mél : adresse@cachée
-- "Mieux vaut viser la perfection et la rater que viser la médiocrité et l'atteindre." - Francis Blanche |
-
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP,
Antoine Boursier, 19/01/2018
-
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP,
Benoît Marchal, 19/01/2018
-
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP,
David Verdin, 22/01/2018
- Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP, Antoine Boursier, 23/01/2018
- Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP, Antoine Boursier, 26/01/2018
-
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP,
David Verdin, 22/01/2018
-
Re: [sympa-fr] Scenariod'autorisation-RequêteLDAP,
Benoît Marchal, 19/01/2018
Archives gérées par MHonArc 2.6.19+.