Postfix+Cyrus+LDAP


Outils

Les outils utilisés sont:

LDAP OpenLDAP+pam_LDAP+nss_LDAP man slapd
http://www.OpenLDAP.org
http://www.padl.com
Répertoire principal: /etc/openldap
Fichier de configuration par machine: /etc/ldap.conf
Données /var/openldap
Mail (SMTP) Postfix man postfix
http://www.postfix.org
Répertoire de configuration: /etc/postfix
Mail (Pop/Imap) Cyrus Imap+Cyrus SASL http://asg.web.cmu.edu/cyrus
http://dudle.linuxroot.org/docs/postfix_cyrus/
Configuration: /etc/imapd.conf
Données: /var/spool/imap/user (Mailboxes) et /var/imap

Remarque: Il faut que Postfix, LDAP, Cyrus aient la meme version de libdb sinons, problemes garantis !



Arborescence LDAP



oxymium-mail.schema Config Postfix

Base DN

Le base DN est par exemple:

ou=myroot

dn: ou=myroot
objectClass: organizationalUnit
ou: myroot
                  

    Sociétés

    dn: ou=companies,ou=myroot
    objectClass: oxyTop
    objectClass: organizationalUnit
    ou: companies
                            

      Société UneSociete

      dn: o=UneSociete,ou=companies,ou=myroot
      objectClass: oxyTop
      objectClass: organization
      o: UneSociete
      o: UneSociete
      cn: UneSociete
      cn: UneSociete
      description: UneSociete
                                    

        Employés UneSociete

        dn: ou=people,o=UneSociete,ou=companies,ou=myroot
        objectClass: oxyTop
        objectClass: organizationalUnit
        ou: people
                                            

          Jean Dupont

          dn: cn=usc_jdupont,ou=people,o=UneSociete,ou=companies,ou=myroot
          objectClass: oxyTop
          objectClass: account
          objectClass: top
          objectClass: posixAccount
          objectClass: person
          objectClass: organizationalPerson
          objectClass: oxyInetOrgPerson
          objectClass: oxyMailRecipient
          objectClass: shadowAccount
          cn: usc_jdupont
          uid: usc_jdupont
          mail: usc_jdupont@UneSociete.com
          uidNumber: 10000
          gidNumber: 10000
          sn: Dupont
          givenName: Jean
          homeDirectory: /dev/null
          loginShell: /dev/null
          mailAddress: usc_jdupont@UneSociete.com
          mailAddress: root
          mailAddress: root@UneSociete.com
          mailAddress: postmaster@UneSociete.com
          mailRoutingAddress: usc_jdupont@mailav.UneSociete.com
          userPassword: {SSHA}xxxxxxx
          gecos: Jean Dupont
                                                    

        Groupes UneSociete

        dn: ou=groups,o=UneSociete,ou=companies,ou=myroot
        objectClass: oxyTop
        objectClass: organizationalUnit
        ou: groups
                                            

          Groupe des personnes ayant une boite aux lettres

          dn: cn=usc_mbx,ou=groups,o=UneSociete,ou=companies,ou=myroot
          objectClass: oxyTop
          objectClass: posixGroup
          objectClass: groupOfNames
          cn: usc_mbx
          uid: usc_mbx
          gidNumber: 10000
          memberUid: usc_mbx
          gecos: UneSociete
          member: cn=usc_jdupont,ou=people,o=UneSociete,ou=companies,ou=myroot
          member: cn=usc_default,ou=accounts,o=UneSociete,ou=companies,ou=myroot
                                                    

          Serveurs de Mail

          dn: cn=mail-servers,ou=groups,o=UneSociete,ou=companies,ou=myroot
          objectClass: oxyTop
          objectClass: groupOfNames
          cn: mail-servers
          member: cn=MonServeur,ou=hosts,o=UneSociete,ou=companies,ou=myroot
                                                    

        Comptes UneSociete

        dn: ou=accounts,o=UneSociete,ou=companies,ou=myroot
        objectClass: oxyTop
        objectClass: organizationalUnit
        ou: accounts
                                      

          Compte Pour les Courriers 'Perdus' (mal adressés)

          dn: cn=lostmail,ou=accounts,o=UneSociete,ou=companies,ou=myroot
          objectClass: oxyTop
          objectClass: account
          objectClass: top
          objectClass: posixAccount
          objectClass: oxyMailRecipient
          objectClass: shadowAccount
          cn: lostmail
          uid: lostmail
          uidNumber: 536
          gidNumber: 231
          homeDirectory: /dev/null
          loginShell: /dev/null
          mailAddress: @UneSociete.com
          mailAddress: lost@UneSociete.com
          gecos: lostmail
          mailRoutingAddress: lostmail@mailav.UneSociete.com
                                              

        Routage Mail (transport)

        dn: ou=mail-transport,o=UneSociete,ou=companies,ou=myroot
        objectClass: oxyTop
        objectClass: organizationalUnit
        ou: mail-transport
                                      

          Transport: tout ce qui est destiné à UneEntite.com est routé vers mail.UneEntite.com

          dn: cn=mt-UneEntite,ou=mail-transport,o=UneSociete,ou=companies,ou=myroot
          mailTransportFrom: MonServeur.UneSociete.com
          mailTransportTo: UneEntite.com
          mailTransportRelay: smtp:mail.UneEntite.com
          objectClass: oxyMailTransport
          cn: mt-UneEntite
                                              

        Serveurs

        dn: ou=hosts,o=UneSociete,ou=companies,ou=myroot
        objectClass: oxyTop
        objectClass: organizationalUnit
        ou: hosts
                                      

          Serveur MonServeur

          dn: cn=MonServeur,ou=hosts,o=UneSociete,ou=companies,ou=myroot
          objectClass: oxyTop
          objectClass: oxyServer
          objectClass: oxyMailServer
          ipAddress: 1.2.3.4
          service: mail
          description: MonServeur
          mailMyDestination: MonServeur.UneSociete.com
          mailMyDestination: UneSociete.com
          mailMyDestination: mail.UneSociete.com
          mailMyDestination: UneEntite.com
          cn: MonServeur
          userPassword: {SSHA}xxxxxxx
                                              

