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/8
Reportez 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.