7071
Commentaire:
|
7113
|
Texte supprimé. | Texte ajouté. |
Ligne 30: | Ligne 30: |
Ligne 75: | Ligne 74: |
<!> 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 encrypt=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 encrypt=1 }}} Si les configuration 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 }}} <!> |
|
Ligne 172: | Ligne 142: |
== Exemples == === Authentification avec MySQL, via PAM === <!>L'authentification des mots de passe au format "crypt" peut fonctionner 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 encrypt=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 encrypt=1 }}} Si les configuration 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 }}} <!> |
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()
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.
Exemples
Authentification avec MySQL, via PAM
<!>L'authentification des mots de passe au format "crypt" peut fonctionner 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 encrypt=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 encrypt=1
Si les configuration 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