¿ Y si en vez de LDAP empleamos MySQL …

… como base de datos de usuarios ? ¿ Eh ? ¿ Y PAM ?

Le he estado dando vueltas al esquema que diseñé en esta entrada y me he dado cuenta de que puede tener un problema de percepción para el usuario. Concretamente aquél que hace referencia a sus datos básicos y cómo gestionarlos.

El esquema del que hablo emplea LDAP como base de datos de usuarios debido a quServiciose es muy sencilla de usar por programas de terceros (casi todos los que he visto incluyen soporte LDAP)  y a que puede incluir relaciones uno a muchos, como varias direcciones de correo electrónico para un usuario, en un mismo registro.

El problema de coherencia del que hablo es que el usuario se va a encontrar con dos grandes bloques de servicios separados entre sí: el correo y la nube, y en ninguno de los dos un punto de acceso claro a su perfil. ¿ Dónde cambia su contraseña ? ¿ Y su nombre completo ? La opción más cómoda parece ser el panel de control que incluye ownCloud pero no he encontrado un mecanismo sencillo para que programas externos como el servidor de correo (exim4) lo empleen para identificar a los usuarios (por las bravas se puede consultar y modificar su base de datos pero pensar en mantener algo así me estremece).

Esto es, no veo cómo puede el resto de los programas presentes y futuros emplear su base de datos de usuarios. Y pensando en ello me he dado cuenta de que ya existe un mecanismo casi universal que podría realizar esa función: PAM. PAM está en todas partes y es posible añadirle y quitarle todo tipo de mecanismos para realizar su tarea principal: identificar y autorizar accesos.

Ahora bien, ¿ es posible que owncloud emplee PAM para identificar usuarios y actualizar sus datos ? ¿ Y en qué me beneficia eso respecto a un esquema LDAP ? Debo recordar que no sólo es cuestión de validar una contraseña, también necesito consultar información de cada cuenta como direcciones (en plural) de correo electrónico, la ruta dentro del sistema donde construir los buzones, un identificador numérico de usuario, … en fin, es una lista incompleta y me gustaría no quedarme atrapado en su diseño.

Y eso me recuerda algo que estoy evitando pero a lo que debo enfrentarme. El otro gran servicio de Google respecto al correo electŕonico es el control del SPAM; algo que debo proporcionar yo también. Y tengo ideas al respecto y todas pasan más o menos por lo siguiente:

 

boceto de control de spamSí, al final necesito una base de datos SQL para gestionar el spam. ¿ Y si aprovecho e incluyo los perfiles de usuario y hago que el resto del sistema los use ?

Servicios-mysql

Resumiendo:

  • PAM puede usar una base de datos SQL para verificar credenciales y obtener información extra  de los usuarios.
  • Exim4 puede emplearse con PAM o una base de datos.
  • Dovecot lo mismo.
  • Roundcube tiene usuarios virtuales y puede verificar accesos vía MySQL.
  • owncloud dispone de la aplicación user_sql para lo mismo.

¿ Qué puede fallar ?