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 :
utiliser le système d'authentification propriétaire de SASL (sasldb)
utiliser un système d'authentification externe (via un service saslauthd)
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.
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
ThomasNoël : On peut pas faire du SASL sans TLS ? Les mots de passe ne circulent pas en clair de toute façon, non ?
JeanChristopheAndré : Oui, on peut, en utilisant une authentification plus forte que le simple PLAIN (mot de passe encodé en base64) ; la config ci-dessus marche avec Mozilla mais je n'ai pas encore testé avec les outils Micro$oft...
JeanChristopheAndré : Ma priorité était surtout d'empêcher les virus de sortir via le port SMTP, ce qui fonctionne bougrement bien ! Pour un nomade il suffira de le configurer pour utiliser un accès SMTP authentifié sur le serveur de Montréal ou celui de Paris (s'assurer que les filtrages soient ouverts à cet effet), et éventuellement créer un login+mdp pour les invités qui l'utiliseront pour sortir en SMTP le temps de leur passage chez nous.