informatique:reseau:messagerie:sogo

SOGo

Pour activer ce cron, vous avez besoin d'avoir un compte master de configuré au niveau de Dovecot (plus d'infos ici). Il faudra ensuite editer le fichier /etc/sogo/sieve.creds pour y mettre les identifiants du compte master :

sogo:master_password

Fait en sorte que ce fichier appartienne à l'utilisateur et au groupe sogo et qu'il est des droits 400.

Dans cet exemple, le serveur SOGo est derrière l'URL https://mail.exemple.org et le serveur CAS est derrière l'URL https://login.exemple.org/cas. Il est indispensable que le serveur accepte son utilisation depuis les services imap://mail.exemple.org et https://mail.exemple.org. Pour cela rendez vous sur l'interface de gestion des services du serveur CAS https://login.exemple.org/cas/services/manage.html.
Pour que l'authentification CAS fonctionne, SOGo doit utilisé un serveur memcached.

Procédure :

Il faut tout d'abord mettre en place l'authentification CAS au niveau du serveur IMAP/SIEVE. Pour cela, je prendrais l'exemple de Dovecot avec libpam-cas + libpam-ccreds pour mettre en cache les tickets d'authentification CAS. Pour cela, on commence par installer le paquet Debian libpam-cas et libpam-ccreds. Le second est dans Debian mais pas le premier. On peut cependant le compiler soit même à partir des sources fournissant le nécessaire :

apt install debhelper libpam0g-dev libssl-dev build-essential git
cd /usr/local/src
git clone https://github.com/EsupPortail/esup-pam-cas.git
cd esup-pam-cas
dpkg-buildpackage -b --no-sign
sudo dpkg -i ../libpam-cas_*.deb

Un fois installer on met en place le fichier de configuration /etc/pam_cas.conf :

# host from CAS server. mandatory
host login.exemple.org

# port from CAS server. Default to 80 or 443, depends from ssl instruction
port 443

# uri to validate ticket. Default to /proxyValidate
uriValidate /cas/proxyValidate

# https or no. values on or off. Default to on.
ssl on

# proxy or proxies who deliver Proxy Ticket.
# If no proxy, pam_cas doesn't control it
# It may be several proxy instructions
proxy https://mail.exemple.org/SOGo/casProxy

# debug (on) or no (off). debug in syslog, level LOG_DEBUG. Default to off
debug off

# trusted_ca. mandatory if ssl on.
# It a file in pem format. It can contents several certificates
# If the CAS server certificate is auto-signed, the file must content the certificate
# If the certificate is trusted by an Certificate Autority, The file must content
#    certificate from high level CA
trusted_ca [chemin vers le certificat de la CA ayant émis les certificats SSL de l'infra]
Pour le paramètre trusted_ca, vous pouvez utiliser le fichier /etc/ssl/certs/ca-certificates.crt gérer par le paquet Debian ca-certificates.

On met ensuite en place un fichier de configuration PAM pour dovecot-cas, à savoir le fichier /etc/pam.d/dovecot-cas :

auth    sufficient      pam_ccreds.so action=validate service_specific
auth    [success=ok new_authtok_reqd=ok ignore=done default=die] pam_cas.so -simap://mail.exemple.org -f/etc/pam_cas.conf
auth    optional        pam_ccreds.so action=store service_specific timeout=300
account sufficient      pam_permit.so
session sufficient      pam_permit.so

Cette configuration défini le principe d'authentification suivant en 3 étapes :

  1. Lors d'une authentification, on vérifie tout d'abord si l'utilisateur n'est pas déjà connecté dans le cache de pam_ccreds (situé dans le fichier /var/cache/.security.db). Si l'utilisateur est déjà connecté, on le laisse passé, sinon on passe à l'étape suivante
  2. La seconde étape utilise le module pam_cas pour tenter une authentification de l'utilisateur via CAS en validant le ticket CAS passé en tant que mot de passe. On passe ici deux paramètres au module CAS :
    • Via le paramètre -s on lui fourni le nom du service CAS, qui doit être identique à celui fournis au serveur CAS lors de l'obtention du ticket par le service agissant en Proxy CAS.
    • Via le paramètre -f on lui fourni le chemin du fichier de configuration du module à savoir /etc/pam_cas.conf
  3. La troisième étape consiste, si l'authentification de l'utilisateur à l'étape précédente à réussi, à stocker dans le cache de pam_ccreds l'authentification de l'utilisateur. On passe au module pam_ccreds via le paramètre timeout=300 la durée de validité de l'enregistrement dans le cache (par défaut, elle est infinie). On spécifie également que cette authentification est valable uniquement pour Dovecot au travers le paramètre service_specific
On peut ensuite tester la communication avec le serveur CAS en utilisant l'outil castest qui tentera la validation d'un ticket bidon auprès du serveur CAS qui devrait retourner bas CAS ticket mais pas une autre erreur :)

