Serveur de Mail avec OpenLDAP

Dernière mise à jour : 09/09/2009

    Nous allons couvrir dans cet article comment paramétrer un serveur de mail pour s'authentifier à un serveur OpenLDAP (utilisateurs virtuels) et pouvoir envoyer/recevoir des emails de façon transparente avec authentification SMTP/TLS. Ce tutoriel a été effectué sur une Debian. Je vous conseille d'avoir un serveur OpenLDAP bien configuré. Afin de simplifier les commandes, on considère que le serveur LDAP est local. Dans cet exemple, la base LDAP est frlinux.net (dc=frlinux,dc=net).

    Attention : Avant de continuer, je tiens à préciser que cette page me sert plus de pense-bête que de tutoriel facile à suivre. Donc il se peut que j'ai oublié des choses, mais la configuration d'un serveur LDAP avec cette méthode n'est pas aisée, donc je ne peux pas vraiment vous aider si quelque chose ne fonctionne pas chez vous (et cela essentiellement du à tous les paquets à installer pour que cela fonctionne).

    Installez les paquets suivants : apt-get install postfix postfix-ldap postgrey slapd amavisd-new courier-maildrop libnet-ldap-perl courier-authdaemon courier-authlib-ldap ldap-utils. Il faut commencer par ajouter les bons schémas dans OpenLDAP, éditez donc /etc/ldap/slapd.conf pour ajouter les lignes suivantes :

    Il se peux qu'il vous manque le fichier /etc/ldap/schema/courier.schema. Voici donc une copie du miens :

    Pensez également à modifier /etc/courier/authdaemonrc pour contenir authldap dans la ligne authmodulelist.

    Il vous faut ensuite rentrer les bonnes informations dans l'annuaire OpenLDAP, nous commençons donc par les acl et le tout qui va bien. Je me sers d'ACLs pour protéger le serveur et éviter les envois/réceptions mails de personnes non déclarées.

    Ajoutez ensuite un compte comme ceci (attention, il vous faut remplacer le mot de passe en xxxxxxx par des hashes valides en MD5) :

    Changez ensuite le mot de passe comme ceci : ldappasswd -S -x -D "cn=Administrator,dc=frlinux,dc=net" -W "uid=frlinux,ou=People,dc=frlinux,dc=net". Notez qu'il faut remplacer Administrator par le bon compte servant à gérer votre OpenLDAP. Il y a encore quelques informations à entrer pour faire quelque chose de bien propre :

    Pour gérer les emails et la livraison, j'utilise un petit outil exotique du nom de gnarwl. Il vous permettra de permettre à vos utilisateurs de mettre une réponse automatique si nécessaire. Il vous faut pour cela ajouter les informations suivantes dans OpenLDAP :

    J'ai du patcher gnarwl afin de gérer le dereferencing sous OpenLDAP. Voici le patch à appliquer (sauvez le sous le nom gnarwl.patch):

    Editez votre /etc/apt/sources.list pour ajouter ceci (ce n'est pas par erreur qu'on prends gnarwl depuis unstable, il n'existe plus dans lenny) :

    Il faut ensuite patcher et compiler :

   

    Voici le fichier de configuration de /etc/gnarwl.cfg

    Passons maintenant à la partie amusante : postfix. Il y a beaucoup de configuration à faire. Commençons donc par main.cf (je ne liste ici que ce qui est à ajouter, notez aussi que les uid et gid dépendent de votre installation) :

    Comme vous avez pu le constater, nous avons ajoutés 4 fichiers : virtualmaps, accounts et virtualdomains. Pensez également à faire un postmap /etc/postfix/mailscripts :

    Modifier ensuite /etc/postifx/master.cf et ajouter les lignes suivantes :

    Il faut ensuite modifier amavis et particulier /etc/amavis/conf.d/50-user :

    Nous passons à présent à la configuration de courier. Editez /etc/courier/authdaemonrc et changez la ligne authmodulelist= pour ne contenir que ceci :

    Editez ensuite /etc/courier/authldaprc pour contenir ceci :

    Installez courier-imap-ssl : apt-get install courier-imap-ssl et editez /etc/courier/imapd.cnf pour qu'il corresponde à vos critères. Puis redémarrez le serveur imap : dpkg-reconfigure courier-imap-ssl. Pour réussir à faire marcher l'authentification, j'ai du changer le mot de passe à la main grâce à cette commande : ldappasswd -S -x -D "cn=Administrator,dc=frlinux,dc=net" -W "uid=frlinux,ou=People,dc=frlinux,dc=net". Pensez a donner la bonne permission au démon authdaemon
    Voilà ceci conclu l'installation d'un serveur de mail géré par LDAP. Sous peu je rajouterais comment ajouter un domaine virtuel avec des alias.