Lea primero la parte anterior
Este artículo es el sexto de la serie "Construir un servidor de correo en Linux".
En la parte anterior, completamos el diseño de la tabla de cuentas de usuario virtual utilizando PostgreSQL.
Si aún no lo ha revisado, le recomiendo que lo lea primero.
👉 Parte anterior: Concepto de usuario virtual de Dovecot y diseño de tabla de PostgreSQL
¿Qué es la configuración auth-sql.conf.ext
de Dovecot?
Para que Dovecot autentique usuarios virtuales a través de una base de datos y no de cuentas del sistema, es necesario configurar el archivo auth-sql.conf.ext
.
Esta configuración permite que Dovecot obtenga información del usuario desde PostgreSQL para su autenticación.
Configuración de autenticación SQL de Dovecot (auth-sql.conf.ext
)
Los principales elementos que deben configurarse para conectar Dovecot a PostgreSQL son los siguientes:
1. Ruta del archivo de configuración
El archivo de configuración se encuentra en la siguiente ruta.
/etc/dovecot/conf.d/auth-sql.conf.ext
Si no existe el archivo, se puede crear con el siguiente comando.
sudo touch /etc/dovecot/conf.d/auth-sql.conf.ext
2. Elementos de configuración clave
driver = sql
connect = host=localhost dbname=mail user=mailadmin password=yourpassword
default_pass_scheme = SHA256-CRYPT
password_query = SELECT email AS user, password FROM mail_users WHERE email='%u';
user_query = SELECT home_directory AS home FROM mail_users WHERE email='%u';
Descripción de la configuración
driver = sql
→ Uso de autenticación basada en SQLconnect = host=localhost dbname=mail user=mailadmin password=yourpassword
→ Información de conexión de PostgreSQLdefault_pass_scheme = SHA256-CRYPT
→ Especificación del algoritmo de hash de contraseñas por defecto. Si se usa bcrypt, configurar como 'BLF-CRYPT'password_query
→ Compara la contraseña ingresada por el usuario con el valor hash obtenido de la base de datosuser_query
→ Devuelve la ruta de almacenamiento del correo del usuario
3. Reinicio del servicio Dovecot
Después de aplicar la configuración, reinicie Dovecot.
sudo systemctl restart dovecot
Prueba de vinculación de Dovecot y PostgreSQL
Para verificar si la configuración se ha aplicado correctamente, use el siguiente comando.
1. Prueba de autenticación
doveadm auth test user@example.com password123
Si se ha configurado correctamente, la autenticación passdb
debería ser exitosa.
2. Verificar registros de errores
Si la configuración no se aplica correctamente, puede verificar los registros para analizar la causa.
journalctl -xe | grep dovecot
Tipos de hash de contraseñas (comparación y aplicación de MD5, SHA-256, BCRYPT)
Cuando Dovecot y PostgreSQL están vinculados, las contraseñas deben guardarse en formato hash.
La seguridad y el rendimiento varían según el método de hash utilizado.
1. Comparación de métodos de hash
Método de hash | Nivel de seguridad | Velocidad | Ejemplo de uso |
---|---|---|---|
MD5 | Vulnerable (posible colisión) | Desaconsejado | |
SHA-256 | Intermedio (razonablemente seguro) | Moderado | Para seguridad general |
BCRYPT | Seguridad fuerte | Lento | Requerimientos de alta seguridad |
Dado que se conocen las vulnerabilidades de MD5, es mejor no utilizarlo.
SHA-256 es generalmente ampliamente utilizado y ofrece un equilibrio entre velocidad y seguridad.
BCRYPT, aunque proporciona la mayor seguridad, es más lento y se debe considerar con opciones adecuadas en entornos donde el rendimiento es crucial.
Hashing de contraseñas utilizando comandos de Dovecot (doveadm pw
)
También se puede hacer hashing de contraseñas directamente en Dovecot.
1. Hashing SHA-256
doveadm pw -s SHA256-CRYPT
Al ingresar la contraseña, se generará un hash como el siguiente.
{SHA256-CRYPT}$5$rounds=5000$abc123def456$ABCDEF1234567890ABCDEF1234567890
2. Hashing BCRYPT
doveadm pw -s BLF-CRYPT
Ejemplo de salida:
{BLF-CRYPT}$2a$05$abcdefghij1234567890ABCDEFGHIJKL$CDEFGHIJKLMNOPQRSTUVWXYZ123456
Este valor hash debe guardarse en la tabla mail_users
de PostgreSQL.
Hashing directo en PostgreSQL (usando la extensión pgcrypto
)
Al usar la extensión pgcrypto
en PostgreSQL, se pueden hacer hashes de contraseñas sin necesidad de doveadm
.
1. Activar la extensión pgcrypto
CREATE EXTENSION IF NOT EXISTS pgcrypto;
2. Guardando contraseñas hashed con SHA-256
INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf')), '/var/mail/vmail/user@example.com');
3. Guardando contraseñas hashed con BCRYPT
INSERT INTO mail_users (domain_id, email, password, home_directory)
VALUES (1, 'user@example.com', crypt('mypassword', gen_salt('bf', 12)), '/var/mail/vmail/user@example.com');
Resumen y próximos pasos
Temas cubiertos en este artículo
- Cómo configurar auth-sql.conf.ext
de Dovecot
- Cómo probar la vinculación entre Dovecot y PostgreSQL
- Cómo aplicar los métodos de hashing SHA-256 y BCRYPT
- Cómo hacer hashing directamente en PostgreSQL
Anticipación de la próxima parte: Integración de autenticación SMTP entre Postfix y Dovecot
Ahora que hemos configurado Dovecot, el siguiente paso es configurar Postfix para que utilice la autenticación de Dovecot.
👉 Próxima parte: Integración de autenticación SMTP entre Postfix y Dovecot (¡Próximamente!)
Add a New Comment