|
Julien Thomas - TELECOM Bretagne
|
![]()
|
|
Informations
Déploiement d'applications
Sécurité des applications
Sécurité SELinux
|
Déploiement de Courrier-IMAP : POP & IMAPPour l'obtention des services POP et IMAP, plusieurs applications sont disponibles. Notre choix s'est initialement porté sur l'une des applications les plus connues : Cyrus-IMAP. Cependant, nous avons abandoné ce choix pour des différentes raisons. Premièrement, Cyrus est très délicat à configurer et deuxiemement, lors de test d'interfacage avec le service webmail Horde, Cyrus ralentissait considérablement les performances de Horde (temps de connexion de plusieurs minutes, navigation lente). Nous avons donc opté pour un autre logiciel, Courier-IMAP. Celui-ci propose les services POP, POPS, IMAP et IMAPS et l'installation est la aussi très simple : il suffit d'emerge le packet courier-imap. De plus, Courier-IMAP offre d'autres fonctionnalités telles que l'interfacage avec un annuaire LDAP. La version installée sur la maquette est la version 4.0.6-r2. ObjectifsLes serveurs POP et IMAP permettent de consulter les répertoires de mails gérés par le serveur SMTP. Ils reposent eux aussi sur les serveurs LDAP, pour les différentes informations relatives aux comptes, et NFS, pour l'accès aux mails.Configuration des serveursLa configuration des serveurs IMAP, POP, IMAPS et POPS est identique avec Courrier-IMAP. Il suffit de lancer le bon service pour avoir la bonne fonctionnalité, mais le fichier à configurer est le même : /etc/courier/authlib/authldaprc. Nous avons alors complété ce fichier comme suit. Attention à la différence comparé au document de référence pour l'option LDAP_CLEARPW au lieu de LDAP_CRYPTPW. LDAP_URI ldap ://ldap.polux.org, ldaps ://ldap.polux.org LDAP_PROTOCOL_VERSION 3 LDAP_BASEDN ou=mails,ou=accounts,dc=polux,dc=org LDAP_BINDDN cn=Manager,dc=polux,dc=org LDAP_BINDPW tutu LDAP_TIMEOUT 15 LDAP_AUTHBIND 1 LDAP_MAIL uid LDAP_FILTER (accountStatus=active) LDAP_GLOB_UID vmail LDAP_GLOB_GID vmail LDAP_HOMEDIR mailMessageStore LDAP_MAILDIR mailMessageStore LDAP_FULLNAME cn LDAP_CLEARPW userPassword LDAP_DEREF never LDAP_TLS 0 Créer une boite aux lettresScript de création automatiquePour créer une boite au lettre, il suffit d'exécuter le script fournit sur le document disponible sur http ://www.vriesman.tk/ (Configuration de postfix et courier-imap avec ldap, Jeroen Vriesman), en étant loggué sur le compte qui va posséder la boite au lettre, ici le compte vmail. Il ne faudra pas oublier de modifier au début de ce script les informations nécessaires pour la connexions au serveur LDAP et de monter les disques réseau si nécessaire avant l'exécution du script. Ainsi le script va créer et initialiser les dossiers nécessaires au stockage de email aux endroits spécifiés par les comptes mails créés dans le serveur LDAP. Notre script est donc celui décrit cidessous. Il consiste à créer les répertoires des utilisateurs via la commande maildirmake. Comme indiqué sur la documentation officielle, cette commande permet de créer des répertoires de mails de plusieurs catégories : répertoires classiques, répertoires partagés, répertoires avec ACL. Dans le script, on peut donc distinguer deux cas.
#!/bin/sh
systempass="tutu" # the userPassword of dn: system-leave
systemleave="cn=Manager,dc=polux,dc=org" # e.g. ou=System,o=company
accountleave="ou=mails,ou=accounts,dc=polux,dc=org" # e.g. ou=Tokelau,o=company
ldappersonaldirs=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave" "(accountStatus=active)"\
mailMessageStore | grep "^[^#]" | grep mailMessageStore | awk '{ print $2 }'`
ldapshareddirs=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave" "(accountStatus=shared)"\
mailMessageStore | grep "^[^#]" | grep mailMessageStore | awk '{ print $2 }'`
# create personal mailfolders
for ldappersonaldir in $ldappersonaldirs
do
if [ ! -d $ldappersonaldir ]
then
mkdir -p `dirname $ldappersonaldir`
maildirmake $ldappersonaldir
fi
done
for ldapshareddir in $ldapshareddirs
do
ldapsharedmaildir=`dirname $ldapshareddir | sed 's/\/shared\//\/shared\.maildirs\//g'`
shared_dn=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave"\
"(mailMessageStore=$ldapshareddir)" uid | grep "^[^#]" | grep "^dn:" | sed 's/^dn: //g'`
shared_uid=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave"\
"(mailMessageStore=$ldapshareddir)" uid | grep "^[^#]" | grep "^uid:" | sed 's/^uid: //g'`
shared_boxes=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave" "(mailMessageStore=$ldapshareddir)"\
postOfficeBox | grep "^[^#]" | grep "^postOfficeBox:" | sed 's/^postOfficeBox: //g'`
shared_cn=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave"\
"(mailMessageStore=$ldapshareddir)" cn | grep "^[^#]" | grep "^cn:" | sed 's/^cn: //g'`
subscribed_dirs=`ldapsearch -x -w $systempass -D "$systemleave" -b "$accountleave" "(&(accountStatus=active)\
(seeAlso=$shared_dn))" mailMessageStore | grep "^[^#]" | grep mailMessageStore | awk '{ print $2 }'`
# create shared mailfolder
if [ ! -d $ldapsharedmaildir ]
then
maildirmake -S $ldapsharedmaildir
fi
# create shared subfolders
if [ ! -d $ldapsharedmaildir/.$shared_uid ]
then
maildirmake -s write -f $shared_uid $ldapsharedmaildir
fi
# create other shared subfolders
for box in $shared_boxes
do
if [ ! -d $ldapsharedmaildir/.$box ]
then
maildirmake -s write -f $box $ldapsharedmaildir
fi
done
# mailstorage directory
if [ ! -d $ldapshareddir ]
then
mkdir -p `dirname $ldapshareddir`
fi
# link mailstorage to incoming shared folder
dirlink=`echo $ldapshareddir | sed 's/\/$//g'`
if [ ! -L $dirlink ]
then
ln -s $ldapsharedmaildir/.$shared_uid $dirlink
fi
# subscribe those who have a 'seeAlso' to the dn of the shared account
for subscribed_dir in $subscribed_dirs
do
groupname=`echo $shared_cn | sed 's/ /_/g'`
subscribed=$groupname
if [ -e $subscribed_dir/shared-maildirs ]
then
subscribed=`cat $subscribed_dir/shared-maildirs | grep ^$groupname[[:space:]] | awk '{ print $1 }'`
fi
if [ ! $subscribed ]
then
maildirmake --add $groupname=$ldapsharedmaildir $subscribed_dir
fi
done
done
Droits d'accès aux répertoires utilisateursLes accès aux fichiers doivent être autorisés pour l'utilisateur vmail, comme indiqué dans le fichier main.cf de postfix. Il possède un uid à 5000 et un gid à 5000. Cet utilisateur peut être créé local (sur MV3). Toutefois, dans un soucis d'homogénisation, il est préférable de le créé sur le ldap, au niveau de la branche ou=all,ou=servers,ou=accounts,ROOT_DN. De ce fait, cet utilisateur est valide pour la machine MV3, mais il est également correctement définit pour la machine MV2 qui doit pouvoir accéder aux mail par l'interm édiaire du serveur IMAP.
«Design-by-assumption works as long as assumptions hold. Assumptions are
shortcuts to useful efficiencies, provided they are not violated. »
|