Veuillez lire l'épisode précédent d'abord
Cet article est le sixième de la série "Construire un serveur mail sous Linux".
Dans l'épisode précédent, nous avons terminé la conception de la table des comptes utilisateurs virtuels utilisant PostgreSQL.
Si vous ne l'avez pas encore vérifié, je vous recommande de le lire d'abord.
👉 Épisode précédent : Concepts d'utilisateurs virtuels Dovecot et conception de table PostgreSQL
Qu'est-ce que la configuration auth-sql.conf.ext
de Dovecot ?
Pour que Dovecot authentifie les utilisateurs virtuels via une base de données et non des comptes système, il est nécessaire de configurer le fichier auth-sql.conf.ext
.
Cette configuration permet à Dovecot de récupérer les informations utilisateur depuis PostgreSQL pour l'authentification.
Configuration de l'authentification SQL de Dovecot (auth-sql.conf.ext
)
Voici les principaux éléments à configurer pour que Dovecot se connecte à PostgreSQL :
1. Chemin du fichier de configuration
Le fichier de configuration se trouve au chemin suivant.
/etc/dovecot/conf.d/auth-sql.conf.ext
Si le fichier n'existe pas, vous pouvez le créer avec la commande suivante.
sudo touch /etc/dovecot/conf.d/auth-sql.conf.ext
2. Éléments de configuration principaux
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';
Description de la configuration
driver = sql
→ Utilisation de l'authentification basée sur SQLconnect = host=localhost dbname=mail user=mailadmin password=yourpassword
→ Informations de connexion PostgreSQLdefault_pass_scheme = SHA256-CRYPT
→ Spécifie l'algorithme de hachage de mot de passe par défaut. S'il utilise bcrypt, définir sur 'BLF-CRYPT'password_query
→ Compare le mot de passe saisi par l'utilisateur avec la valeur hachée récupérée de la base de donnéesuser_query
→ Retourne le chemin de stockage mail de l'utilisateur
3. Redémarrage du service Dovecot
Après avoir appliqué les configurations, redémarrez Dovecot.
sudo systemctl restart dovecot
Test d'intégration entre Dovecot et PostgreSQL
Pour vérifier que la configuration a été appliquée correctement, utilisez la commande suivante.
1. Test d'authentification
doveadm auth test user@example.com password123
Si la configuration est correcte, l'authentification via passdb
doit réussir.
2. Vérification des logs d'erreur
Si la configuration n'est pas appliquée correctement, vous pouvez analyser les logs pour trouver la cause.
journalctl -xe | grep dovecot
Méthodes de hachage de mot de passe (comparaison et application de MD5, SHA-256, BCRYPT)
Lorsque Dovecot est intégré avec PostgreSQL, les mots de passe doivent être stockés sous forme hachée.
Les performances et la sécurité diffèrent selon la méthode de hachage.
1. Comparaison des méthodes de hachage
Méthode de hachage | Niveau de sécurité | Vitesse | Exemples d'utilisation |
---|---|---|---|
MD5 | Vulnérable (collision possible) | Rapide | Déconseillée |
SHA-256 | Moyenne (relativement sûre) | Normale | Utilisation générale pour les besoins de sécurité |
BCRYPT | Sécurité élevée | Lente | Lorsque des exigences de sécurité élevées sont nécessaires |
Il est préférable de ne pas utiliser MD5 en raison de ses vulnérabilités connues.
SHA-256 est largement utilisé et équilibre vitesse et sécurité.
BCRYPT offre la sécurité la plus forte mais est lent, donc il faut envisager des options adéquates dans des environnements où la performance est cruciale.
Hachage avec la commande Dovecot (doveadm pw
)
Il est également possible de hacher des mots de passe directement dans Dovecot.
1. Hachage SHA-256
doveadm pw -s SHA256-CRYPT
En entrant le mot de passe, un hachage comme suit sera généré.
{SHA256-CRYPT}$5$rounds=5000$abc123def456$ABCDEF1234567890ABCDEF1234567890
2. Hachage BCRYPT
doveadm pw -s BLF-CRYPT
Exemple de sortie :
{BLF-CRYPT}$2a$05$abcdefghij1234567890ABCDEFGHIJKL$CDEFGHIJKLMNOPQRSTUVWXYZ123456
Il suffit de stocker cette valeur hachée dans la table mail_users
de PostgreSQL.
Hachage direct dans PostgreSQL (pgcrypto
extension)
Avec l'extension pgcrypto
de PostgreSQL, vous pouvez hacher des mots de passe sans doveadm
.
1. Activation de l'extension pgcrypto
CREATE EXTENSION IF NOT EXISTS pgcrypto;
2. Hachage SHA-256 pour stocker le mot de passe
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. Hachage BCRYPT pour stocker le mot de passe
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');
Résumé et prochaines étapes
Ce qui a été couvert dans cet article
- Méthode de configuration de auth-sql.conf.ext
de Dovecot
- Comment tester l'intégration entre Dovecot et PostgreSQL
- Comment appliquer les méthodes de hachage SHA-256 et BCRYPT
- Comment hacher directement dans PostgreSQL
Aperçu du prochain article : Intégration de l'authentification SMTP de Postfix avec Dovecot
Maintenant que Dovecot est configuré, la prochaine étape est de configurer Postfix pour utiliser l'authentification de Dovecot.
👉 Prochain épisode : Intégration de l'authentification SMTP de Postfix avec Dovecot (Bientôt disponible !)
Add a New Comment