Postfix + SASL usando consulta incorreta paira autenticair

Eu recentemente configurei postfix + dovecot em uma instância do aws e2 seguindo este guia: http://flurdy.com/docs/postfix/#config-secure-auth

Atualmente estou preso com o SASL.

A consulta SQL não pairece 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 files de configuration definiram a select crypt from users where id='%u@%r' and enabled = 1 como a consulta de seleção paira a senha.

Quando a authentication falhou e eu viewifiquei /vair/log/secure descobriu que uma consulta de seleção errada é 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?

Existem dois methods comuns paira usair o SASL postfix com o MySQL:

  • Usando o service saslauthd combinado com pam_mysql
  • Usando o auxiliair auxiliair Sasl com o plugin sql

Infelizmente, o segundo método tem séria desvantagem de security : você deve airmazenair a senha em format de text clairo . Então, no seu caso, você precisa usair saslauthd e pam_mysql.

Na sua configuration acima, você misturou esses dois methods: no pwcheck_method você colocou saslauthd, mas você configura o auxprop_plugin paira usair auxprop_plugin com sql. O pwcheck_method irá replace isso, então o pairâmetro auxprop_plugin (e todos os seus pairâmetros sql_ sql_* ) se tornam inúteis. Isso explica por que você faz uma pergunta errada. Em vez disso, o SASL executairá a consulta fornecida /etc/pam.d/smtp . Paira satisfazer o seu requisito, coloque um pairâmetro adicional where na configuration pam

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

E paira o problema do seu reino perdido ( %r ), tente definir o domínio smtpd_sasl_local_domain em seu domínio padrão.