Estou atualizando vários servidores Debian 6 para o Debian 7. Existem alguns pequenos problemas, mas este é um show stopper.
No Debian, o Postfix é executado em um ambiente chrooted. Esse ambiente está configurado corretamente (ele estava funcionando perfeitamente no Debian6).
Eu só uso software das versões estáveis do repositório debian
As configurações relevantes (partes das) (anonimizadas):
em / 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"
em /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
em /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
em /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/
O Cyrus SASL tem seu soquete em /var/spool/postfix/run/saslauthd/mux
Eu testo com:
testsaslauthd -s smtpd -f /var/spool/postfix/run/saslauthd/mux -u [email protected] -p PASSWD
Dá: 0: OK "Success."
FYI: Com credenciais incorretas, ele falha:)
Com esses resultados, minha conclusão é que o sasl está funcionando corretamente.
Quando uso 'swaks' para testar o Auth do ESMTP:
swaks -s myserver.mydomain.tld -p 25 -ehlo myclient.mydomain.tld -au [email protected] -ap PASSWD -t [email protected] -f [email protected]
=== 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.
E nos registros:
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 é da máquina cliente)
O usuário postfix é um membro do grupo sasl.
Eu sei que o Debian mudou a estrutura de diretórios da biblioteca inserindo um trio, para torná-lo capaz de multi-arch.
O que costumava ser: /usr/lib/sasl2
é agora: /usr/lib/x86_64-linux-gnu/sasl2
(para sistemas x86 64bits)
Eu copiei o diretório sasl2 para vários lugares para disponibilizar as bibliotecas, mas isso não mudou nada.
Alguém?
Marcel