Tengo una aplicación web que se ejecuta en node.js, respaldada por una base de datos MongoDB que almacena datos de usuarios, etc. Me gustaría ofrecer a mis usuarios una cuenta de correo electrónico, así que configuré un servidor de correo con Postfix , dovecot, etc ... Mi problema es que me gustaría vincular las dos bases de datos de usuarios. Actualmente tengo configurado Postfix y Dovecot para usar usuarios virtuales almacenados en una base de datos mysql (realmente MariaDB), y esto funciona bien (puedo acceder y enviar correos electrónicos a través de IMAP, etc.). Sin embargo, quiero que mis usuarios puedan usar la misma contraseña para IMAP que para iniciar sesión en la aplicación web. Estoy feliz de escribir una api de PHP para crear usuarios en el servidor de correo, etc., pero mi problema es cómo manejar las contraseñas. Como yo lo veo, hay dos opciones;
- Puedo transmitir las contraseñas de texto sin formato de mi servidor de aplicaciones web a mi servidor de correo cuando un usuario se registra o cambia la contraseña. Obviamente, esto se incluiría en el servidor de correo y se almacenaría en la base de datos mysql, y en el servidor de aplicaciones y se almacenaría en la base de datos MongoDB. Esto me parece mal de alguna manera: transmitir una contraseña de texto sin formato en dos saltos como ese.
- Puedo transmitir las contraseñas con hash del servidor de aplicaciones al servidor de correo y almacenarlas sin volver a marcar. Nuevamente, esto se siente bastante poco fiable, ya que, desde la perspectiva del servidor de correo, está aceptando contraseñas y almacenándolas en texto claro.
¿Existen otras opciones para permitir que mis usuarios inicien sesión en ambos servidores con las mismas credenciales? ¿Qué problemas de seguridad existen con las dos opciones que he pensado anteriormente?