Mise à niveau vers Debian 7: l'erreur Postfix échoue

Je suis en train de mettre à niveau plusieurs servers Debian 6 vers Debian 7. Il y a quelques problèmes mineurs, mais celui-ci est un bouclage de spectacle.

Sur Debian, Postfix s'exécute dans un environnement chrooté. Cet environnement est configuré correctement (il fonctionnait parfaitement sur Debian6).

Je n'utilise que le logiciel des versions stables du repository debian

Les configurations pertinentes (parties du) (anonymisées):

dans / etc / default / saslauthd:


START=yes DESC="SASL Authentication Daemon" NAME="saslauthd" MECHANISMS="ldap" MECH_OPTIONS="" THREADS=5 PARAMS=" -m /var/spool/postfix/run/saslauthd -O /etc/saslauthd.conf" OPTIONS=" -m /var/spool/postfix/run/saslauthd -O /etc/saslauthd.conf" PIDFILE="/var/spool/postfix/run/saslauthd/saslauthd.pid" 

dans /etc/saslauthd.conf:

 # With multiple servers, separate URIs with a space ldap_servers: ldaps://my.ldap.server # Don't use SASL to connect to LDAP!! (Use SSL) #ldap_version: 3 ldap_use_sasl: no ldap_bind_dn: uid=courier,ou=roles,dc=mydomain,dc=tld #watch out for trailing whitespace after the pasword! ldap_bind_pw: ####### ldap_timeout: 10 ldap_time_limit: 10 ldap_scope: sub ldap_search_base: ou=people,dc=mydomain,dc=tld ldap_auth_method: bind ldap_filter: (mail=%u) #ldap_filter: (mail=%u@%r) ldap_debug: 1 ldap_verbose: off ldap_referrals: yes # Settings below are needed for ldaps URIs ldap_ssl: yes ldap_start_tls: no ldap_tls_cacert_file: /etc/ssl/certs/allcacerts.pem ldap_tls_cert: /etc/ssl/certs/myserver.mydomain.tld.crt ldap_tls_key: /etc/ssl/private/myserver.mydomain.tld.key 

dans /etc/postfix/sasl/smtpd.conf:

 #global parameters log_level: 5 # WARNING !!! POSTFIX runs in a chrooted jail!! # Need to adjust paths to get the socket available! # adjust this in /etc/defaults/saslauthd # eg: PARAMS=/var/spool/postfix/run/saslauthd/ # real saslauthd_path: /var/spool/postfix/run/saslauthd/mux pwcheck_method: saslauthd saslauthd_path: /run/saslauthd/mux mech_list: PLAIN LOGIN auxprop_plugin: ldapdb #allow_plaintext: true #the database used is /var/spool/postfix/etc/sasldb2 

dans /etc/postfix/main.cf

 #sasl configuration smtpd_sasl_auth_enable = yes smtpd_sasl_path= smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_local_domain = #broken_sasl_auth_clients = yes # TLS configuration smtpd_use_tls = yes smtpd_tls_loglevel = 1 smtpd_tls_received_header = yes smtpd_tls_key_file = /etc/ssl/private/myserver.mydomain.tld.key #smtpd_tls_cert_file = /etc/ssl/certs/myserver.mydomain.tld.crt smtpd_tls_cert_file = /etc/ssl/certs/myserver.mydomain.tld.pem tls_random_source = dev:/dev/urandom # CAfile is read BEFORE entering chroot jail smtpd_tls_CAfile = /etc/ssl/certs/allcacerts.pem # CApath is used withIN chroot jail #smtpd_tls_CApath = /usr/share/ssl/certs/ 

Cyrus SASL a sa socket dans /var/spool/postfix/run/saslauthd/mux

Je teste avec:

testsaslauthd -s smtpd -f /var/spool/postfix/run/saslauthd/mux -u USER@REALM.TLD -p PASSWD

Donne: 0: OK "Success."

FYI: avec des informations d'identification incorrectes, échoue 🙂

Avec ces résultats, ma conclusion est que sasl fonctionne correctement.

