Accéder au contenu.
Menu Sympa

fr - Re: [sympa-fr] 2 soucis

Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa

Archives de la liste

Chronologique Discussions  
  • From: Joel Marchand <adresse@cachée>
  • To: adresse@cachée
  • Subject: Re: [sympa-fr] 2 soucis
  • Date: Mon, 19 Apr 2021 15:56:40 +0200


Bonjour,

> j'ai complété le dit mémo par 2 parties :
>
> - authentification externe d'un portail SYMPA via un LDAP, CAS,
> OpenIdConnect

Nouvelle itération avec OpenIDConnect.

- Ci-dessous l'extrait du mémo MAJ

- En PJ, le mémo complet.

Je tiens à remercier vivement

- le GDS Mathrice : Philippe Depouilly, Sandrine Layrisse, Damien
Ferney
qui ont concu ce mécanisme que j'ai adapté à mon cas d'usage
grace à leurs explications

- mon collègue Laurent Capelli
qui a fait la partie serveur OIDC sur LemonLDAP::NG

Bien cordialement,

Joel Marchand

c/ Lien OpenIDConnect
---------------------

- Documentations

https://github.com/zmartzone/mod_auth_openidc
https://curity.io/resources/learn/apache-mod-auth-openidc/

- Préalables

apt-get install libapache2-mod-auth-openidc
a2enmod auth_openidc

- Trois fichiers à mettre en place

1/ /etc/sympa/<ROBOT>/auth.conf

generic_sso
service_name Human-ID
service_id inqueue
http_header_list OIDC_CLAIM_name
email_http_header OIDC_CLAIM_sub
logout_url
https://listes.huma-num.fr/callback?logout=https://listes.huma-num.fr


2/ configuration particulière du module OpenIDConnect

OIDCRedirectURI https://listes.huma-num.fr/callback
OIDCCryptoPassphrase mettreunelonguechainepourchiffrerlescookies
OIDCProviderMetadataURL
https://humanid.huma-num.fr/.well-known/openid-configuration
OIDCClientID xxxxxx
OIDCClientSecret xxxxx
OIDCScope "openid email profile"
OIDCRemoteUserClaim "sub"
OIDCCacheType file
OIDCCacheDir /var/cache/apache2/mod_auth_openidc/cache
OIDCSessionInactivityTimeout 300
OIDCSessionMaxDuration 86400

3/ ajout de configuration au VirtualHost Apache

<Location /callback>
AuthType openid-connect
Require claim sub~@.*$
</Location>

<Location ~ .*/sso_login/inqueue/init>
AuthType openid-connect
Require claim sub~@.*$
</Location>

<Location /logout>
AuthType openid-connect
Require valid-user
</Location>




===============================================================================
Migration de la VM de production Debian 8/Sympa 6.1 vers Debian
10/Sympa 6.2.40

===============================================================================


====================
Debian 8 -> Debian 9
====================

Documentation utile
-------------------

- https://sympa-community.github.io/manual/upgrade/notes.html


Dossier /var/spool/sympa/digest
-------------------------------

- rem : préalable à l'exécution de l'installation du paquet Sympa 6.2.x

- Supprimer tous les fichiers existants en 6.1
pour création de sous-dossiers en 6.2


Fichier de config /etc/sympa/sympa/sympa.conf
---------------------------------------------

- positionnement de
use_fast_cgi 1
pour que l'interface Web soit active

- chmod a+r /etc/sympa/sympa/sympa.conf
pour que les messages adressés à sympa@ROBOT soient traités

- suppression de variables obsoletes, vu par /var/log/sympa.log

- bilan des modifications

root@cchum-kvm-sympa:/etc/sympa/sympa# diff sympa.conf sympa.conf.orig
126a127,128
> queuedistribute /var/spool/sympa/distribute
>
219a222,223
> db_host localhost
>
264a269,270
> crl_dir /var/lib/sympa/list_data/crl
>
317c323
< use_fast_cgi 1
---
> use_fast_cgi 0


Postfix
-------

- vérification que les modifications faites dans la version précédente
sur main.cf et master.cf sont toujours bien là

- modif dans master.cf pour les paths des binaires

sympa unix - n n - - pipe
flags=R user=sympa argv=/usr/lib/sympa/bin/queue ${recipient}
sympabounce unix - n n - - pipe
flags=R user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${recipient}

- ajout dans main.cf de

transport_maps = regexp:/etc/postfix/transport_regex

avec

root@cchum-kvm-sympa:/etc/postfix# cat transport_regex
# Transport générique (évite le setuid bit)

/^bounce+.*\@listes\.huma-num\.fr$/ sympabounce:
/^.*-owner\@listes\.huma-num\.fr$/ sympabounce:
/^.*\@listes\.huma-num\.fr$/ sympa:

- postmap /etc/postfix/transport_regex

- vérification avec
systemctl restart postfix
messages dans syslog
postqueue -vf
sendmail -q


