5040
Commentaire: version initiale
|
7834
|
Texte supprimé. | Texte ajouté. |
Ligne 9: | Ligne 9: |
Dans tous les cas, il faut au moins installer les modules et outils SASL : | Dans tous les cas, il faut au moins installer les modules SASL : |
Ligne 11: | Ligne 11: |
$ sudo aptitude install libsasl2-modules sasl2-bin | $ sudo aptitude install libsasl2-modules |
Ligne 16: | Ligne 16: |
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. |
=== Authentification via PAM, LDAP ou IMAP === Il faut ici utiliser l'authentification externe via `saslauthd`. Pour ce faire, il faut installer les outils SASL : {{{ $ sudo aptitude install sasl2-bin }}} |
Ligne 32: | Ligne 36: |
ou bien : {{{ START=yes MECHANISMS="ldap" }}} ou encore : {{{ START=yes MECHANISMS="rimap" PARAMS="-O localhost" # serveur imap }}} |
|
Ligne 33: | Ligne 48: |
Il faut rendre le service d'authentification disponible depuis l'environnement de Postfix : | Pour 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. Il faut ensuite rendre le service d'authentification disponible depuis l'environnement de Postfix : |
Ligne 44: | Ligne 69: |
=== Cas d'une configuration LDAP === | === Authentification via MySQL === |
Ligne 46: | Ligne 71: |
Dans ce cas on spécifiera plutôt dans `/etc/default/saslauthd` : | <!> Attention : cette solution n'a pas encore été testée ! /!\ Je (JeromeSantini) vient de tester, et j'ai l'impression que cette méthode nécessite d'avoir le mot de passe en clair dans la base ? en tous cas, pas réussi à faire marcher avec le mot de passe au format compatible {{{crypt()}}} :-( ---- /!\ '''Edit conflict - other version:''' ---- ---- /!\ '''Edit conflict - your version:''' ---- (!) Si si, l'authentification des des mots de passe au format "crypt" fonctionne avec "saslauthd + pam" cependant avec l'encodage md5 c'est pas encore au point. Ci-dessous ma configuration dans le cadre d'un mot de passe formaté "crypt". <!> On installe le module pour que "Pam" puisse fonctionner avec "mysql" |
Ligne 48: | Ligne 85: |
START=yes MECHANISMS="ldap" |
$ sudo aptitude install libpam-mysql |
Ligne 52: | Ligne 88: |
Il faudra alors créer un fichier supplémentaire `/etc/saslauthd.conf` : | Système d'authentification dans `/etc/postfix/sasl/smtpd.conf` : |
Ligne 54: | Ligne 90: |
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 |
pwcheck_method: saslauthd mech_list: PLAIN LOGIN ANONYMOUS log_level: 7 |
Ligne 60: | Ligne 94: |
Voir `/usr/share/doc/sasl2-bin/LDAP_SASLAUTHD.gz` pour les options disponibles. | Le "log_level" à ce niveau est très utile et permet de visualiser les retours d'erreur dans /var/log/auth.log. Dans le répertoire /etc/pam.d, on crée un fichier appelé "smtp" qui contient les lignes suivantes : {{{ auth required pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 account sufficient pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 }}} Si les configurations globales énoncées plus haut ont été respectées, il suffit de relancer les processus : {{{ # /etc/init.d/postfix restart # /etc/init.d/saslauthd start }}} Pour l'utlisation des mots de passe encodés en md5, la solution préconisée dans la doc livrée avec "libpam-mysql" repose sur l'ajout du champ "md5" dans les lignes suivantes : {{{ auth required pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 md5=1 account sufficient pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 md5=1 }}} '''J'ai passé une journée entière a retourner le problème dans tous les sens mais ça ne fonctionne toujours pas !''' <!> ---- /!\ '''End of edit conflict''' ---- Dans ce cas on n'a pas besoin de `saslauthd` mais il faut en revanche installer les modules SQL : {{{ $ sudo aptitude install 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' }}} |
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 SASL :
$ sudo aptitude install libsasl2-modules
Configuration de l'authentification SASL de Postfix
Authentification via PAM, LDAP ou IMAP
Il faut ici utiliser l'authentification externe via saslauthd.
Pour ce faire, il faut installer les outils SASL :
$ sudo aptitude install sasl2-bin
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"
ou bien :
START=yes MECHANISMS="ldap"
ou encore :
START=yes MECHANISMS="rimap" PARAMS="-O localhost" # serveur imap
Pour 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.
Il faut ensuite 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
Authentification via MySQL
Attention : cette solution n'a pas encore été testée ! Je (JeromeSantini) vient de tester, et j'ai l'impression que cette méthode nécessite d'avoir le mot de passe en clair dans la base ? en tous cas, pas réussi à faire marcher avec le mot de passe au format compatible crypt()
Edit conflict - other version:
Edit conflict - your version:
Si si, l'authentification des des mots de passe au format "crypt" fonctionne avec "saslauthd + pam" cependant avec l'encodage md5 c'est pas encore au point.
Ci-dessous ma configuration dans le cadre d'un mot de passe formaté "crypt".
On installe le module pour que "Pam" puisse fonctionner avec "mysql"
$ sudo aptitude install libpam-mysql
Système d'authentification dans /etc/postfix/sasl/smtpd.conf :
pwcheck_method: saslauthd mech_list: PLAIN LOGIN ANONYMOUS log_level: 7
Le "log_level" à ce niveau est très utile et permet de visualiser les retours d'erreur dans /var/log/auth.log.
Dans le répertoire /etc/pam.d, on crée un fichier appelé "smtp" qui contient les lignes suivantes :
auth required pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 account sufficient pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1
Si les configurations globales énoncées plus haut ont été respectées, il suffit de relancer les processus :
# /etc/init.d/postfix restart # /etc/init.d/saslauthd start
Pour l'utlisation des mots de passe encodés en md5, la solution préconisée dans la doc livrée avec "libpam-mysql" repose sur l'ajout du champ "md5" dans les lignes suivantes :
auth required pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 md5=1 account sufficient pam_mysql.so user=xxxxx passwd=xxxx host=127.0.0.1 db="base" table="table" usercolumn="champ" passwdcolumn="champ" crypt=1 md5=1
J'ai passé une journée entière a retourner le problème dans tous les sens mais ça ne fonctionne toujours pas !
End of edit conflict
Dans ce cas on n'a pas besoin de saslauthd mais il faut en revanche installer les modules SQL :
$ sudo aptitude install 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
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.