# vim: set syntax=asyd: Cette documentation a pour but de d'aider a la mise en place d'un système de mail complet basé sur LDAP. - iPlanet Directory Server 5.2 (OpenLDAP est utilisable sans problème) - Postfix 2.1.4.5 - Debian Sarge / 2.4.27 - Courier 0.47 - OpenSSL 0.9.7e-2 Prérequis : - Des connaissances LDAP - Des connaissances SSL Objectif : - Système virtuel (les utilisateurs mails n'ont pas besoin de compte unix) - Accès POP3 - Accès IMAP avec possibilité d'utiliser des répertoires partagées - Accès authentifié SMTP (pour servir de relai) - Stockage au format maildir - Gestion centralisé des informations via un annuaire de type LDAP -------------- Configuration Postfix ------------------------------------------- Créer un utilisateur standard nommé mailuser (groupe mailuser). Il sera utilisé pour délivrer/stocker les messages. $ groupadd mailuser $ useradd -g mailuser mailuser (ici uid/gid 1000/1000) /etc/postfix/main.cf --8<-- smtpd_helo_required = yes smtpd_helo_restrictions = reject_unknown_hostname reject_non_fqdn_hostname reject_invalid_hostname smtpd_sender_restrictions = reject_unknown_sender_domain smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination # On définis le mapping LDAP pour les comptes. # La recherche s'effectue sur le champ mail (ex: bonfils@debian-fr.org) # La table retourne le champ uid, puis rajoute la partie /Maildir/ # Le / final indique un stockage sous la forme maildir accounts_server_host = ldap.domain accounts_search_base = ou=People,'suffix' accounts_query_filter = (mail=%s) accounts_result_attribute = uid accounts_result_filter = %s/Maildir/ accounts_bind = no # On utilise le MDA virtual intégré a postfix qui délivre au format maildir # On utilise un seul UID/GID pour l'ensemble des boites, d'ou l'utilisation # de la ligne static:1000 # Le répertoire final de distribution est calculé de la facon suivante : # /home/mailuser + resultat de la recherche ldap:accounts # Soit par exemple : /home/mailuser/bonfilbr/Maildir/ virtual_transport = virtual virtual_mailbox_base = /home/mailuser virtual_uid_maps = static:1000 virtual_gid_maps = static:1000 virtual_mailbox_maps = ldap:accounts virtual_mailbox_domains = debian-fr.org # Gestion des certificats smtpd_tls_key_file = /etc/ssl/postfix.key smtpd_tls_cert_file = /etc/ssl/postfix.pem smtpd_tls_CAfile = /etc/ssl/cacert.pem smtpd_use_tls = yes # On active l'authentification SMTP via SASL smtpd_sasl_auth_enable = yes --8<-- /etc/postfix/sasl/smtpd.conf --8<-- pwcheck_method: saslauthd --8<-- -------------- Configuration Courier ------------------------------------------- $ apt-get install courier-authdaemon courier-ldap courier-pop courier-imap /etc/courier/authdaemonrc --8<-- # On dit d'utiliser le module LDAP authmodulelist="authldap" authmodulelistorig="authcustom authcram authuserdb authldap authpgsql authmysql authpam" # Nombre de daemon daemons=5 version="" authdaemonvar=/var/run/courier/authdaemon --8<-- /etc/courier/authldaprc --8<-- LDAP_SERVER ldap.LDAP_PORT 389 LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN ou=People,<suffix> LDAP_BINDDN cn=postfix,ou=Security,<suffix> LDAP_BINDPW secret LDAP_TIMEOUT 5 LDAP_AUTHBIND 1 LDAP_MAIL mail # Ne pas utiliser le champ UID/GID de l'entrée LDAP_GLOB_UID mailuser LDAP_GLOB_GID mailuser # Utilise pour construire le chemin de distribution LDAP_HOMEDIR uid LDAP_MAILROOT /home/mailuser LDAP_DEFAULTDELIVERY defaultDelivery LDAP_FULLNAME cn LDAP_CLEARPW clearPassword LDAP_CRYPTPW userPassword LDAP_DEREF never LDAP_TLS 0 --8<-- -------------- Configuration SASL ---------------------------------------------- $ apt-get install libsasl2 sasl2-bin libsasl2-modules /etc/saslauthd.conf --8<-- ldap_servers: ldap://ldap.domain/ ldap_bind_dn: cn=sasl,ou=Security,'suffix' ldap_search_base: ou=People,'suffix' ldap_password: secret ldap_filter: mail=%u@%d --8<-- /etc/default/saslauthd --8<-- START=yes PARAMS="-m /var/spool/postfix/var/run/saslauthd" MECHANISMS="ldap" --8<-- Il faut également modifier le fichier /etc/init.d/saslauthd : --8<-- [..] PIDFILE=/var/spool/postfix/var/run/saslauthd/saslauthd.pid [..] --8<-- Quelques explications : Par défaut, le daemon saslauthd ouvre la socket Unix /var/run/saslauthd/mux. Cependant, comme le processus smtpd de postfix est chrooté dans le répertoire, il faut modifier le chemin de la socket ouvert par saslauthd. Cependant, le script d'init.d de saslauthd n'est prévu pour cela. C'est pourquoi il faut modifier la variable PIDFILE. -------------- LDAP ------------------------------------------------------------ Exemple d'une entrée utiliateur (au format LDIF) : --8<-- dn: cn=Bruno Bonfils,ou=infra,ou=people,<suffix> objectClass: top objectClass: posixAccount objectClass: shadowAccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: account uid: bonfilbr cn: Bruno Bonfils sn: Bonfils homeDirectory: /home/bonfilbr uidNumber: 10095 gidNumber: 10007 givenName: Bruno mail: asyd@debian-fr.org mail: asyd@asyd.net mail: asyd@zshwiki.org mail: bbonfils@debian-fr.org loginShell: /bin/bash userPassword: {CRYPT}wEz0jE0plDfzY --8<-- Comme vous pouvez le constater, la seule contraite est que l'uid soit unique pour toutes les entrées. Il ne doit cependant pas être difficile de modifier ce comportement (pour par exemple utilisée une OU par domaine mail à gérer).