Postfix (MySQL): Senhas criptografadas não funcionam

1

Atualização: Eu tentei inserir a senha em texto simples no banco de dados. Isso funciona e agora posso enviar e-mails também. Eu tentei configurar a coisa toda (usando o guia mencionado) novamente, mas com o mesmo resultado. Alguma idéia?

Pergunta original: Basta configurar um pacote Postfix / Courier após este tutorial . Eu usei este tutorial com sorte antes, mas desta vez estou com problemas para enviar e-mail. Meu principal problema é que eu realmente não sei onde procurar pistas sobre o que está causando esse erro. Mail.log só me dá as seguintes linhas,

Apr 21 17:38:50 gordon postfix/smtpd[5059]: connect from xxx.xx-xxx-xx.my.isp.carrier[xx.xxx.xx.xxx]
Apr 21 17:38:51 gordon imapd: LOGIN, [email protected], ip=[::ffff:xx.xxx.xx.xxx], port=[57701], protocol=IMAP
Apr 21 17:38:51 gordon postfix/smtpd[5059]: warning: xxx.xx-xxx-xx.my.isp.carrier[xx.xxx.xx.xxx]: SASL LOGIN authentication failed: authentication failure

Ao pesquisar, aparece "falha de autenticação" é uma mensagem de erro muito genérica e pode ser causada por vários erros diferentes - o que torna ainda mais difícil para um novato como eu localizar o problema.

Sistema

  • Ubuntu 12.04
  • Postfix
  • Courier
  • SASL com SSL e TLS
  • SpamAssassin
  • ClamAV
  • Amavis
por KG Christensen 21.04.2013 / 17:46

1 resposta

1

No tutorial vinculado acima , o autor usando o algoritmo hash CRYPT. Esse fato pode ser visto na consulta SQL:

INSERT INTO 'user' ('email', 'password', 'name') VALUES ("[email protected]", ENCRYPT("adminpassword"), "Administrator");

Saslauthd usando o pam-mysql para autenticar o usuário, então precisamos configurar o pam-mysql para usar o mesmo algoritmo de hash. O arquivo de configuração é definido em /etc/pam.d/smtp

auth    required   pam_mysql.so user=mail passwd=mailpassword host=127.0.0.1 db=mail table=user usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail passwd=mailpassword host=127.0.0.1 db=mail table=user usercolumn=email passwdcolumn=password crypt=1

O parâmetro importante é crypt porque especifica o método para criptografar a senha do usuário

  • 0 (or "plain") = No encryption. Passwords stored in plaintext. HIGHLY DISCOURAGED.
  • 1 (or "Y") = Use crypt(3) function
  • 2 (or "mysql") = Use MySQL PASSWORD() function. It is possible that the encryption function used by pam-mysql is different from that of the MySQL server, as pam-mysql uses the function defined in MySQL's C-client API instead of using PASSWORD() SQL function in the query.
  • 3 (or "md5") = Use MySQL MD5() function

Portanto, se você precisar usar senha criptografada para autenticação, defina o parâmetro crypt para que corresponda a sua consulta original.

Outro parâmetro importante é verbose . Você pode configurá-lo como 1 para poder saber o que o pam-mysql estava fazendo.

Mais informações: PAM-MySQL Package README readme.php

    
por 26.02.2015 / 03:48

Tags