Lorsque j'utilise 'swaks' pour tester ESMTP Auth:

swaks -s myserver.mydomain.tld -p 25 -ehlo myclient.mydomain.tld -au USER@REALM.TLD -ap PASSWD -t sender@mydomain.tld -f recipient@anotherdomain.tld

 === Trying myserver.mydomain.tld:25... === Connected to myserver.mydomain.tld. <- 220 *********************** -> EHLO myclient.mydomain.tld <- 250-myserver.mydomain.tld <- 250-PIPELINING <- 250-SIZE 15360000 <- 250-VRFY <- 250-ETRN <- 250-XXXXXXXA <- 250-AUTH PLAIN LOGIN <- 250-ENHANCEDSTATUSCODES <- 250-8BITMIME <- 250 DSN -> AUTH LOGIN <- 334 VXNlcmgfhgWU6 -> bWFyY2hgh28ubmw= <- 334 UGFzfghdfmQ6 -> bWFyUzYdfghgfhg== <** 535 5.7.8 Error: authentication failed: no mechanism available -> AUTH PLAIN AG1hcmdfhgdfgd1hclM2NW9ndCo= <** 535 5.7.8 Error: authentication failed: no mechanism available *** No authentication type succeeded -> QUIT <- 221 2.0.0 Bye === Connection closed with remote host. 

Et dans les journaux:

 postfix/smtpd[5646]:auxpropfunc error invalid parameter supplied postfix/smtpd[5646]:_sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb postfix/smtpd[5646]:anonuserfunc error -7 postfix/smtpd[5646]:_sasl_plugin_load failed on sasl_canonuser_init for plugin: ldapdb postfix/smtpd[5646]:warning: unknown[192.168.114.69 : SASL LOGIN authentication failed: no mechanism available postfix/smtpd[5646]:warning: unknown[192.168.114.69 : SASL PLAIN authentication failed: no mechanism available 

(IP est de la machine client)

L'user postfix est membre du groupe sasl.

Je sais que Debian a changé la structure du directory de la bibliothèque en insérant un sortingplet, pour le rendre multi-arch capable.

Ce qui était autrefois: /usr/lib/sasl2 est maintenant: /usr/lib/x86_64-linux-gnu/sasl2 (pour les systèmes x86 64bits)

J'ai copié le directory sasl2 dans différents endroits pour rendre disponibles les bibliothèques, mais cela n'a pas changé.

N'importe qui?

Marcel

Je l'ai résolu!

Il a fallu beaucoup de debugging, mais tout fonctionne à nouveau avec les parameters suivants:

Dans /etc/postfix/smtpd.conf:

 pwcheck_method: saslauthd saslauthd_path: /run/saslauthd/mux mech_list: PLAIN LOGIN # DO NOT SPECIFY THE AUX_PROP PLUGIN!! #auxprop_plugin: ldapdb 

Dans /etc/saslauthd.conf:

 ... ldap_auth_method: bind #ldap_filter: (mail=%u) ldap_filter: (mail=%u@%r) ... 

À l'origine, j'avais ce filter, mais parce que je voyais dans les logs d'access au journal LDAP pour l' user@domain.tld@ , j'avais changé le filter (voir mon article original).

!! Tout ce dont j'avais besoin était de commenter le paramètre auxprop_plugin !!

Notez cependant que, dans mon configuration, je n'utilise PAS le backend ldap.

Marcel

avertissement: localhost [127.0.0.1]: l'authentification SASL PLAIN a échoué: aucun mécanisme disponible

J'avais le même problème, mais j'utilise mysql. Après avoir commenté cette ligne: #auxprop_plugin , tout fonctionne bien!

 pwcheck_method: saslauthd mech_list: plain login cram-md5 digest-md5 allow_plaintext: true #auxprop_plugin: sql sql_engine: mysql sql_hostnames: 127.0.0.1 sql_user: postfix sql_passwd: pass sql_database: postfix loglevel: 0 sql_select: select password from mailbox where username = '%u@%r'