Vous êtes sur la page 1sur 10

Table des matires

Introduction ........................................................................................................1 1. OpenLDAP .......................................................................................................2 a. Installation de LDAP ....................................................................................2 b. Configuration du service LDAP.....................................................................3 c. Cration des domaines et des comptes.......................................................3 d. Cration de la base partir d'un fichier .LDIF..............................................4 e. Ajout de domaines complmentaire............................................................5 f. PhpLDAPadmin..............................................................................................6 2. Postfix .............................................................................................................7 a. installation de Postfix...................................................................................7 b. Configuration de Postfix...............................................................................7 TODO :

Alias Courier

Introduction
Ce tutoriel est une reprise du tutoriel de Nicolas Bizeul disponible sur son site internet. Ce document t plac sous licence GNU FDL qui, je cite :
permet de copier et de redistribuer librement le document avec ou sans modifications, et que ce soit ou non dans un but commercial.
1

J'ai donc repris ce tuto et l'ai adapt mes besoins. Nous allons voir ici comment mettre en place un serveur de messagerie mtidomaines avec Postfix le tout utilisant un annuaire LDAP pour le stockage des comptes utilisateur ainsi que pour leur authentification. Nous partirons pour notre configuration d'un domaine factice appel masociete.com auquel nous ajouterons des utilisateurs pour tester le bon fonctionnement du serveur. Puis, nous verrons comment ajouter simplement d'autres domaines de messagerie dans LDAP afin de possder rellement un serveur multi-domaines. Ce tutoriel t suivi et fonctionne avec une distribution GNU/Linux Debian Lenny. Nous ne verrons pas la partie de configuration avec courier, nous nous contenterons de test en ligne de commande.
1http://www.bizeul.net/?2005/05/27/7-serveur-de-messagerie-multi-domaines-avec-postfix-openldap-et-courier&cos=1

page 1 / 10

1. OpenLDAP
a. Installation de LDAP
Pour installer OpenLDAP, utilisez la commande suivante:
# apt-get install slapd

Pour terminer l'installation, il suffit de rpondre aux questions poses par le systme : Dans le cadre de ce document, nous utiliserons pour l'annuaire le suffixe dc=masociete,dc=com

Il nous faut ensuite saisir un nom d'organisation; celui-ci ne servira pas. Mettez ce que vous voulez. Lorsque vous y tes invit, saisissez le mot de passe pour l'administrateur de l'annuaire. Confirmez le mot de passe.

Nous choisirons, pour terminer, de ne pas autoriser le protocole LDAPv2. Vous pouvez nanmoins l'utiliser si vous faite appel LDAP depuis des produits assez anciens limits la V2. Pour dmarrer, arrter ou redmarrer le serveur LDAP, utilisez la commande suivante :
# /etc/init.d/slapd start|stop|restart

Pour pouvoir manipuler l'annuaire et les fichiers LDIF dans la console, nous allons installer ldap-utils. Pour cela, utilisez la commande suivante :
# apt-get install ldap-utils

page 2 / 10

b. Configuration du service LDAP


La configuration de OpenLDAP se fait ensuite grce au fichier : /etc/ldap/slapd.conf

Nous allons dfinir les chemins vers notre base de donnes LDAP. Pour cela dans le fichier slapd.conf nous devons nous assurer d'avoir les informations suivantes. Rajoutez les ou modifiez les :
suffix rootdn rootpw "dc=masociete,dc=com" "cn=admin,dc=masociete,dc=com" {SSHA}rT+Kbd+3q6R3E5pSCi8cVMoFEEKLwafW

La valeur pour la variable rootpw s'obtient en tapant la commande :


# ldappasswd

Cela va vous demander de dfinir le mot de passe pour l'administrateur LDAP. Ce mot de passe sera affich l'cran de faon crypte. Il n'y plus qu'a faire un petit copier/coller de la sortie vers le fichier slapd.conf. Votre annuaire est dsormais prt. Il ne vous reste plus qu' redmarrer le serveur slapd. Pour cela, tapez la commande suivante :
# /etc/init.d/slapd restart

Si une erreur se produit, vrifiez bien la configuration du fichier slapd.conf et allez voir dans les fichiers de log s'il n'y a pas une information concernant la source de l'erreur.

c. Cration des domaines et des comptes


Notre serveur dera tre capable de grer le courrier pour les domaines masaciete.com et tagada.com. Pour ajouter des donnes l'annuaire, nous allons utiliser un fichier au format LDIF (LDAP Data Interchange Format).

page 3 / 10