Modules Perl : vérif + installation des modules manquants
---------------------------------------------------------

- sympa_wizard --check

rem : installation du module AuthCAS

- purge de
/usr/local/share/perl/5.20.2
/root/.cpan


Dossier /var/spool/sympa/msg/bad
--------------------------------

- purge des messages dans ce dossier

- vérification par
systemctl status sympa


Divers
------

- sympa_wizard --display

- regeneration des alias :

sympa -make_alias_file

cd /etc/mail/sympa
mv aliases aliases.old
cp /var/spool/sympa/tmp/sympa_aliases.24881 aliases

newaliases -v
postalias /etc/aliases
postalias /etc/mail/sympa/aliases

- personnalisation de l'interface

ajout du fichier /var/www/html_listes/logo-hn.png

modifications dans /etc/sympa/sympa/sympa.conf
title Listes de diffusion de la TGIR Huma-Num
logo_html_definition <a href="https://www.huma-num.fr/";><img
style="float: left; margin-top: 7px; margin-left: 37px;" src="/logo-hn.png"
alt="Huma-Num" /></a>


=====================
Debian 9 -> Debian 10
=====================


- Lors de la MAJ, bien accepter le remplacement du fichier
/etc/apache2/conf-available/sympa.conf
qui définit les alias Apache, sinon l'interface Web ne marche pas


- Diverses vérifications
/usr/lib/sympa/bin/sympa.pl --upgrade
/usr/lib/sympa/bin/sympa.pl --health_check
sympa_wizard --check
sympa_wizard --display


- Modifications sur le fichier de config /etc/sympa/sympa/sympa.conf , sinon
l'interface Web ne marche pas

< wwsympa_url https://listes.huma-num.fr/wws
---
> wwsympa_url http://listes.huma-num.fr/sympa


===================
Problèmes résiduels
===================


*/ fichier /etc/mail/sympa/aliases.db pas mis à jour après modification par
SYMPA de /etc/mail/sympa/aliases

- ajustement des permissions (lu sur la liste sympa-fr@) :
chown sympa:sympa /etc/aliases /etc/aliases.db
/etc/mail/sympa/aliases /etc/mail/sympa/aliases.db

*/ erreur dans la traduction FR d'un message d'abonnement

- merci à Laurent Henry - EHESS

- refabrication du fichier /usr/share/locale/fr/LC_MESSAGES/sympa.mo

- récupération des fichiers "raw"

https://github.com/sympa-community/sympa/blob/6.2.42/po/sympa/fr.po

https://github.com/sympa-community/sympa/blob/6.2.43b.1/po/sympa/fr.po

- report dans le premier de la modification vue dans le 2eme (ligne
13249)

root@cchum-kvm-sympa:~/fr.po# diff fr.po.6.2.42.orig fr.po.6.2.42.corrige
13253c13253,13255
< msgstr "Vous n'êtes pas abonné à la liste %1@%2 avec l'adresse %3"
---
> msgstr ""
> "Vous recevez ce mail parce que vous êtes inscrit à la liste de diffusion
> %1@"
> "%2 avec l'adresse %3"
root@cchum-kvm-sympa:~/fr.po#

- apt-get install gettext

- msgfmt fr.po.6.2.42.corrige -o
/usr/share/locale/fr/LC_MESSAGES/sympa.mo


=======================================================
Authentifications externes via LDAP, CAS, OpenIDConnect
=======================================================


- Cf

https://sympa-community.github.io/manual/customize/authentication-web.html

- IMPORTANT : il semble impératif qu'il faille

1/ définir un dossier
/etc/sympa/listes.huma-num.fr
rem : comme si on voulait avoir plusieurs robots

2/ mettre dans ce dossier 2 fichiers
robot.conf : reprenant quelques attributs de ce robot
auth.conf : contenant la méthode d'authentification

3/ rebooter ("systemctl restart sympa" ne suffit pas)

- fichiers de config dans /etc/sympa/listes.huma-num.fr à copier sous le nom
auth.conf

- NB : dans notre cas,
- le serveur LDAP est un OpenLDAP 2.4.x
- le serveur CAS et OpenIDConnect est un LemonLDAP::NG 2.x

a/ Lien direct avec LDAP
------------------------

Le fichier auth.conf contient alors qqch comme

ldap
host ldapr1.huma-num.fr:636
timeout 30
suffix dc=huma-num,dc=fr
bind_dn cn=apache,ou=dsa,dc=huma-num,dc=fr
bind_password xxxx
alternative_email_attribute gosaMailAlternateAddress
email_attribute mail
get_dn_by_uid_filter (uid=[sender])
get_dn_by_email_filter
(|(mail=[sender])(gosaMailAlternateAddress=[sender]))
scope sub
use_tls ldaps
ssl_version tlsv1
ssl_ciphers HIGH


b/ Lien CAS
-----------

Le fichier auth.conf contient alors qqch comme

