Le but de ce TP est de mettre en place un serveur LDAP, OpenLDAP un serveur POP3/IMAP simple, dovecot, un serveur SMTP local, yocto, et surtout de fournir par l'intermédiaire d'un site Web écrit en python une interface de Webmail gérant les sessions et se connectant aux serveurs POP et SMTP en utilisant l'authentification LDAP. Les indications de bases nécessaires à lancer les divers serveurs vous sont fournies, ainsi que des liens vers la documentation idoine. Le reste est laissé à votre initiative.
OpenLDAP fournit une implémentation libre et complète du standard LDAP. La distribution OpenLDAP inclut le serveur LDAP slapd, le serveur de réplication slurpd, que nous n'utiliserons pas, et divers utilitaires pour interagir avec les serveurs en question. Voir la documentation complète du serveur slapd.
Pour fonctionner, le serveur slapd a besoin de l'existence (dans votre civet) des répertoires suivants:
var/run/ var/db/openldap
De plus, nous allons créer notre base de donnée LDAP en l'enracinant ici:dc=example,dc=com. Créons donc un répertoire pour stocker la base de donnée LDAP:
var/db/openldap/example-com
Enfin, créons dans etc/ le fichier slapd.conf de configuration du serveur slapd:
include /home/monnomamoi/outils/etc/schema/core.schema include /home/monnomamoi/outils/etc/schema/cosine.schema include /home/monnomamoi/outils/etc/schema/inetorgperson.schema include /home/monnomamoi/outils/etc/schema/nis.schema pidfile /home/monnomamoi/outils/var/run/slapd.pid password-hash {MD5} loglevel -1 moduleload /usr/lib/ldap/back_bdb.so database bdb suffix "dc=example, dc=com" rootdn "cn=jimbob, dc=example, dc=com" rootpw dirtysecret directory /home/monnomamoi/outils/var/db/openldap/example-com index uid eq index cn,gn,mail eq,sub index sn eq,sub index ou eq index default eq,sub index telephonenumber cachesize 10000 checkpoint 128 15
Dovecot est une implémentation libre des protocoles POP3 et IMAP servant à lire son mail à distance. Dovecot lit les mails stockés sur le disque dur dans un des formats standards Mbox ou Maildir et les sert par-dessus POP ou IMAP.
Yocto est un petit utilitaire qui implémente un serveur SMTP de base mais qui ne sait distribuer que les couriers destinés à des utilisateurs locaux.
Nous allons utiliser le serveur LDAP et les mots de passe qu'il peut stocker pour chaque posixAccount pour authentifier l'utilisateur qui veut se connecter à notre serveur POP. Pour pouvoir faire ce genre de traffic, le mot de passe doit être envoyé du client POP vers dovecot en clair. Pour assurer la sécurité, il nous faudrait donc utiliser une couche de communication sécurisée (POPS). Dans le cas que nous allons voir ensuite où le client POP est un serveur Apache, il faut que la communication entre l'utilisateur et le serveur Apache soit également sécurisée (HTTPS). Le but de ce TP n'étant pas de se concentrer sur les aspects de sécurité, nous ne nous occuperons pas d'utiliser des communications sécurisées et nous passerons les mot de passe en clair.
Pour fonctionner, le serveur dovecot a besoin de l'existence (dans votre civet) des répertoires suivants:
var/mail var/run/dovecot var/log
De plus, nous allons créer un répertoire alfred_lice pour stocker les mails de l'utilisateur alfred_lice: var/mail/alfred_lice et le fichier var/mail/alfred_lice/inbox avec le contenu minimal suivant:
From test@ici.la-bas Sat Nov 4 23:15:58 CET 2006 From: test@ici.la-bas To: lapinou@la-haut This is a stupid test mailbox
On pourra effectuer le même travail pour l'utilisateur bernard_ob.
Enfin, créons dans etc/ le fichier dovecot.conf de configuration du serveur dovecot:
mmap_disable=yes login_chroot = no base_dir = /home/monnomamoi/outils/var/run/dovecot login_user = monlogin auth_user = monlogin default_mail_env = mbox:/home/monnomamoi/outils/var/mail/%u ssl_disable = yes protocols = pop3 protocol pop3 { listen = 127.0.0.1:9110 } protocol lda { postmaster_address = postmaster hostname = localhost auth_socket_path = /home/monnomamoi/outils/var/run/dovecot/auth-master } pop3_uidl_format = %08Xu%08Xv log_path = /home/monnomamoi/outils/var/log/dovecot.log log_timestamp = "%b %d %H:%M:%S " auth_executable = /home/monnomamoi/outils/bin/dovecot-auth auth default { passdb ldap { args=/home/monnomamoi/outils/etc/dovecot-ldap.conf } userdb ldap { args=/home/monnomamoi/outils/etc/dovecot-ldap.conf } socket listen { master { path = /home/monnomamoi/outils/var/run/dovecot/auth-master } } }et le fichier dovecot-ldap.conf de liaison entre dovecot et notre serveur LDAP:
hosts=localhost:9119 ldap_version=3 deref= never scope= subtree auth_bind= yes auth_bind_userdn = uid=%u,ou=accounts,dc=example,dc=com base= uid=%u,ou=accounts,dc=example,dc=com user_filter = (&(objectClass=posixAccount)(uid=%u)) user_attrs = homeDirectory=home user_global_uid=11450 user_global_gid=102
SimpleTAL est une implémentation python d'un standard permettant de faire des templates de pages Web.