exemple.ldif
#Ici on dfini en quelque sorte un conteneur pour nos domaines. Ce sera le domaine factice masociete.com. Ce domaine sera utilisable mais ce n'est pas celui-ci dont nous nous servirons au final dn:o=france,dc=masociete,dc=com o: france objectClass: top objectClass: organization #On prcise postfix et courier qu'il s'agit d'un domaine virtuel #car on voudrait tout de mme pouvoir l'utiliser. virtualdomain: fr.masociete.com virtualdomainuser: fr.masociete.com/ #On cr un utilisateur Nicolas ayant pour mail nicolas@masociete.com dn:cn=nicolas,dc=masociete,dc=com cn: nicolas gidNumber: 0 mail: nicolas@fr.masociete.com sn: Nicolas uidNumber: 0 #on prcise le chemin du rep de mail, au final il se trouvera dans #home/vmail/masociete.com/nicolas mailbox: fr.masociete.com/nicolas/ objectClass: top objectClass: inetOrgPerson #il s'agit d'un compte mail objectClass: CourierMailAccount #Mot de passe crypt userPassword: {CRYPT}g0RdfmDF654PCJcc #Rpertoire de base des boites mail. homeDirectory: /home/vmail/

d. Cration de la base partir d'un fichier .LDIF


Une fois le fichier cr, utilisez la commande ldapadd pour insrer vos donnes :
# ldapadd -x -f exemple.ldif -D "cn=admin,dc=masociete,dc=com" -w <pass_admin>

Nous avons utiliser pour crer notre utilisateur la classe inetOrgPerson. Celle-ci permet aussi de nombreux attributs supplmentaires, pour plus d'informations, vous pouvez consulter les fichiers, qui dfinissent le schma, dans /etc/ldap/schema/. Ici, nous nous sommes limits aux attributs de base permettant de faire fonctionner le mail.

page 4 / 10

e. Ajout de domaines complmentaire


Comme nous l'avons vu, le domaine masociete.com est une sorte de domaine factice qui nous sert de conteneur, ou, de base notre structure. Nous allons maintenant rentrer dans la partie interessante du sujet. Nous allons ajouter un nouveau domaine notre configuration, ainsi que des utilisateurs pour ce compte, afin de rellement disposer de notre serveur multidomaines.

Pour cela nous allons crer un nouveau fichier .ldif avec les arguements ncessaires.
# Nous crons ici une nouvelle 'ou' portant le nom du domaine souhait. # Puis, on remet les 'dc' du conteneur. En quelques sorte, tagada.com sera une # branche de l'arbre de base masociete.com dn:ou=tagada.com,dc=masociete,dc=com ou: tagada.com objectClass: top objectClass: organizationalUnit objectClass: CourierDomainAlias virtualdomain: tagada.com virtualdomainuser: tagada.com/ # Cration de notre utilisateur du domaine tagada.com # Vous pouvez reprendre le mme modle pour crer d'autres utilisateurs. dn:cn=nicolas,ou=tagada.com,dc=masociete,dc=com cn: nicolas gidNumber: 0 mail: nicolas@tagada.com sn: Nicolas uidNumber: 0 mailbox: tagada.com/nicolas/ objectClass: top objectClass: inetOrgPerson objectClass: CourierMailAccount userPassword: toto homeDirectory: /home/vmail/

page 5 / 10

Executons le script .ldif pour crer la nouvelle 'ou' dans notre annuaire :
# root@nico:/etc/ldap/ldif#ldapadd -x -f fichier.ldif -D "cn=admin,dc=mondomaine,dc=com" -w <votre_password> adding new entry "ou=tagada.com,dc=mondomaine,dc=com" adding new entry "cn=nicolas,ou=tagada.com,dc=mondomaine,dc=com"

Voil notre nouveau domaine est intgr et prt tre utilis.

f. PhpLDAPadmin
Si vous avez un serveur web configur sur votre serveur, je vous conseille d'utiliser phpldapadmin. Phpldapadmin est une interface d'administration en PHP qui vous permettra de manipuler facilement votre annuaire (ajout/suppression/modification/import/export/recherche/...). Pour l'installer, tapez la commande suivante :
# apt-get install phpldapadmin

Pour vous y connecter, ouvrer votre navigateur internet prfr puis tapez :
http://127.0.0.1/phpldapadmin

Il faut vous loguer sur l'interface. Cela se fait avec l'utilisateur administrateur dfinis dans le /etc/ldap/slapd.conf et ayant pour mot de passe celui cr avec la commande ldappasswd.

Une fois le serveur d'annuaire en place, nous allons pouvoir nous lancer dans l'installation et la configuration du serveur SMTP Postfix.

page 6 / 10

