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.

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

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

1)
Pour l’instant : si l’utilisateurice existe dans l’annuaire alors elle peut envoyer et recevoir des mails, et son home directory (au sens mail) correspond à son uid.
  • technique/adminsys/mail/config/ldap/dovecot.txt
  • de qduchemi