Ce mini-howto décrit l'installation d'un serveur mail (postfix) sous FreeBSD avec un système d'authentification SMTP avec un backend ldap.
/***********/ /********/ /********/ /* Postfix */ -----> /* SASL */ -----> /* LDAP */ /***********/ /********/ /********/
SASL signifie Simple Authentication and Security Layer, c'est un protocole décrit par la rfc 2222.Il est utilisé pour permettre une authentification quelconque, de nombreux mécanismes étant disponibles. Son implémentation UNIX la plus courante est cyrus-sasl. Celle-ci est utilisée par de nombreux services UNIX comme sendmail, postfix, OpenLDAP et bien d'autres encore. Devant le peu de documentation existante à propos de Cyrus-SASL, j'essayerai d'être le plus complet possible.
/***********/ /*******/ - /* Postfix */ /* app */ | /***********/ /*******/ | | | | | | | Applications | smtpd.conf | app.conf | | | | | | | V V - /*******************************************************************/ /* SASL */ /*******************************************************************/ | | | | | - | pwcheck saslauthd | | | | | | | | | /******************/ | | V | | -> /* /etc/pam.conf */ | | /*************************/ | | /*****************/ | | /* ${prefix}/sasldb2?.db */ | | | | /*************************/ | | /***************/ | | | ----> /* /etc/shadow */ | | SASL Backends | /***************/ | | | | | | /**********/ | | | /* others */ <-------- | | /**********/ | | | V | /*************/ | /* saslauthd */ | /*************/ - | ------------------------------- - | | | | | | | | V V V | SASLauthd backends /********/ /************/ /**************/ | /* ldap */ /* kerberos */ /* pam/shadow */ | /********/ /************/ /**************/ | -
Lorsqu'une application utilise cyrus-sasl, il lui faut un fichier app.conf (où app correspondant au nom de l'application, par exemple Sendmail.conf pour Sendmail, smtpd.conf pour Postfix, etc...). Ce fichier est généralement situé dans le répertoire ${prefix}/lib/sasl2, par exemple /usr/local/lib/sasl2 sous FreeBSD.
Ce fichier informe du backend utilisé pour l'application, Il peut également contenir la liste des mécanismes d'authentification que l'application sera capable de traiter.
Comment compiler un Postfix avec l'authentification SMTP. J'utilise ici le backend saslauthd qui utilise lui même un serveur LDAP comme backend.
Une fois vos ports à jour, faites :
$ cd /usr/ports/mail/postfix-current $ make $ make installSélectionnez les options suivantes :
$ cd /usr/ports/security/cyrus-sasl2-saslauthd/ $ make $ make installCompilez l'outil de test de saslauthd :
$ cd /usr/ports/security/cyrus-sasl2-saslauthd/work/cyrus-sasl-2.1.17/saslauthd/ $ make testsaslauthd
J'utilise pour ma part une configuration très simple pour commencer :
queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix mail_owner = postfix default_privs = nobody myhostname = jazzland.debian-fr.org mydomain = debian-fr.org myorigin = debian-fr.org inet_interfaces = all mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost unknown_local_recipient_reject_code = 450 recipient_delimiter = + mail_spool_directory = /var/mail smtpd_banner = $myhostname ESMTP FreeBSD sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/local/bin/newaliases mailq_path = /usr/local/bin/mailq setgid_group = maildrop anpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = no smtpd_sasl_auth_enable = yes smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination smtpd_helo_required = yes mynetworks = 192.168.3.0/24 127.0.0.0/8Reportez vous à la documentation de Postfix si vous ne comprenez pas certaines directives.
Editez le fichier /usr/local/etc/saslauthd.conf, ici le serveur LDAP ne requiert pas d'authentification
ldap_servers: ldap://192.168.3.42/ ldap_search_base: ou=smtp,ou=mail,dc=debian-fr,dc=org ldap_timeout: 10 ldap_filter: cn=%u
Voici la structure format LDIF d'une entrée utilisateur (OpenLDAP version 2.0) :
dn: cn=asyd,ou=smtp,ou=mail,dc=debian-fr,dc=org objectClass: top objectClass: person sn: Bruno Bonfils cn: asyd userPassword: {MD5}password
Utilisez la commande testsaslauthd fournie avec le daemon pour tester votre configuration :
$ cd /usr/ports/security/cyrus-sasl2-saslauthd/work/cyrus-sasl-2.1.17/saslauthd/ $ ./testsaslauthd -u asyd -p mypass 0: OK "Success."
pwcheck_method: saslauthd mech_list: plain
# Démarrage de postfix (verifiez le /etc/mail/mailer.conf) sendmail_enable="YES" sendmail_flags="-bd" sendmail_outbound_enable="NO" sendmail_submit_enable="NO" sendmail_msp_queue_enable="NO" # Démarrage de saslauthd saslauthd_enable="YES" saslauthd_flags="-a ldap -c -t 30"Tout est normalement prêt pour un bon fonctionnement.