mailAddress est une adreese email a laquelle 'répond' une personne ou un compte (@UneSociete.com indique: tous les courriers adressés @UneSociete.com pour lequel l'adreese email n'est pas trouvée dans un enregistrement)

mailRoutingAddress est une adresse vers laquelle router l'email

mailMyDestination est un domain pour lequel le serveur gere le courrier en local ou en routing (liaison avec mailAddress et mailRoutingAddress)

mailTransportFrom est le host sur lequel on recoit un mail

mailTransportTo est qui doit etre atteind

mailTransportRelay est le host vers lequel le host "mailTransportTo" doit router les mails à destination de "mailTransportTo"

Les courriers arrivant de l'extérieur ou de l'intérieur sont reçu sur mail.UneSociete.com par postfix. Postfix utilise la base LDAP pour savoir comment gérer ces mails.
Si les mails concernent un utilisateur local, ils sont délivrés par Cyrus Deliver.

Les courriers peuvent etre récupérés par POP ou Imap (Daemon Cyrus Imap), de l'intérieur ou de l'extérieur. Les utilisateurs sont authentifiés par leur entrées dans la base LDAP (avec pam_ldap et OpenLDAP)

Les informations sur le routage des emails sont dans la base LDAP.

L'authentification est faite auprès de la base LDAP.



Gestion du Courrier



Les courriers arrivant de l'extérieur ou de l'intérieur sont reçu sur mail.UneSociete.com par postfix. Postfix utilise la base LDAP pour savoir comment gérer ces mails.
Si les mails concernent un utilisateur local, ils sont délivrés par Cyrus Deliver.

Les courriers peuvent etre récupérés par POP ou Imap (Daemon Cyrus Imap), de l'intérieur ou de l'extérieur. Les utilisateurs sont authentifiés par leur entrées dans la base LDAP (avec pam_ldap et OpenLDAP)

Les informations sur le routage des emails est dans la base LDAP.

L'authentification est faite auprès de la base LDAP.

La création d'un compte se fait avec les étapes suivantes:

L'ajout d'une adresses e-mail pour une personne se fait en ajoutant simplement un attribut mailaddress avec cette adresse.





Autres Fichiers de conf



/etc/imapd.conf :

configdirectory: /var/imap
partition-default: /var/spool/imap
admins: cyrus root
allowanonymouslogin: no
sasl_pwcheck_method: saslauthd
loginuseacl: yes
hashimapspool: false
timeout: 15
netscapeurl: http://www.MonDomaine.com
allowplaintext: yes
quotawarn: 80
sasl_auto_transition: yes 
sievedir: /var/imap/sieve
reject8bit: no


/etc/ldap.conf :

ldap.conf


/etc/ldap.secret :

Contient le mot de passe pour le serveur


/usr/lib/sasl/Cyrus.conf :

sasl_pwcheck_method: saslauthd


/etc/pam.d/pop :

#%PAM-1.0
auth       sufficient   /lib/security/pam_ldap.so
auth       required     /lib/security/pam_unix_auth.so try_first_pass
account    sufficient   /lib/security/pam_ldap.so
account    required     /lib/security/pam_unix_acct.so


/etc/pam.d/imap :

#%PAM-1.0
auth       sufficient   /lib/security/pam_ldap.so
auth       required     /lib/security/pam_unix_auth.so try_first_pass
account    sufficient   /lib/security/pam_ldap.so
account    required     /lib/security/pam_unix_acct.so


/etc/sysconfig/saslauthd :

# $Id: saslauthd.sysconfig,v 1.1 2001/05/02 10:55:48 wiget Exp $
# Authentications mechanism (for list see saslauthd -v)
SASL_AUTHMECH=pam

# Hostname for remote IMAP server (if rimap auth mech is used)
SASL_RIMAP_HOSTNAME=

# Honour time-of-day login restrictions (if shadow auth mech is used)
#SASL_TIME_OF_DAY_LOGIN_RESTRICTIONS=yes 


/etc/nsswitch.conf (fragment):

passwd:     files ldap nisplus nis
shadow:     files ldap nisplus nis
group:      files ldap nisplus nis




Documentation Postfix/Cyrus/LDAP v1.1 Copyright 2002 Oxymium
Vous avez le droit d'enrichir et de redistribuer cette documentation pourvu que la mention "Copyright 2002 Oxymium" reste présente. Si vous apportez des modifications, merci de me les envoyer (mguesdon@oxymium.net) pour que je les ajoute sur ce document