82 1 124KB
Table des matières Introduction ........................................................................................................1 1. OpenLDAP .......................................................................................................2 a. Installation de LDAP ....................................................................................2 b. Configuration du service LDAP.....................................................................3 c. Création des domaines et des comptes.......................................................3 d. Création de la base à partir d'un fichier .LDIF..............................................4 e. Ajout de domaines complémentaire............................................................5 f. PhpLDAPadmin..............................................................................................6 2. Postfix .............................................................................................................7 a. installation de Postfix...................................................................................7 b. Configuration de Postfix...............................................................................7 TODO : –
Alias
–
Courier
Introduction 1
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. »
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 posséder réellement 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 répondre aux questions posées par le système :
●
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 néanmoins l'utiliser si vous faite appel à LDAP depuis des produits assez anciens limités à la V2. Pour démarrer, arrêter ou redémarrer 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 grâce au fichier : /etc/ldap/slapd.conf
Nous allons définir les chemins vers notre base de données 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 définir le mot de passe pour l'administrateur LDAP. Ce mot de passe sera affiché à l'écran de façon cryptée. Il n'y à plus qu'a faire un petit copier/coller de la sortie vers le fichier slapd.conf. Votre annuaire est désormais prêt. Il ne vous reste plus qu'à redémarrer le serveur slapd. Pour cela, tapez la commande suivante : # /etc/init.d/slapd restart
Si une erreur se produit, vérifiez 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. Création des domaines et des comptes Notre serveur dera être capable de gérer le courrier pour les domaines masaciete.com et tagada.com. Pour ajouter des données à l'annuaire, nous allons utiliser un fichier au format LDIF (LDAP Data Interchange Format).
page 3 / 10
exemple.ldif #Ici on défini 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 précise à postfix et à courier qu'il s'agit d'un domaine virtuel #car on voudrait tout de même pouvoir l'utiliser. virtualdomain: fr.masociete.com virtualdomainuser: fr.masociete.com/ #On créé un utilisateur Nicolas ayant pour mail [email protected] dn:cn=nicolas,dc=masociete,dc=com cn: nicolas gidNumber: 0 mail: [email protected] sn: Nicolas uidNumber: 0 #on précise 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 #Répertoire de base des boites mail. homeDirectory: /home/vmail/
d. Création de la base à partir d'un fichier .LDIF Une fois le fichier créé, utilisez la commande ldapadd pour insérer vos données : # ldapadd -x -f exemple.ldif -D "cn=admin,dc=masociete,dc=com" -w
Nous avons utiliser pour créer notre utilisateur la classe inetOrgPerson. Celle-ci permet aussi de nombreux attributs supplémentaires, pour plus d'informations, vous
pouvez
consulter
les
fichiers,
qui
définissent
le
schéma,
dans
/etc/ldap/schema/. Ici, nous nous sommes limités aux attributs de base permettant de faire fonctionner le mail.
page 4 / 10
e. Ajout de domaines complémentaire 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 réellement disposer de notre serveur multidomaines.
Pour cela nous allons créer un nouveau fichier .ldif avec les arguements nécessaires. # Nous créons 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/ # Création de notre utilisateur du domaine tagada.com # Vous pouvez reprendre le même modèle pour créer d'autres utilisateurs. dn:cn=nicolas,ou=tagada.com,dc=masociete,dc=com cn: nicolas gidNumber: 0 mail: [email protected] 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 créer la nouvelle 'ou' dans notre annuaire : # root@nico:/etc/ldap/ldif#ldapadd -x -f fichier.ldif -D "cn=admin,dc=mondomaine,dc=com" -w 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 intégré et prèt à ê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 préféré puis tapez : http://127.0.0.1/phpldapadmin
Il faut vous loguer sur l'interface. Cela se fait avec l'utilisateur administrateur définis 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 désormais un serveur SMTP fonctionnel sans avoir quoi que ce soit à modifier.
Avant d'aller plus loin, nous devons créer l'utilisateur, le groupe et le répertoire qui seront utilisés 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 présenté 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 répertoire /home/vmail stockera les boites mail des utilisateurs virtual_mailbox_base = /home/vmail #la directive suivante correspond à la liste des utilisateurs déclarés. 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 à créer les fichiers ldap-domains.cf, ldap-accounts.cf et ldapaliases.cf qui définissent les paramètres pour accéder à l'annuaire. Comme vous le constatez dans le fichier main.cf, ces fichiers seront créés dans le répertoire /etc/postfix/. Avec votre éditeur favori, créez 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 = 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 = 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 = version = 3
Note : Pour des raisons de sécurité, assurez-vous que les fichiers contenant le mot de passe de l'administrateur LDAP ont des droits suffisamment restrictifs. Pour vérifier 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 après chaque modification de sa configuration. Pour cela, utilisez la commande postfix : # postfix reload
Pour vérifier 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 [email protected] ldap:/etc/postfix/ldap-account.cf fr.masociete.com/nicolas/
Votre serveur est désormais configuré pour envoyer et recevoir les emails. Pour tester son bon fonctionnement, envoyez vous des emails. Le test est concluant si des fichiers se créent dans le répertoire /home/vmail/. Par exemple l'envoi d'un mail à [email protected] doit se concrétiser par la création d'un répertoire /home/vmail/masociete.com/nicolas. Contenant lui même un dossier new, cur, et tmp. L'envoi d'un mail à [email protected] va créer un répertoire distinct nommé tagada.com dans /home/vmail contenant également un compte nicolas avec les dossiers mail nécessaires.
voilà nos deux domaines distinct sont créés. Libre à vous de créer de nouveau fichiers .ldif en cas de besoin de rajouter des domaines.
page 10 / 10