polux     Julien Thomas - TELECOM Bretagne frenchenglish

Déploiement de Postfix

Concernant les MTA (Mail Transport Agent), deux logiciels se distinguent : sendmail et postfix. Sendmail est le logiciel le plus répendu et historiquement le plus compliqué à configurer. Postfix quant à lui, plus jeune dispose d'autant de fonctionalités et a l'avantage d'être plus simple d'utilisation et d'avoir une documentation plus clair. Après un essai de Sendmail, c'est Postfix qui a été choisit

L'installation de Postfix est facile : Un simple USE="ldap pam ssl" emerge -av postfix suffit, ou simplement emerge -av postfix si les options ldap, pam et ssl sont définit dans la variable USE du fichier /etc/make.conf. La version installée est la 2.3.6. Le logiciel SSMTP étant installé par défaut et créant des conflits, il faut auparavant, désinstaller ce logiciel avec la commande emerge -avC ssmtp.

Objectifs

Le serveur SMTP a pour but de récuperer et d'envoyer les emails à partir de la plateforme. Il se repose sur le serveur LDAP pour les différentes informations et sur le serveur NFS (dossier partagé) pour permettre l'accès aux serveurs IMAP et POP.

Configuration de /etc/postfix/main.cf

La configuration se résume à indiquer à Postfix comment se connecter au serveur LDAP et ou aller chercher ses informations. Dans la première partie du rajout, on spécifie qu'on veut utiliser une gestion des comptes virtuelles. Ainsi il ne sera pas nécessaire de créer un compte sur le machine pour chaque boite mail créée. La figure suivante montre le rajout fait au fichier de conguration initial, sans aucune autre modification.

local_transport = virtual
virtual_mailbox_base = /
virtual_mailbox_maps = ldap :ldapvirtual
virtual_uid_maps = static :5000
virtual_gid_maps = static :5000
virtual_minimum_uid = 500
virtual_mailbox_limit = 0
ldapvirtual_server_host = URL_LDAP
ldapvirtual_server_port = 389
ldapvirtual_bind = no
ldapvirtual_bind_dn = cn=Manager,ROOT_DN
ldapvirtual_bind_pw = tutu
ldapvirtual_search_base = ou=mails,ou=accounts,ROOT_DN
#ldapvirtual_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s)) \ (|(AccountStatus=active)(accountStatus=shared)))
ldapvirtual_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s)) \ (accountStatus=active))
ldapvirtual_result_attribute = mailMessageStore
mydestination = $myhostname, localhost.$mydomain, localhost.localdomain, $mydomain
#mydestination = $myhostname, localhost.$mydomain, localhost.localdomain,
ldap :acceptdomains
#acceptdomains_server_host = URL_LDAP
#acceptdomains_server_port = 389
#acceptdomains_bind = yes
#acceptdomains_bind_dn = cn=Manager,ROOT_DN
#acceptdomains_bind_pw = tutu
#acceptdomains_search_base = ou=postfix,ou=services,ROOT_DN
#acceptdomains_query_filter = (associatedDomain=*)
#acceptdomains_result_attribute = associatedDomain
virtual_maps = ldap :ldapalias
ldapalias_server_host = URL_LDAP
ldapalias_server_port = 389
ldapalias_bind = no
ldapalias_bind_dn = cn=Manager,ROOT_DN
ldapalias_bind_pw = tutu
ldapalias_search_base = ou=mails,ou=accounts,ROOT_DN
#ldapalias_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s)) \ (|(AccountStatus=active)(AccountStatatus=shared)))
ldapalias_query_filter = (&(|(mail=%s)(mailAlternateAddress=%s)) \ (accountStatus=active))
ldapalias_result_attribute = mail

On voit en commentaire les différences de configuration avec le document précité. La configuration de l'acceptation des domaines dans le LDAP ne peut pas être effectuée à cause d'une erreur dans les combinaisons de schémas utilisées. Toutefois, cela pourra être configuré dans lors de la configuration de la sécurité.

On remarque ici que la connexion au serveur LDAP se fait sur le port 389 et non 636, car la restriction aux connexion via LDAPS n'a pas encore été faite. Les modifications des informations sur le serveur smtp doivent étre également suivies des commandes suivantes, afin de prendre en compte les informations telles que les alias des utilisateurs (par défaut, le serveur cherche le fichier de données /etc/mail/aliases.db, lequel n'existe pas et donc arrête silencieusement le serveur smtp) :

newaliases 
postmap virtual

Configuration de LDAP

Etant donné que l'acceptence de domaines n'est pas configuré dans LDAP pour cause de bug, il n'y est renseigné que les comptes mails sur le domaine polux.org dans la branche ou=mails,ou=accounts,ROOT_DN. Pour associer un compte mail à chaque utilisateur, il faut disposer du schéma qmail.schema à mettre dans /etc/openldap/schema, trouvable facilement sur Internet. Attention il semble qu'il existe plusieurs version sur Internet, il faut s'assurer que qmailUID et qmailGID ont "EQUALITY numericStringMatch", mailMessageStore a "EQUALITY caseExactIA5Match", et tous les autres EQUALITY's dans qmail.schema sont "caseIgnoreIA5Match".



«Design-by-assumption works as long as assumptions hold. Assumptions are shortcuts to useful efficiencies, provided they are not violated. »
David S. Isenberg

«If the kernel is not evaluated to an MLS-capable protection profile, MLS features cannot be trusted regardless of how impressive the demonstration looks.»
J. Davidson