Re - bonjourVous trouverez en pièce jointe la procédure d'installation complète de OBM pour squeeze
J'ai deux questions :- Une fois que LemonLDAP est actif, comment peut-on définir des domaines puisque global.virt n'existe pas dans l'annuaire ? - Il y a une erreur de configuration dans la doc de LemonLDAP car http_authentication reçoit l'UID sans le domaine, ce qui empêche les connexions.
J'ai adapté la configuration de LemonLDAP pour ajouter la recherche sur le champ mail et pas sur le champ UID (sinon on n'a pas le support de multi-domaine).
Avez-vous des idées ? On 29/01/13 13:33, Thomas Sarboni wrote:
Bonjour, Pour l'instant, la solution préconisée est effectivement l'installation de LemonLDAP pour mettre en place un système de SSO entre OBM et Roundcube. Cette opération nécessite d'installer le plugin http_authentication pour roundcube et de le configurer pour qu'il récupère les bons en-têtes http. En général, nous utilisons HTTP_AUTH_USER à la place de PHP_AUTH_USER qui est configuré par défaut. Afin de valider votre configuration, vous pouver créer un fichier php à la raçine de votre installation de roundcube et y mettre les lignes suivantes : <?php phpinfo(); ?> Ce fichier vous permet d'afficher les en-têtes qui sont reçues par roundcube. Encore un conseil supplémentaire. Pensez à activer l'option suivante dans votre configuration LemonLDAP : "stocker le mot de passe de l'utilisateur en session" De cette manière, le mot de passe ayant servi à l'authentification lemonldap sera correctement transmis dans les en-têtes. Cordialement, Thomas Sarboni Linagora SA Support OBM/Messagerie Le 29/01/2013 11:43, Dominique Fournier a écrit :Bonjour Merci pour cette réponse. J'avais testé avec OBM Stable/LemonLDAP et cela ne fonctionnait pas non plus. Apparement Roundcube ne recevait pas les authentifications, c'est pour cela que je suis reparti sur l'authentification simple. Je trouve dommage de déployer LemonLDAP pour juste le Webmail. Vous n'avez pas envie de remettre cette intégration plus haut sur la pile ? Merci et encore bravo pour ce beau logiciel ! Cordialement Dom On 29/01/13 10:15, Michael BAILLY wrote:Bonjour, l'intégration de RoundCube dans OBM n'est pas finalisée. Vous noterez, si vous vous connectez sur notre système de gestion de tickets ( http://ci-obm.linagora.com/jira/browse/OBMFULL-4198 ) que la fonctionnalité est au début de son développement. Pour l'instant, il faut donc installer RoundCube en standalone, et utiliser un SSO (type LemonLDAP::NG) si vous souhaitez une authentification unique. L'intégration de roundcube dans OBM est prévue dans la roadmap produit, pour la prochaine version majeure, attendue pour la fin de l'année (Octobre si tout se passe comme prévu). Cordialement, Michael Le 29/01/2013 09:30, Dominique Fournier a écrit :Bonjour, Nous sommes en train de déployer OBM et nous butons sur l'installation du Webmail Roundcube. J'ai essayé les paquets disponibles OBMFULL-4198 (ce sont les seuls à ma connaissances qui ont le webmail) sur Debian Squeeze. J'ai utilisé la doc http://obm.org/doku.php?id=docs:configuration:roundcube#systeme pour l'installation des bases de données. Plusieurs problèmes apparaissent : - La base de données n'est pas initialisée pour le support de roundcube lors de l'installation des paquets (facile à corriger : c'est fait manuellement !) - Les droits ne sont pas alloués à roundcube pour accéder à la base de OBM. Du coup, des erreurs apparaissent à l'écran. - l'authentification depuis OBM lorsque l'on clique sur le lien Webmail ne fonctionne pas : on se retrouve sur la page d'authentification de OBM puis après réauthentification sur celle de Roundcube. Voici les logs de roundcube : [29-Jan-2013 09:24:48] PHP Warning: array_map(): Argument #2 should be an array in /usr/share/obm/www/php/webmail/plugins/obm_auth/obm_auth.php on line 84 [29-Jan-2013 09:24:51 +0100]: IMAP Error: Login failed for @grenoble.cnrs.fr from 1.2.3.4. LOGIN: Login failed: authentication failure in /usr/share/obm/www/php/webmail/program/include/rcube_imap.php on line 191 (GET /webmail/index.php) Donc il y a encore un loup, mais je ne maitrise pas assez PostgreSQL et les droits pour chaque table pour aller plus loin. Avez-vous des idées ? Merci Dom _______________________________________________ Obm mailing list [email protected] http://list.obm.org/mailman/listinfo/obm_______________________________________________ Obm mailing list [email protected] http://list.obm.org/mailman/listinfo/obm_______________________________________________ Obm mailing list [email protected] http://list.obm.org/mailman/listinfo/obm _______________________________________________ Obm mailing list [email protected] http://list.obm.org/mailman/listinfo/obm
Installation de OBM FULL Partir de Debian Squeeze de base Editer /etc/apt/sources.list et ajouter à chaque ligne "non-free contrib" Editer /etc/apt/sources.list.d/obm.list et ajouter : deb http://deb.obm.org/24/stable obm obm Editer /etc/apt/sources.list.d/backports.list et ajouter : deb http://backports.debian.org/debian-backports squeeze-backports main Editer /etc/apt/sources.list.d/lemonldap-ng.list deb http://lemonldap-ng.org/deb squeeze main deb-src http://lemonldap-ng.org/deb squeeze main Ajouter la clé OBM : wget -q http://deb.obm.org/obmgpg.pub -O - | apt-key add - Ajouter la clé Lemon-LDAP : wget -q http://lemonldap-ng.org/_media/rpm-gpg-key-ow2 -O - | apt-key add - apt-get update Il ne doit pas y avoir d'erreur Définir dans le DNS les machines : auth.domaine.tld, manager.domaine.tld , reload.domaine.tld et obm.domaine.tld apt-get install obm-full Répondre aux questions external url for OBM : obm.domaine.tld LDAP server : 127.0.0.1 OBM database server : PGSQL IP OBM database server : 127.0.0.1 OBM database name : obm OBM username : obm OBM user password : xxxxx OBM user password verify : xxxxx IP munin-node-master : 127.0.0.1 admin LDAP password : yyyy admin LDAP password confirm : yyyy proxy : [vide] SARE : Yes OBM VirtualHost : Yes OBM Tomcat : 127.0.0.1 IP O-Push : 127.0.0.1 Valider la licence Sun Java Un mail d'erreur arrive signalant que la base est injoignable : on l'ignore Répondre aux questions OBM-Storage avec dbconfig-common : Yes apt-get -t squeeze-backports install roundcube roundcube-plugins apt-get install php-mdb2-driver-pgsql Répondre aux questions : Database Roundcube avec dbconfig-common : Yes Database Type : pgsql Password : zzzzz Password confirmation : zzzzz Se connecter la première fois pour créer le compte d'administration Annuaire / Hôtes : Nouveau Nom : local / Adresse IP : 127.0.0.1 / Nom complet de la machine : local.global.virt Tout cocher sauf FTP de sauvegarde Administration / Domaines : Nouveau Label : domaine.tld / Nom de domaine : domaine.tld Selectionner de partout le serveur local sauf sur FTP de dépot Annuaire / utilisateurs : Nouveau Remplir les champs avec le domaine global.virt et en profil Admin Installation de Roundcuble Editer le fichier /etc/apache2/sites-available/obm.conf et ajouter dans le VirtualHost: # Ajouter le Webmail Alias /webmail /usr/share/roundcube <Directory /usr/share/roundcube> Options +Indexes Includes FollowSymlinks Order Allow,Deny Allow from All PerlHeaderParserHandler My::Package->unprotect DirectoryIndex index.pl index.php </Directory> Modifier la ligne : php_value include_path ".:/usr/share/obm/www:/usr/share/php" service apache2 reload Editer le fichier /etc/roundcube/main.inc.php et ajouter dans la section plugins $rcmail_config['plugins'] = array("http_authentication"); Installation de Lemon-LDAP apt-get install lemonldap-ng sed -i 's/example\.com/mondomaine.com/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1 /var/lib/lemonldap-ng/test/index.pl Configuration de Apache2 : a2ensite default Editer /etc/apache2/sites-enabled/000-default et ajouter dans la section VirtualHost : Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^manager\.mondomaine\.com$ RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^auth\.mondomaine\.com$ RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} mondomaine\.com$ RewriteRule . https://obm.mondomaine.com%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^localhost$ RewriteCond %{HTTP_HOST} !^127.0.0.1$ RewriteCond %{HTTPS} !=on RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301] Editer /etc/apache2/sites-enabled/obm.conf et ajouter dans la section VirtualHost : PerlOptions +GlobalRequest PerlRequire /var/lib/lemonldap-ng/handler/MyHandler.pm PerlHeaderParserHandler My::Package Commenter avec un dièse en début de ligne : ProxyPass /obm-sync http://localhost:8080/obm-sync ProxyPassReverse /obm-sync http://localhost:8080/obm-sync ProxyPass /funambol http://localhost:8080/funambol ProxyPassReverse /funambol http://localhost:8080/funambol <Location /minig> ProxyPass ajp://localhost:8009/minig </Location> ProxyPass /Microsoft-Server-ActiveSync http://localhost:8082/Microsoft-Server-ActiveSync ProxyPassReverse /Microsoft-Server-ActiveSync http://localhost:8082/Microsoft-Server-ActiveSync <IfModule mod_rewrite.c> <IfModule mod_ssl.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L] </IfModule> </IfModule> Ajouter dans la section VirtualHost : <Location /obm-sync> Order Allow,Deny Allow from All ProxyPass http://127.0.0.1:8080/obm-sync ProxyPassReverse http://127.0.0.1:8080/obm-sync PerlHeaderParserHandler My::Package->unprotect </Location> <Location /funambol> Order Allow,Deny Allow from All ProxyPass http://127.0.0.1:8080/funambol ProxyPassReverse http://127.0.0.1:8080/funambol PerlHeaderParserHandler My::Package->unprotect </Location> <Location /Microsoft-Server-ActiveSync> Order Allow,Deny Allow from All ProxyPass http://127.0.0.1:8082/Microsoft-Server-ActiveSync ProxyPassReverse http://127.0.0.1:8082/Microsoft-Server-ActiveSync PerlHeaderParserHandler My::Package->unprotect </Location> <Location /images> Order Allow,Deny Allow from All PerlHeaderParserHandler My::Package->unprotect </Location> <Location /sso> Order Allow,Deny Allow from All PerlHeaderParserHandler My::Package->unprotect </Location> #_LEMON_BEGIN_ ## Rewrite rules ## RewriteEngine On RewriteCond %{HTTP_HOST} ^manager\.mondomaine\.com$ RewriteRule . https://obm.mondomaine.com/sso/manager%{REQUEST_URL} [L,R=301] RewriteCond %{HTTP_HOST} ^auth\.mondomaine\.com$ RewriteRule . https://obm.mondomaine.com/sso/portal%{REQUEST_URL} [L,R=301] ## Prise en charge des fichiers Perl ## <Files *.pl> SetHandler perl-script PerlResponseHandler ModPerl::Registry </Files> ## Directory index ## <IfModule mod_dir.c> DirectoryIndex index.pl index.html </IfModule> ## Configuration portail ## Alias /sso/portal /var/lib/lemonldap-ng/portal/ <Directory /var/lib/lemonldap-ng/portal/> Order allow,deny Allow from all Options +ExecCGI Includes FollowSymlinks PerlHeaderParserHandler My::Package->unprotect </Directory> <Location /sso/portal> <IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/javascript text/css SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary </IfModule> <IfModule mod_headers.c> Header append Vary User-Agent env=!dont-vary </IfModule> </Location> <Location /sso/portal/skins/> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 month" </IfModule> </Location> # SOAP functions for configuration access (disabled by default) <Location /sso/portal/index.pl/config> Order deny,allow Deny from all Allow from 127.0.0.0/8 </Location> <Perl> require Lemonldap::NG::Portal::SharedConf; Lemonldap::NG::Portal::SharedConf->compile( qw(delete header cache read_from_client cookie redirect unescapeHTML)); # Uncomment this line if you use Lemonldap::NG menu require Lemonldap::NG::Portal::Menu; # Uncomment this line if you use portal SOAP capabilities #require SOAP::Lite; </Perl> ## Configuration manager ## Alias /sso/manager /var/lib/lemonldap-ng/manager/ <Directory /var/lib/lemonldap-ng/manager> Order deny,allow Deny from all Allow from 127.0.0.0/8 #Order allow,deny #Allow from all Options +ExecCGI PerlHeaderParserHandler My::Package->unprotect </Directory> # Alias vers la documentation pour RedHat / CentOS #Alias /doc /var/lib/lemonldap-ng/doc/ #<Directory /var/lib/lemonldap-ng/doc> # Alias vers la documentation pour Debian Lenny #Alias /doc /usr/share/doc/lemonldap-ng-doc/ #<Directory /usr/share/doc/lemonldap-ng-doc> # Partie commune aux deux distributions # Order allow,deny # Allow from all # Options +ExecCGI # PerlHeaderParserHandler My::Package->unprotect #</Directory> Alias /lib /var/lib/lemonldap-ng/doc/lib/ <Directory /var/lib/lemonldap-ng/lib> Order allow,deny Allow from all Options +ExecCGI PerlHeaderParserHandler My::Package->unprotect </Directory> Alias /javascript /usr/share/javascript/ <Directory /usr/share/javascript> Order allow,deny Allow from all PerlHeaderParserHandler My::Package->unprotect </Directory> ## Configuration handler ## <Location /reload> Order deny,allow Deny from all Allow from 127.0.0.0/8 PerlHeaderParserHandler My::Package->refresh </Location> #_LEMON_END_ Adapter les lignes contenant mondomaine Ajouter dans la section <Directory /var/lib/lemonldap-ng/manager>, l'IP du réseau de management : Redémarrer Apache2 Dans /etc/lemonldap-ng/lemonldap-ng.ini, décommenter la ligne de reload reload.grenoble.cnrs.fr = http://reload.domaine.tld/reload Editer /etc/obm/obm_conf.inc et ajouter les lignes : $auth_kind = 'LemonLDAP'; $lemonldap_config = Array( "auto_update" => false, "auto_update_force_user" => true, "auto_update_force_group" => true, "url_logout" => "https://obm.mondomaine.com/logout", "server_ip_address" => "localhost", "server_ip_check" => false, "debug_level" => "debug", // "debug_header_name" => "HTTP_OBM_UID", // "group_header_name" => "HTTP_OBM_GROUPS", "headers_map" => Array( //"userobm_gid" => "HTTP_OBM_GID", //"userobm_domain_id" => , "userobm_login" => "HTTP_AUTH_USER", //"userobm_password" => "HTTP_OBM_USERPASSWORD", //"userobm_password_type" => , //"userobm_perms" => "HTTP_OBM_PERMS", //"userobm_kind" => , //"userobm_lastname" => "HTTP_OBM_SN", //"userobm_firstname" => "HTTP_OBM_GIVENNAME", //"userobm_title" => "HTTP_OBM_TITLE", //"userobm_email" => "HTTP_OBM_MAIL", //"userobm_datebegin" => "HTTP_OBM_DATEBEGIN", //"userobm_account_dateexp" => , //"userobm_delegation_target" => , //"userobm_delegation" => , //"userobm_description" => "HTTP_OBM_DESCRIPTION", //"userobm_archive" => , //"userobm_hidden" => , //"userobm_status" => , //"userobm_local" => , //"userobm_photo_id" => , //"userobm_phone" => "HTTP_OBM_TELEPHONENUMBER", //"userobom_phone2" => , //"userobm_mobile" => , //"userobm_fax" => "HTTP_OBM_FACSIMILETELEPHONENUMBER", //"userobm_fax2" => , //"userobm_company" => "HTTP_OBM_O", //"userobm_direction" => , //"userobm_service" => "HTTP_OBM_OU", //"userobm_address1" => "HTTP_OBM_POSTALADDRESS", //"userobm_address2" => , //"userobm_address3" => , //"userobm_zipcode" => "HTTP_OBM_POSTALCODE", //"userobm_town" => "HTTP_OBM_L", //"userobm_zipcode" => "HTTP_OBM_POSTALCODE", //"userobm_town" => "HTTP_OBM_L", //"userobm_expresspostal" => , //"userobm_host_id" => , //"userobm_web_perms" => , //"userobm_web_list" => , //"userobm_web_all" => , //"userobm_mail_perms" => , //"userobm_mail_ext_perms" => , //"userobm_mail_server_id" => , //"userobm_mail_server_hostname" => , //"userobm_mail_quota" => "HTTP_OBM_MAILQUOTA", //"userobm_nomade_perms" => , //"userobm_nomade_enable" => , //"userobm_nomade_local_copy" => , //"userobm_email_nomade" => , //"userobm_vacation_enable" => , //"userobm_vacation_datebegin" => , //"userobm_vacation_dateend" => , //"userobm_vacation_message" => , //"userobm_samba_perms" => , //"userobm_samba_home" => , //"userobm_samba_home_drive" => , //"userobm_samba_logon_script" => , // ---- Unused values ? ---- //"userobm_ext_id" => "HTTP_OBM_SERIALNUMBER", //"userobm_system" => , //"userobm_nomade_datebegin" => , //"userobm_nomade_dateend" => , //"userobm_location" => , //"userobm_education" => , ), ); Editer le fichier /etc/lemonldap-ng/lemonldap-ng.ini et dans la section [manager], mettre un point-virgule devant la ligne protection Ensuite on paramètre le manager : https://yourdomain.com/sso/manager [Commentaire : Pourquoi ce n'est pas directement fait par le fichier !!! :-(] 1) Paramètres Généraux → Portail URL : https://obm.mondomaine.com/sso/portal/ puis Appliquer (Bien mettre le / final !!) Menu -> Modules -> Changement de mot de passe : désactivé puis Appliquer Menu -> Catégories et applications : Supprimer toutes les catégories Menu -> Catégories et applications : Nouvelle Catégorie - identifiant de la catégorie : 1OBM - nom à afficher : OBM puis Appliquer Menu -> Catégories et applications -> 1OBM : Nouvelle application - identifiant de l'application : 11OBM - nom à afficher : OBM - adresse : https://obm.mondomaine.com - logo : bookmark.png (étoile) - Description : Calendrier et contacts - Mode d'affichage : Automatic et Appliquer Menu -> Catégories et applications -> 1OBM : Nouvelle application - identifiant de l'application : 12WEBMAIL - nom à afficher : Webmail - adresse : https://obm.mondomaine.com/webmail - logo : mailappt.png (envellope) - Description : Accès aux mails - Mode d'affichage : Automatic et Appliquer Personnalisation -> Réinitialisation de mot de passe : désactivé Personnalisation -> Autocomplétion : activé Personnalisation -> Protection anti-frame : désactivé 2) Paramètres Généraux → Modules d'authentification Module d'authentification : LDAP puis Appliquer Module d'utilisateurs : LDAP puis Appliquer Module de mot de passe : LDAP puis Appliquer Paramètres LDAP -> Connexion -> Hôte : spécifier l'hôte ou l'ip du serveur ldap (localhost ?) puis Appliquer Paramètres LDAP -> Connexion -> Port : spécifier le port puis Appliquer Paramètres LDAP -> Connexion -> Base de recherche des utilisateurs : même paramètre que dans le script obm-admin (dc=local) puis Appliquer Paramètres LDAP -> Filtres -> Filtre par défaut : (&(mail=$user)(objectClass=person)) 3) Paramètres Généraux → Cookies Domaine : mondomaine.com et Appliquer Cookie sécurisé (SSL) : Cookie sécurisé (HTTPS) 4) Paramètres Généraux → Sessions Stocke le mot de passe de l'utilisateur en session : Activé Délai d'expiration des sessions : 15 min 5) Paramètres Généraux → Paramètres avancés Transfert de déconnexion : Nouvelle Clef - OBM - https://obm.mondomaine.com/obm.php?action=logout et Appliquer Transfert de déconnexion : Nouvelle Clef - Roundcube - https://obm.mondomaine.com/webmail/?_task=logout et Appliquer 6) Variables Attributs à exporter : Effacer les clefs mail et cn (reste uid) Attributs à exporter -> Nouvelle clef : obmDomain - obmDomain et Appliquer # seulement en cas de multi-domaines Attributs à exporter -> Nouvelle clef : login - login et Appliquer # seulement en cas de multi-domaines Macros : Supprimer la macro par défaut Macros -> Nouvelle clef : login - "$uid\@$obmDomain" et Appliquer # seulement en cas de multi-domaines 7) Hôtes virtuels Supprimer les hôtes par défaut (test1 et test2) Nouvel hôte virtuel : obm.mondomaine.com et Appliquer 8) Hôtes virtuels → Règles Editer la règles par defaut (default) : Remplacer deny par accept puis Appliquer Nouvelle règle : commentaire : logout - Règle : logout_sso https://obm.mondomaine.com/sso/portal/?logout=1 - Expression : ^/logout puis Appliquer Nouvelle règle : commentaire : unprotect_obm - Règle : unprotect - Expression : ^/obm.php?action=logout puis Appliquer Nouvelle règle : commentaire : unprotect_roundcube - Règle : unprotect - Expression : ^/webmail/?_task=logout puis Appliquer 9) Hôtes virtuels → En-têtes HTTP Editer la clef Auth-User : Remplacer $uid par $login et Appliquer Nouvelle Clef : Authorization - "Basic ".encode_base64("$uid:$_password") et Appliquer 10) Hôtes virtuels → Options HTTPS : activé 11) Sauvegarde de la configuration Cliquer sur sauver
<<attachment: dominique_fournier.vcf>>
_______________________________________________ Obm mailing list [email protected] http://list.obm.org/mailman/listinfo/obm