cas
base_url https://humanid.huma-num.fr/cas
non_blocking_redirection on
auth_service_name HumanID
#
# pour récupérer dans LDAP l'adresse mail de la personne authentifiée
#
ldap_host ldapr1.huma-num.fr:636
ldap_bind_dn cn=apache,ou=dsa,dc=huma-num,dc=fr
ldap_bind_password xxxx
ldap_suffix dc=huma-num,dc=fr
ldap_scope sub
ldap_get_email_by_uid_filter (uid=[uid])
ldap_email_attribute mail
ldap_timeout 7
ldap_use_tls ldaps
ldap_ssl_version tlsv1
ldap_ssl_ciphers HIGH


c/ Lien OpenIDConnect
---------------------

- Documentations

https://github.com/zmartzone/mod_auth_openidc
https://curity.io/resources/learn/apache-mod-auth-openidc/

- Préalables

apt-get install libapache2-mod-auth-openidc
a2enmod auth_openidc

- Trois fichiers à mettre en place

1/ /etc/sympa/<ROBOT>/auth.conf

generic_sso
service_name Human-ID
service_id inqueue
http_header_list OIDC_CLAIM_name
email_http_header OIDC_CLAIM_sub
logout_url
https://listes.huma-num.fr/callback?logout=https://listes.huma-num.fr


2/ configuration particulière du module OpenIDConnect

OIDCRedirectURI https://listes.huma-num.fr/callback
OIDCCryptoPassphrase mettreunelonguechainepourchiffrerlescookies
OIDCProviderMetadataURL
https://humanid.huma-num.fr/.well-known/openid-configuration
OIDCClientID xxxxxx
OIDCClientSecret xxxxx
OIDCScope "openid email profile"
OIDCRemoteUserClaim "sub"
OIDCCacheType file
OIDCCacheDir /var/cache/apache2/mod_auth_openidc/cache
OIDCSessionInactivityTimeout 300
OIDCSessionMaxDuration 86400

3/ ajout de configuration au VirtualHost Apache

<Location /callback>
AuthType openid-connect
Require claim sub~@.*$
</Location>

<Location ~ .*/sso_login/inqueue/init>
AuthType openid-connect
Require claim sub~@.*$
</Location>

<Location /logout>
AuthType openid-connect
Require valid-user
</Location>

===============================
Alimentations externes par LDAP
===============================

- Documentation
https://sympa-community.github.io/manual/customize/data-sources.html

- Les sources de données peuvent se définir
- via l'interface Web
- directement en éditant des fichiers
/etc/sympa/data_sources/*.incl
rem : pas besoin de relancer SYMPA à chaque modif

IMPORTANT : il ne faut pas mettre de ligne blanche dans ces fichiers

- Leur prise en compte

- est automatisée par le paramètre "default_ttl" dans
/etc/sympa/sympa/sympa.conf
qui vaut par défaut 3600 secondes

- peut être déclenchée en allant dans l'admin de la liste
Les utilisateurs / Abonnés et le bouton ad-hoc

- Un chapeau commun à ces fichiers peut être qqch comme
name YYYY
host ldapr3.huma-num.fr
port 636
user cn=admin,dc=huma-num,dc=fr
passwd XXXX
ca_verify required
use_tls ldaps
ssl_version tlsv1_2
ssl_ciphers HIGH
select all

IMPORTANT : il faut utiliser un compte LDAP qui a le droit de parcourir tout
l'annuaire

- Pour synchroniser la liste des abonnés d'une liste, il suffit d'aller dans
l'admin de la liste
Configurer la liste / Définition des sources de données
et
soit utiliser une source déjà définie
soit en définir une

- Trois exemples

a/ abonnés == personnes dans une branche de l'annuaire :
-> directive "include_ldap_query" avec
select all
filter (uid=*)
suffix ou=notre-dame-paris,dc=huma-num,dc=fr
attrs mail
scope sub
timeout 100

b/ abonnés == personnes dans un groupe de type "role" :
-> directive "include_ldap_2level_query" avec

filter1 (cn=huma-num-all)
suffix1 dc=huma-num,dc=fr
attrs1 roleOccupant
scope1 sub
timeout1 1000
select2 all
filter2 (objectClass=person)
suffix2 [attrs1]
attrs2 mail
scope2 sub
timeout2 1000

c/ abonnés == personnes dans un groupe LDAP POSIX :
-> directive "include_ldap_2level_query" avec

filter1 (cn=groupe-test)
suffix1 dc=huma-num,dc=fr
attrs1 memberUid
scope1 sub
timeout1 1000
select2 all
filter2 (uid=[attrs1])
suffix2 dc=huma-num,dc=fr
attrs2 mail
scope2 sub
timeout2 1000

- Pour passer un paramètre, la syntaxe est [% param.0 %]


  • Re: [sympa-fr] 2 soucis, Joel Marchand, 19/04/2021

Archives gérées par MHonArc 2.6.19+.

Haut de le page