O postfix não pode autenticar contra o SASL

1

Meu sistema é o Debian 7, também conhecido como Wheezy, com postfix, courier e mysql instalados. Courier funciona bem e se eu emitir

testsaslauthd -u user@domain -p password -f /var/spool/postfix/var/run/saslauthd/mux -s smtp

Eu obtenho um

0: OK "Success."

No entanto, se eu tiver um nome de usuário / senha codificado na base64 com

echo -ne '
helo localhost
auth plain (output from above)
0user@domain
535 5.7.8 Error: authentication failed: authentication failure
0password' | openssl base64

e tente usar isso em uma sessão SMTP usando

Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: warning: SASL authentication failure: Password verification failed
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: warning: localhost[::1]: SASL plain authentication failed: authentication failure

Eu sempre recebo um

Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin Parse the username username@domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin try and connect to a host
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin trying to open db 'postfixadmin' on host '127.0.0.1'
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: begin transaction
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin create statement from userPassword username domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin doing query SELECT password FROM mailbox WHERE username="username@domain";
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: commit transaction
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin Parse the username username@domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin try and connect to a host
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin trying to open db 'postfixadmin' on host '127.0.0.1'
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin Parse the username username@domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin try and connect to a host
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin trying to open db 'postfixadmin' on host '127.0.0.1'
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: begin transaction
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin create statement from userPassword username domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin doing query SELECT password FROM mailbox WHERE username="username@domain";
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin create statement from cmusaslsecretPLAIN username domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin doing query SELECT password FROM mailbox WHERE username="username@domain";
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: commit transaction
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin Parse the username username@domain
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin try and connect to a host
Sep 29 21:49:34 (hostname obfuscated) postfix/smtpd[15814]: sql plugin trying to open db 'postfixadmin' on host '127.0.0.1'

Em / var / log / syslog eu encontro então

# postconf | grep -e cyrus_sasl -e smtpd_sasl
cyrus_sasl_config_path =
send_cyrus_sasl_authzid = no
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = cyrus

e em /var/log/auth.log

sql_select: SELECT 'some hardcoded password' password FROM mailbox WHERE username="%u@%r"

Entradas SASL relevantes na configuração do meu postfix:

pwcheck_method: saslauthd
mech_list: plain login

Alguém pode me dar uma dica de como analisar ou depurar isso?

Atualização 2014/10/01: Depois de tentar cada vez mais, descobri que é definitivamente um problema com a leitura da senha do banco de dados mysql. Eu editei /etc/postfix/sasl/smtpd.conf e na última linha eu escrevi

testsaslauthd -u user@domain -p password -f /var/spool/postfix/var/run/saslauthd/mux -s smtp

e agora funciona. No entanto, isso é obviamente não o que eu pretendia fazer.

Segunda atualização 2014/10/01: Interessante ... Quando o smtpd.conf contém apenas

0: OK "Success."

tudo funciona como deveria! Resolvido por mim.

    
por Michael Kremser 29.09.2014 / 22:17

2 respostas

3

Solução: o /etc/postfix/sasl/smtpd.conf só precisa conter

pwcheck_method: saslauthd
mech_list: plain login
    
por 03.10.2014 / 07:59
0

A solução que funcionou para mim foi mudar

smtpd_sasl_type = cyrus

para

smtpd_sasl_type = dovecot

e certifique-se de que o dovecot-imapd esteja instalado.

    
por 30.01.2016 / 15:33