On configure ensuite Dovecot pour qu'il utilise en place de son backend d'authentification actuel (LDAP par exemple), l'authentification via PAM en tant que le service dovecot-cas. Pour cela, on créé le fichier /etc/dovecot/conf.d/11-auth-pam-cas.conf :

passdb {
   args = session=yes cache_key=%n dovecot-cas
   driver = pam
}

On dois ensuite redémarrer Dovecot pour application de cette nouvelle configuration. Un fois l'authentification CAS en place sur le serveur IMAP, passons à SOGo : On commence par mettre en place le service casProxy de SOGo :

mkdir -p /var/www/mail/cgi-bin
cd /var/www/mail/cgi-bin
wget https://raw.github.com/inverse-inc/sogo/master/Scripts/cas-proxy-validate.py
chmod 755 cas-proxy-validate.py
apt-get install python-memcache

Il faut également éditer le fichier cas-proxy-validate.py et adapter en haut du fichier les paramètres cas-addr qui doit correspondre à l'adresse IP du serveur CAS (127.0.0.1 par défaut) et le paramètre memcached-addrs qui doit correspondre à l'IP et le port du service memcache utilisé par SOGo (127.0.0.1:11211 par défaut).

On met en place ensuite le ScriptAlias correspondant dans la configuration Apache pour SOGo en éditant le fichier /etc/apache2/conf.d/SOGo.conf et en ajoutant les lignes suivantes et en les adaptant :

  • Apache 2.2 (ou inférieur) :
    ScriptAlias /SOGo/casProxy /var/www/mail/cgi-bin/cas-proxy-validate.py
    <Location /SOGo/casProxy>
      Order deny,allow
      Deny from all
      Allow from [IP du serveur CAS]
      Allow from 127.0.0.1
    </Location>
  • Apache 2.4 (ou supérieur) :
    ProxyPass /SOGo/casProxy !
    ScriptAlias /SOGo/casProxy /var/www/mail/cgi-bin/cas-proxy-validate.py
    <Location /SOGo/casProxy>
      Require ip [IP du serveur CAS]
      Require ip 127.0.0.1
    </Location>

Il faut ensuite redémarrer Apache pour activer le service. On configure ensuite SOGo en ajoutant dans le fichier /etc/sogo/sogo.conf les paramètres suivants :

SOGoAuthenticationType = "cas";
SOGoCASServiceURL = "https://login.exemple.org/cas/";
WOWorkersCount = 5;
SOGoIMAPCASServiceName = "imap://mail.exemple.org";

On redémarre ensuite SOGo et ça devrais marcher !

En cas de problème, vous pouvez activer l'option debug dans le fichier /etc/pam_cas.conf sur le serveur IMAP et suivre l'authentification dans /var/log/auth.log.

Doc sur le sujet intéressante : http://www.esup-portail.org/consortium/espace/SSO_1B/tech/cas/cas_pam.html

Pour configurer SOGo pour qu'il utilise l'IDP Authentic2 comme un serveur CAS, il faut via l'interface d'administration d'Authentic2 :

  • Créer un service CAS pour SOGo :
    • Identifiant : ce que vous voulez, par exemple le nom de domaine du SOGo
    • URLs : L'URL d'accès de votre SOGo suffixé par /so/index. Exemple : https://mail.exemple.com/SOGo/so/index
    • Nom de l'attribut : sélectionner un attribut correspondant au login de l'utilisateur qui devra être reconnue par une de vos SOGoUserSources définies dans le fichier sogo.conf
  • Créer un service CAS pour Dovecot :
    • Identifiant : ce que vous voulez, par exemple Dovecot
    • URLs : l'URL de service utilisée par pam-cas et telque définie dans le paramètre SOGoIMAPCASServiceName de SOGo
    • Nom de l'attribut : sélectionner un attribut correspondant au login de l'utilisateur qui devra être reconnu par Dovecot
    • Mandataire : sélectionner le service CAS précédemment créé correspondant à votre SOGo
  • informatique/reseau/messagerie/sogo.txt
  • Dernière modification : 2024/05/03 17:01
  • de bn8