Import de la config de slapd dans BCfg2

En passant, on passe au mode de rplication 'SyncRepl', qui permet une
rplication from scratch sans dump de la base parente.

darcs-hash:20080925004118-ffbb2-b6de13342ee17d92c37030f37b7e9c63a93cc628.gz
This commit is contained in:
Nicolas Dandrimont 2008-09-25 02:41:18 +02:00
parent bfb6c05cfe
commit df01def771
5 changed files with 547 additions and 2 deletions

167
Python/etc/ldap/slapd.conf Normal file
View file

@ -0,0 +1,167 @@
# -*- mode: python; coding: utf-8 -*-
include("ip")
header("Serveur LDAP")
@#######################################################################
@# Directives globales:
@
@# On permet le binding en version 2 pour login_ldap sur ragnarok
@allow bind_v2
@
@# Définition des schémas et objectClasses
@include /etc/ldap/schema/core.schema
@include /etc/ldap/schema/cosine.schema
@include /etc/ldap/schema/nis.schema
@include /etc/ldap/schema/inetorgperson.schema
@include /etc/ldap/schema/amavis.schema
@include /etc/ldap/schema/crans.schema
@
@# Vérification de conformance au schéma pour les objets
@schemacheck on
@
@# Emplacement du pidfile
@pidfile /var/run/slapd/slapd.pid
@
@# Arguments passés au serveur
@argsfile /var/run/slapd/slapd.args
@
@# Niveau de journalisation
@loglevel 0
@
@# Stockage des modules
@modulepath /usr/lib/ldap
@moduleload back_bdb
@
@# Limitation du nombre de réponses
@sizelimit 1000000000
@
@# Méthode pour crypter les mots de passe
@password-hash {SSHA}
@
if has("sable"):
@# Configuration TLS pour la connexion à partir de ragnarok (login-ldap)
@TLSCipherSuite HIGH:MEDIUM:+SSLv3
@TLSCertificateFile /etc/ssl/certs/sable_server.pem
@TLSCertificateKeyFile /etc/ssl/private/sable_privatekey.pem
@TLSCACertificateFile /etc/ssl/certs/root.pem
@TLSVerifyClient never
@#######################################################################
@# Directives de configuration pour le backend bdb
@backend bdb
@
@#######################################################################
@# Configuration de la base de données principale
@database bdb
@
@# Base de recherche principale
@suffix "dc=crans,dc=org"
@
@# Répertoire de stockage de la base de données
@directory "/var/lib/ldap"
@
@# Options d'indexation pour la base de données
@index entryUUID,entryCSN eq
@index objectClass,memberUid,uid,uidNumber eq
@index cn,sn eq,approx,sub
@index mailAlias,mail,canonicalAlias eq
@index macAddress eq
@index nom,host,hostAlias eq,approx,sub
@index chbre eq,subinitial
@index paiement,droits eq
@
@# Sauvegarde des timestamps de modifications des objets
@lastmod on
@
if has("db-main"):
@# Overlay pour la synchronisation par syncprov
@overlay syncprov
@syncprov-checkpoint 100 10
@syncprov-sessionlog 100
else:
include("secrets")
rid = admip()
# L'identifiant du réplica est choisi comme étant la dernière partie de l'adresse ip
rid = rid[rid.rfind(".")+1:]
@# Réplication de la base
@# LDAP a besoin de la déclaration du rootdn
@rootdn="cn=damin,dc=crans,dc=org"
@
@# SyncRepl
print "syncrepl rid=%s" % rid
@ provider ldap://vert.adm.crans.org
@ searchbase="dc=crans,dc=org"
@ schemachecking=on
@ type=refreshAndPersist
print ' binddn="%s"' % secrets.ldap_replica_auth_dn
@ bindmethod=simple
print ' credentials=%s' % secrets.ldap_replica_password
@ retry="30 20 300 3"
@
@# Redirection des requêtes en écriture, ...
@updateref ldap://vert.adm.crans.org
@
@# L'attribut userPassword doit pouvoir être écrit uniquement par
@# soi-même, l'admin, les replicas. Dovecot peut le lire, et on peut
@# s'authentifier avec anonymement
@
@access to attrs=userPassword
@ by dn.regex="cn=admin,dc=crans,dc=org" write
@ by dn.regex="cn=replica,dc=crans,dc=org" write
@ by dn.regex="cn=dovecot,dc=crans,dc=org" read
@ by anonymous auth
@ by self write
@ by * none
@
@# Permettre l'accès à la base pour des trucs comme
@# "supportedSASLMechanisms", pour éviter des problèmes
@# possibles si les méthodes SASL ne sont pas connues.
@access to dn.base="" by * read
@
@# Pour postfix
@access to dn.regex="^(a|c)id=[0-9]+,ou=data,dc=crans,dc=org$$"
@ attrs=mailAlias,canonicalAlias,uid,mail,entry,objectClass,contourneGreylist,rewriteMailHeaders
@ by dn.regex="cn=postfix,dc=crans,dc=org" read
@ by * break
@
@# Pour intranet
@access to dn.regex="^(a|c)id=[0-9]+,ou=data,dc=crans,dc=org$$"
@ attrs=uid,entry,objectClass
@ by dn.regex="cn=intranet,dc=crans,dc=org" read
@ by * break
@
@# Pour dovecot
@access to dn.regex="^(a|c)id=[0-9]+,ou=data,dc=crans,dc=org$$"
@ attrs=uid,homeDirectory,uidNumber,gidNumber,userPassword,objectClass,entry
@ by dn.regex="cn=dovecot,dc=crans,dc=org" read
@ by * break
@
@# Informations accessibles à tous
@access to dn.regex="^(a|c)id=[0-9]+,ou=data,dc=crans,dc=org$$"
@ attrs=uid,homeDirectory,uidNumber,gidNumber,gecos,objectClass,entry
@ by anonymous read
@ by * break
@
@access to dn="ou=data,dc=crans,dc=org"
@ by anonymous search
@ by * break
@
@access to dn.subtree="ou=Group,dc=crans,dc=org"
@ by anonymous read
@ by * break
@
@# L'admin et la réplication peut tout lire
@# can read everything.
@access to *
@ by dn.regex="cn=admin,dc=crans,dc=org" write
@ by dn.regex="cn=replica,dc=crans,dc=org" write
@ by sockname.regex="ldapi" read
@ by dn.regex="cn=readonly,dc=crans,dc=org" read
@ by self read
@ by * none