2. Postfix
a. installation de Postfix
L'installation de Postfix sous Debian GNU/Linux est d'une simplicit enfantine. Il suffit de taper la commande suivante :
# apt-get install postfix postfix-ldap postfix-pcr

Vous avez dsormais un serveur SMTP fonctionnel sans avoir quoi que ce soit modifier.

Avant d'aller plus loin, nous devons crer l'utilisateur, le groupe et le rpertoire qui seront utiliss par Postfix pour manipuler les messages.
#groupadd -g 5000 vmail # useradd -u 5000 -g 5000 -d /home/vmail -s /bin/false -m vmail

b. Configuration de Postfix
La configuration de Postfix se fera uniquement dans le fichier main.cf, situ dans /etc/postfix/. Avec l'diteur de votre choix, modifier le fichier main.cf comme prsent ci-dessous :

page 7 / 10

main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h # Veillez NE PAS mettre ici le domaine virtuel, mais notre domaine factice myhostname = debian.masociete.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = debian.masociete.com, localhost.masociete.com, localhost relayhost = mynetworks = 127.0.0.0/8 192.168.0.0/24 mailbox_command = home_mailbox = Maildir/ mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all luser_relay = #la directive suivante correspond la liste des domaines pris en charge. virtual_mailbox_domains = ldap:/etc/postfix/ldap-domains.cf # le rpertoire /home/vmail stockera les boites mail des utilisateurs virtual_mailbox_base = /home/vmail #la directive suivante correspond la liste des utilisateurs dclars. virtual_mailbox_maps = ldap:/etc/postfix/ldap-accounts.cf virtual_minimum_uid = 100 virtual_gid_maps = static:5000 virtual_uid_maps = static:5000 #la directive suivante correspond la liste des alias (redirections). virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf unknown_local_recipient_reject_code = 450

Il nous reste crer les fichiers ldap-domains.cf, ldap-accounts.cf et ldapaliases.cf qui dfinissent les paramtres pour accder l'annuaire. Comme vous le constatez dans le fichier main.cf, ces fichiers seront crs dans le rpertoire /etc/postfix/. Avec votre diteur favori, crez les fichiers suivants :

page 8 / 10

ldap-domains.cf server_host = localhost server_port = 389 search_base = dc=masociete, dc=com query_filter = (&(objectClass=CourierDomainAlias)(virtualdomain=%s)) result_attribute = virtualdomain bind = yes bind_dn = cn=admin, dc=masociete, dc=com bind_pw = <pass_admin> version = 3

ldap-accounts.cf server_host = localhost server_port = 389 search_base = dc=masociete, dc=com query_filter = (& (objectClass=CourierMailAccount)(mail=%s)) result_attribute = mailbox bind = yes bind_dn = cn=admin, dc=masociete, dc=com bind_pw = <pass_admin> version = 3

ldap-aliases.cf server_host = localhost search_base = dc=masociete, dc=com query_filter = (&(objectClass=CourierMailAlias) (mail=%s)) result_attribute = maildrop bind = yes bind_dn = cn=admin, dc=masociete, dc=com bind_pw = <pass_admin> version = 3

Note : Pour des raisons de scurit, assurez-vous que les fichiers contenant le mot de passe de l'administrateur LDAP ont des droits suffisamment restrictifs. Pour vrifier qu'il n'y a aucune erreur de syntaxe dans les fichiers de configuration de Postfix, utilisez la commande postfix :
# postfix check

Elle ne doit renvoyer aucun message.

page 9 / 10

De plus, n'oubliez pas de recharger Postfix aprs chaque modification de sa configuration. Pour cela, utilisez la commande postfix :
# postfix reload

Pour vrifier que Postfix communique bien avec le serveur OpenLDAP, utilisez l'utilitaire postmap. S'il vous retourne votre Maildir c'est gagn :o) Exemple :
# postmap -q nicolas@fr.masociete.com ldap:/etc/postfix/ldap-account.cf fr.masociete.com/nicolas/

Votre serveur est dsormais configur pour envoyer et recevoir les emails. Pour tester son bon fonctionnement, envoyez vous des emails. Le test est concluant si des fichiers se crent dans le rpertoire /home/vmail/. Par exemple l'envoi d'un mail nicolas@masociete.com doit se concrtiser par la cration d'un rpertoire /home/vmail/masociete.com/nicolas. Contenant lui mme un dossier new, cur, et tmp. L'envoi d'un mail nicolas@tagada.com va crer un rpertoire distinct nomm tagada.com dans /home/vmail contenant galement un compte nicolas avec les dossiers mail ncessaires.

voil nos deux domaines distinct sont crs. Libre vous de crer de nouveau fichiers .ldif en cas de besoin de rajouter des domaines.

page 10 / 10