Calculin
Contenido
Intro
Dado que el primer approach (usar web-cyradm) no funcionó porque...:
- el web-cyradm está medio muerto como proyecto,
- no pude hacer andar el cifrado MD5 con el pam_mysql (sí, compilé el libpam_mysql con MD5 y armé el paquete)
- postfix daba problemas todo el tiempo con las cosas más irrisorias como que no encuentra "localhost"
hice un cambio radical de estrategia y me puse a configurar el sistema con Postfix, Cyrus y backend LDAP.
Buscando en Google encontré esta página de la cual me basé para armar todo el tema.
Instalación de cada parte
Paquetes instalados vía apt-get
- apt-get install slapd ldap-utils
- apt-get install postfix cyrus-pop3d-2.2 cyrus-imapd-2.2
Configuración
Certificado X.509 para cifrado TLS/SSL
Para armar el certificado que se usa en todos lados (IMAPs, ldap, web?) lo hice con el siguiente comando:
# mkdir myCA
# chmod 0700 myCA
# cd myCA
# mkdir {crl,newcerts,private}
# touch index.txt
# echo "01" > serial
# cp /etc/ssl/openssl.cnf .
# openssl req -nodes -config ./openssl.cnf -days 999 -x509 -newkey rsa:2048 -out cacert.pem -outform PEM
# openssl genrsa -rand /dev/urandom -out calculin.cafelug.org.ar.key
# openssl req -new -nodes -key calculin.cafelug.org.ar.key -out calculin.cafelug.org.ar.csr
# cp privkey.pem private/cakey.pem
# openssl ca -config ./openssl.cnf -in calculin.cafelug.org.ar.csr -out calculin.cafelug.org.ar.cert -days 9999
Nota: Lo importante es que al poner el valor de "Common Name:" puse "*.cafelug.org.ar" (así no rompe las p[e]lotas el browser diciendo que el certificado es malo)
LDAP
En el documento referido antes habla de meter schemas llamados sendmail.schema
, samba.schema
, y mozillaOrgPerson_V0.6.schema
, al schema de samba ni lo metí porque no tiene sentido. Si bien los encontré por inet tiraban errores. Sí metí los greenmta.schema
y lookup.schema
porque vi que los iba a usar luego.
Estos últimos dos schemas no dieron errores por lo que los integré al resto.
Tener los schemas obviamente es el inicio del tema porque hay que insertar los registros todavía. Siguiendo los archivos de configuración del documento para las búsquedas LDAP que realizará el postfix encontré que necesitaba unos cuantos usuarios y ous por acá y allá, estos son:
- cn=postfix,ou=system,ou=accounts,dc=cafelug,dc=org,dc=ar (para hacer las consultas)
- búsqueda de virtual_alias_maps:
- ou=users,ou=accounts,dc=cafelug,dc=org,dc=ar (buscando el atributo mail usando como filtro: (&(mailAlternateAddress=%s)(accountStatus=aktiv)))
- lookupName=virtualusers,cn=postfix,cn=mailstore,ou=server,ou=edv,dc=cafelug,dc=org,dc=ar (como base de búsqueda del atributo lookupValue, filtro: lookupKey —que no sé para qué lo usa todavía—, esta definido en el archivo mailforwards.cf y también en el virtual_alias_maps.cf)
- ou=users,ou=accounts,dc=cafelug,dc=org,dc=ar (buscando el atributo mail usando como filtro: (&(uid=%u)(accountStatus=aktiv)), dentro del archivo de local_recipient_maps.cf)
De esto se desprende que el esquema LDAP está pensado para que un usuario pueda tener aliases en mailAlternateAddress, lo que nos viene bien para casillas con @usla.org.ar, @linux.org.ar. También se pueden activar los usuarios en base al valor de accountStatus, para que esté activa la casilla deberá tener el valor aktiv —que por supuesto, se puede cambiar a algo como activo ya que obviamente estos chicos no son argentinos ;-)—
Sí cambié uno de los ou ya que en el documento usa como base de búsqueda lookupName=virtualusers,cn=postfix,cn=mailstore,ou=server,ou=edv,dc=cafelug,dc=org,dc=ar y no sé para qué pusieron la ou=edv, así que cambié los archivos de búsqueda de postfix eliminando esta ou.
Todas estas cosas las fui agregando con phpldapadmin ya que —por lo menos para mi— es indispensable (no sé tanto de ldap como para ir agregando las cosas vía ldapadd
)