Otra entrada que es un apunte.
Recientemente he tenido que volver a instalar otro zarafa y necesitaba añadir el esquema en el openLdap.
Tras intentar importar el schema con zcat:
zcat /usr/share/doc/zarafa/zarafa.ldif.gz | ldapadd -H ldapi:/// -Y EXTERNAL
Y ver los múltiples errores con las comillas, atributos y demás gaitas, googleando he visto este post:
https://www.linuxquestions.org/questions/linux-server-73/how-to-add-a-new-schema-to-openldap-2-4-11-a-700452/
Resumiendo……. para poder importar el schema de manera correcta, los pasos:
1º) Generamos el fichero schema_convert.conf con el siguiente contenido:
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/pmi.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/zarafa.schema
2º) Creamos el directorio temporal
# mkdir /tmp/ldif_output
3º) Generamos los ldif
# slaptest -f schema_convert.conf -F /tmp/ldif_output
4º) Nos vamos al directorio donde hemos generado los ficheros
cd tmp/ldif_output/cn=config/cn=schema
Y creamos el fichero fixit.sed con el siguiente contenido:
s~dn: cn=\{([0-9]+)\}(.*)$~dn: cn=\2,cn=schema,cn=config~g
s~cn: \{([0-9]+)\}(.*)$~cn: \2~g
s~^(structuralObjectClass|entryUUID|creatorsName|createTimestamp|entryCSN|modifiersName|modifyTimestamp):.*$~~g
5º) Una vez creado el fichero, creamos el directorio fixed y ejecutamos el siguiente script:
for f in *ldif; do sed -rf fixit.sed "$f" > fixed/$f; done
Llegados aquí, en el directorio fixed, tendremos los directorios:
root@radius:/tmp/ldif_output/cn=config/cn=schema/fixed# ls -l
total 96
-rw-r--r-- 1 root root 15267 Aug 24 10:39 cn={0}core.ldif
-rw-r--r-- 1 root root 1091 Aug 24 10:39 cn={10}openldap.ldif
-rw-r--r-- 1 root root 6212 Aug 24 10:39 cn={11}pmi.ldif
-rw-r--r-- 1 root root 3073 Aug 24 10:39 cn={12}ppolicy.ldif
-rw-r--r-- 1 root root 11121 Aug 24 10:39 cn={13}zarafa.ldif
-rw-r--r-- 1 root root 1289 Aug 24 10:39 cn={1}collective.ldif
-rw-r--r-- 1 root root 1051 Aug 24 10:39 cn={2}corba.ldif
-rw-r--r-- 1 root root 11129 Aug 24 10:39 cn={3}cosine.ldif
-rw-r--r-- 1 root root 4253 Aug 24 10:39 cn={4}duaconf.ldif
-rw-r--r-- 1 root root 1461 Aug 24 10:39 cn={5}dyngroup.ldif
-rw-r--r-- 1 root root 2623 Aug 24 10:39 cn={6}inetorgperson.ldif
-rw-r--r-- 1 root root 2357 Aug 24 10:39 cn={7}java.ldif
-rw-r--r-- 1 root root 1280 Aug 24 10:39 cn={8}misc.ldif
-rw-r--r-- 1 root root 6259 Aug 24 10:39 cn={9}nis.ldif
6º) Importamos el ldif de zarafa:
# ldapadd -Y EXTERNAL -H ldapi:/// -f cn\=\{13\}zarafa.ldif
Esto se puede aplicar, como me ha pasado a mi, con el schema de freeradius o otros schemas.
enjoy 🙂