Récupérer des mails reçus sur une adresse Picasoft
Note:
Cette page concerne le MDA, à savoir l’étape de récupération des mails reçus sur une adresse Picasoft.
Avant toute configuration, c’est l’installation du paquet Debian dovecot-ldap
qui fournit les principaux fichiers de configuration.
Définition de la méthode d'authentification
Dovecot permet l’utilisation de différents moyens d’authentification pour accéder aux boîtes mails. Dans le cadre de Picasoft, Dovecot doit interroger un LDAP. La première configuration se fait dans le fichier /etc/dovecot/conf.d/10-auth.conf
:
#!include auth-deny.conf.ext #!include auth-master.conf.ext #!include auth-system.conf.ext #!include auth-sql.conf.ext !include auth-ldap.conf.ext #!include auth-passwdfile.conf.ext #!include auth-checkpassword.conf.ext #!include auth-vpopmail.conf.ext #!include auth-static.conf.ext
Configuration de l'interrogation du LDAP
Le fichier de configuration se trouve sous /etc/dovecot/dovecot-ldap.conf.ext
. Une configuration minimale est celle-ci :
hosts = ldap.test.picasoft.net // adresse du LDAP dn = cn=mystere,dc=picasoft,dc=net // cn du NSS (pour accéder et lire les infos du LDAP) dnpass = mysterepwd // mot de passe du NSS auth_bind = yes // on réaliser des binds LDAP base = dc=picasoft,dc=net // base à partir de laquelle effectuer la recherche scope = subtree // la recherche s'effectue dans toute l'arborescence sous-jacente user_attrs = // l'implémentation spécifique à Picasoft ne nécessite de récupérer aucun attribut user_filter = (uid=%n) // la correspondance s'effectue sur l'UID (côté LDAP) pass_attrs = uid=user,userPassword=password pass_filter = (uid=%n)
Si LDAPS est utilisé, on veillera à ce :
- Le certificat soit signé par une autorité de certification installée sur le système (pour Let’s Encrypt, installer
ca-certificates
suffit) - Ou que
ldap_tls_cacert_file
point vers le certificat du serveur LDAP.
Ceci parce que saslauthd
, le démon qui se charge de l’authentification, impose que le certificat soit vérifié.
Cependant, et spécifiquement à l’implémentation chez Picasoft, nous optimisons le nombre de requêtes LDAP. En effet, puisque nous n’avons pas d’information à récupérer des comptes LDAP1), les deux recherches classiques de Dovecot pour le mot de passe puis pour les données des utilisateurices ne sont pas nécessaires. On peut alors les fusionner en une seule : on ne cherche qu’à vérifier que l’utilisateurice existe et que les mots de passe coïncident. Pour cela, il faut éditer le fichier /etc/dovecot/conf.d/auth-ldap.conf.ext
:
passdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext } # "prefetch" user database means that the passdb already provided the # needed information and there's no need to do a separate userdb lookup. # <doc/wiki/UserDatabase.Prefetch.txt> userdb { driver = prefetch } userdb { // définition spécifique pour la requête LMTP driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext }
ainsi que le fichier /etc/dovecot/dovecot-ldap.conf.ext
:
pass_attrs = uid=user,userPassword=password,uid=userdb_user // on récupère l'uid car sinon il y a une erreur (Dovecot veut récupérer un champ utilisateur) mais en soi il ne nous sert à rien. pass_filter = (uid=%n) // la correspondance des mots de passe se fait avec l'utilisateurice correspondant au login entré user_attrs = // définition spécifique pour la requête LMTP
uid
.