Cette page présente une façon de configurer [:Postfix:] afin d'y activer l'authentification des connexions via SASL.

Note : [:JeanChristopheAndré:Je] présente ici l'installation sur une Debian Sarge ou Etch.

Installation des outils requis

Afin de pouvoir s'authentifier en toute sécurité, il est fortement conseillé d'activer le [:../Chiffrement:chiffrement TLS] des connexions SMTP. C'est même indispensable pour la configuration que je présente ici, car on y utilise le mécanisme PLAIN qui consiste à transmettre le mot de passe en clair lors de l'authentification (nécessaire pour certains mécanismes sous-jacents).

Dans tous les cas, il faut au moins installer les modules et outils SASL :

$ sudo aptitude install libsasl2-modules sasl2-bin

Configuration de l'authentification SASL de Postfix

Deux choix se proposent à nous :

Le deuxième choix est plus souple et c'est donc celui que je présente ici.

On indiquera le système d'authentification dans /etc/postfix/sasl/smtpd.conf :

pwcheck_method: saslauthd
mech_list: PLAIN LOGIN ANONYMOUS

On spécifiera la méthode d'authentification dans /etc/default/saslauthd :

START=yes
MECHANISMS="pam"

Il faut rendre le service d'authentification disponible depuis l'environnement de Postfix :

$ sudo invoke-rc.d saslauthd start # astuce pour créer le répertoire de travail
$ sudo invoke-rc.d saslauthd stop
$ sudo mkdir -p /var/spool/postfix/var/run
$ sudo mv /var/run/saslauthd /var/spool/postfix/var/run/
$ sudo ln -s /var/spool/postfix/var/run/saslauthd /var/run/
$ sudo usermod -G $(id -Gn postfix | tr ' ' ','),sasl postfix # pour ajouter postfix au groupe sasl
$ sudo invoke-rc.d saslauthd start

Cas d'une configuration LDAP

Dans ce cas on spécifiera plutôt dans /etc/default/saslauthd :

START=yes
MECHANISMS="ldap"

Il faudra alors créer un fichier supplémentaire /etc/saslauthd.conf :

ldap_servers: ldap://127.0.0.1/
ldap_search_base: o=AuF
ldap_filter: mail=%U@auf.org
ldap_use_sasl: no
ldap_auth_method: bind

Voir /usr/share/doc/sasl2-bin/LDAP_SASLAUTHD.gz pour les options disponibles.

Cas d'une configuration MySQL

<!> Attention : cette solution n'a pas encore été testée !

Dans ce cas on n'a pas besoin de saslauthd mais il faut en revanche installer libsasl2-modules-sql.

Voici un exemple de configuration dans /etc/postfix/sasl/smtpd.conf :

pwcheck_method: auxprop
mech_list: PLAIN LOGIN ANONYMOUS
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: XXXXX
sql_database: system
sql_select: SELECT password FROM system WHERE username='%u'

Configuration de Postfix pour utiliser SASL

On pourra utiliser l'extrait de configuration suivant dans /etc/postfix/main.cf :

# n'offrir la possibilité de s'authentifier *que* si on est sécurisé via TLS
smtpd_tls_auth_only = yes

#===== SASL
# compatibilité avec les clients bogués (de chez Micro$oft...)
#broken_sasl_auth_clients = yes
#----- connexion entrante
smtpd_sasl_auth_enable = yes
#smtpd_sasl_security_options = noanonymous, noplaintext
#----- connexion sortante
#smtp_sasl_auth_enable = no
#smtp_sasl_password_maps = hash:$config_directory/saslpass
#smtp_sasl_security_options = noplaintext, noanonymous

# filtrage des envois pour n'autoriser que ceux authentifiés
smtpd_recipient_restrictions = ..., permit_sasl_authenticated, reject_unauth_destination

Il faut bien évidement penser à redémarrer (et non recharger) Postfix :

$ sudo invoke-rc.d postfix restart

Filtrage des envois selon l'adél de l'émetteur

Après authentification, Postfix permet également de vérifier la ou les adéls utilisées par l'émetteur (pas obligatoire, mais peut être utile pour stopper les pourriels).

Par exemple, j'ai créé un fichier /etc/postfix/sender_login contenant :

bilou@microsoft.com bgates

(Ne pas oublier de lancer postmap /etc/postfix/sender_login.)

Puis j'ai ajouté les lignes suivantes dans /etc/postfix/main.cf :

smtpd_sender_login_maps = hash:$config_directory/sender_login
smtpd_sender_restrictions = ..., reject_sender_login_mismatch, ...

(Ne pas oublier de recharger Postfix.)

Après cela, l'utilisateur bgates ne peut plus utiliser d'autre adresse que bilou@microsoft.com faute de quoi son envoi sera simplement rejeté, ce avant même d'être mis dans la queue d'envoi.

Discussions