Postfix + SASL usando consulta incorreta para autenticar

2

Eu configurei recentemente o postfix + dovecot em uma instância do aws ec2 seguindo este guia: link

Atualmente estou preso ao SASL.

A consulta SQL não parece ser o que foi configurado. Aqui estão as configurações:

/etc/postfix/sasl/smtpd.conf

mostra

pwcheck_method: saslauthd
mech_list: plain login
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail
sql_passwd: passwd
sql_database: maildb
sql_select: select crypt from users where id='%u@%r' and enabled = 1

e

/etc/sasl2/smtpd.conf

mostra

pwcheck_method: saslauthd
mech_list: plain login
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: mail
sql_passwd: password
sql_database: maildb
sql_select: select crypt from users where id='%u@%r' and enabled = 1

e

/etc/pam.d/smtp

#%PAM-1.0
auth required pam_mysql.so user=mail passwd=password host=127.0.0.1 db=maildb table=users usercolumn=id passwdcolumn=crypt crypt=1 debug
account sufficient pam_mysql.so user=mail passwd=password host=127.0.0.1 db=maildb table=users usercolumn=id passwdcolumn=crypt crypt=1 debug

Agora, os arquivos de configuração definiram select crypt from users where id='%u@%r' and enabled = 1 como a consulta de seleção da senha.

Quando a autenticação falhou e verifiquei /var/log/secure , descobri que uma consulta de seleção incorreta é usada:

Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - SELECT crypt FROM users WHERE id = 'admin'
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - SELECT returned no result.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_check_passwd() returning 1.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_sql_log() called.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_sql_log() returning 0.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_sm_authenticate() returning 10.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_release_ctx() called.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_destroy_ctx() called.
Jun  1 15:50:13 ip-172-31-23-97 saslauthd[19892]: pam_mysql - pam_mysql_close_db() called.

Qual poderia ser a causa disso?

    
por maddo7 01.06.2016 / 18:03

1 resposta

2

Existem dois métodos comuns para usar o postfix SASL com o MySQL:

  • Usando o serviço saslauthd combinado com o pam_mysql
  • Usando o auxprop sasl com o plugin sql

Infelizmente, o segundo método tem grave inconveniente de segurança : você deve armazenar a senha em texto sem formatação < formato / strong>. Então, no seu caso, você precisa usar o saslauthd e o pam_mysql.

Na sua configuração acima, você misturou esses dois métodos: em pwcheck_method você colocou o saslauthd, mas configurou o sasl para usar auxprop_plugin com o sql. O pwcheck_method irá sobrescrever isso, então o parâmetro auxprop_plugin (e todos os seus parâmetros sql_* ) se tornam inúteis. Isso explica por que você recebe uma consulta incorreta. Em vez disso, o SASL executará a consulta fornecida /etc/pam.d/smtp . Para satisfazer sua necessidade, coloque o parâmetro adicional where na configuração pam

... passwdcolumn=crypt crypt=1 debug where=enabled=1
... passwdcolumn=crypt crypt=1 debug where=enabled=1

E, para o problema do domínio em falta ( %r ), tente definir smtpd_sasl_local_domain como seu domínio padrão.

    
por 02.06.2016 / 20:42