Introduction
Ce document va expliquer la configuration d’un serveur IMAPs en utilisant la suiteCourier et plus particlulièrement le daemon IMAP, le tout avec un stockage des comptes dans un annuaire LDAP. Les utilisateurs seront virtuels et n’auront donc pas de compte réel sur le serveur.
Cela s’applique aussi bien à une distribution Linux, testé sur Debian Sarge & Etch, que sur FreeBSD, testé en 6.2.
Dans ce document, les extraits de fichiers de configuration seront ceux de Debian.
Prérequis
Il faudra biensûr avoir un serveur LDAP fonctionnel. Pour cela, vous pouvez suivre le document suivant: Configuration SLAPD standard.
Je considère aussi que vous avez suivi le document sur la configuration de Postfix: Configuration de Postfix en backend LDAP. Cela est nécessaire car les informations que nous avons inséré pour Postfix dans l’annuaire LDAP serviront aussi pour Courier.
Sur Debian, il faudra installer les paquets: courier-imap-ssl. Alors que sur FreeBSD, nous devrons installer le port courier-imap avec au moins les options OPENSSL & AUTH_LDAP au moment de la configuration.
Comme cela était expliqué dans le document sur la configuration de Postfix, une partie de la suite Courier a déjà été installé pour avoir le schema LDAP.
La configuration de Courier
La configuration de la suite Courrier va se faire en plusieurs parties. Il y a aura d’abord tout ce qui est authentification, puis ce qui touche au daemon IMAP.
Le fichier authdaemonrc
Ce fichier va nous permettre de spécifier au daemon qui gère l’authentification quel module utiliser. Dans notre cas, nous utiliserons uniquement le LDAP.
Voici un extrait des paramètres importants du fichier de configuration:
[...] # La liste des modules que l'on souhaite utiliser pour les authentifications # LDAP uniquement dans notre cas authmodulelist="authldap" # Le nombre de daemon pour l'authentification # A augmenter selon le nombre d'utilisateur simultané daemons=10 # Le niveau de debug pour les authentifications # 1: debug normal # 2: debug avec les mots de passe en clair ! DEBUG_LOGIN=0 [...]
Le fichier authldaprc
Ce fichier va nous permettre de spécifier au daemon d’authentification comment accéder à notre annuaire LDAP.
Voici un extrait des paramètres importants du fichier de configuration:
[...] # L'URL d'accès à l'annauire LDAP LDAP_URI ldap://localhost # Le protocole à utiliser LDAP_PROTOCOL_VERSION 3 # La branche de l'annuaire qui contient les informations relatives au mail LDAP_BASEDN ou=mail,o=free-4ever,dc=net # Le login d'un compte qui a le droit de faire des modifications dans cette branche # Nécessaire car on peut changer le mot de passe par le protocole IMAP LDAP_BINDDN cn=mailadmin,ou=mail,o=free-4ever,dc=net # Le mot de passe associé au BINDDN en clair LDAP_BINDPW toto # Le daemon se reconnecte sur le LDAP avec le user/password de l'utilisateur # plutôt que de uniquement le vérifier en le parcourant avec le BINDDN LDAP_AUTHBIND 1 # L'attribut que l'on recherche LDAP_MAIL mail # Le filtre que l'on applique # On recherche des objets de type CourierMailAccount comme avec Postfix LDAP_FILTER (objectClass=CourierMailAccount) # On spécifie un UID et un GID global # C'est à lui qu'appartienne les boites mail de nos utilisateurs virtuels # C'est vmail comme avec Postfix LDAP_GLOB_UID vmail LDAP_GLOB_GID vmail # L'attribut LDAP que l'on doit chercher pour trouver le homedir de l'utilisateur LDAP_HOMEDIR mailbox # Le répertoire physique dans lequel se trouve les homedirs # C'est le homedir de notre utilisateur vmail LDAP_MAILROOT /srv/vmail # On ne spécifie pas le paramètre LDAP_MAILDIR # Le Maildir se trouve dans le homedir de l'utilisateur # Courier construit le chemin seul. # Le nom complet de l'utilisateur LDAP_FULLNAME cn # Le champ LDAP où se trouve le mot de passe crypté LDAP_CRYPTPW userPassword # Pas de TLS LDAP_TLS 0 [...]
Le fichier imapd
Ce fichier va permettre de spécifier la configuration du daemon IMAP de Courier. Il est nécessaire d’ajuster ses paramètres car IMAP SSL s’appuie aussi sur ce fichier.
Voici un extrait des paramètres importants du fichier de configuration:
[...] # L'adresse sur laquelle on écoute # Uniquement la loopback. je ne veux pas de connexion non sécurisé depuis l'extérieur # Par contre, cela me sert pour le webmail qui se trouve en local ADDRESS=127.0.0.1 # Le port d'écoute PORT=143 # Le nombre maximum de daemon MAXDAEMONS=50 # Le nombre maximal de connexions pour une seule adresse # Attention au accès depuis un réseau natté ! MAXPERIP=50 # Pour que les clients puissent demander les nouveaux messages dans tous les répertoires # et pas seulement dans la inbox # Nécessaire quand on a des filtres côté serveur IMAP_CHECK_ALL_FOLDERS=1 # Le nom du répertoire qui est la poubelle: IMAP_TRASHFOLDERNAME=Trash # Vidage automatique de la poubelle tous les 7 jours. # indépendamment du client mail IMAP_EMPTYTRASH=Trash:7 # Les messages supprimés vont dans la poubelle # et ne sont donc pas supprimés directement IMAP_MOVE_EXPUNGE_TO_TRASH=1 # Pour utiliser le daemon IMAP sans SSL IMAPDSTART=YES # Le nom du répertoire Maildir MAILDIRPATH=Maildir [...]
Le fichier imapd-ssl
Ce fichier va permettre de spécifier la configuration du daemon IMAP SSL de Courier.
Voici un extrait des paramètres importants du fichier de configuration:
[...] # L'adresse sur laquelle on écoute # On écoute sur toutes les interfaces SSLADDRESS=0 # Le port d'écoute SSLPORT=993 # Pour utiliser le daemon IMAP avec SSL IMAPDSSLSTART=YES # On utilise pas le TLS IMAP_TLS_REQUIRED=0 # Le protocole SSL que l'on utilise TLS_PROTOCOL=SSL3 # Le fichier contenant le certificat TLS_CERTFILE=/etc/courier/imapd.pem # On ne vérifie pas le certificat du client TLS_VERIFYPEER=NONE # Le nom du répertoire Maildir MAILDIRPATH=Maildir [...]
Le fichier imapd.pem doit contenir le certificat et la clef à la suite. Pour générer un certificat et sa clef signé par soi-même, vous pouvez suivre les documents suivants: Création de l’autorité de certification et Création d’un certificat avec le CA.
Application des modifications
Il ne reste plus qu’à redémarrer les différents daemons. On commence par le daemon pour les authentifications:
/etc/init.d/courier-authdaemon restart
Puis le daemon IMAP si on l’utilise:
/etc/init.d/courier-imap restart
Et enfin le daemon IMAP SSL:
/etc/init.d/courier-imap-ssl restart
Mot de la fin
Notre serveur IMAPs est maintenant configuré. Il n’y a aucune opération à faire quand on ajoute un nouvel utilisateur dans l’annuaire LDAP. Les informations que ajoute pour Postfix sont suffisantes dans le mesure où l’on crée de suite le champ userPassword qui lui n’est pas nécessaire pour Postfix.