Falha na autenticação SMTP + O PAM-MySQL não pode autenticar

5

Estou construindo um servidor de correio usando o Postfix e configuro a autenticação para verificar a configuração de um banco de dados usando o Postfixadmin.

Eu posso autenticar via Courier IMAP bem, como ele pode autenticar contra a senha com hash corretamente, mas estou suspeitando que o meu mecanismo de autenticação SMTP SASL + PAM-MySQL não pode.

Estou recebendo esses erros em /var/log/mail.log :

pam_unix(smtp:auth): check pass; user unknown
Aug 22 03:23:08 omitted saslauthd[26402]: pam_unix(smtp:auth): authentication failure; logname= uid=0 euid=0 tty= ruser= rhost= 
Aug 22 03:23:10 omitted saslauthd[26402]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
Aug 22 03:23:10 omitted saslauthd[26402]: do_auth         : auth failure: [[email protected]] [service=smtp] [realm=domain.com] [mech=pam] [reason=PAM auth error]

Aqui estão os conteúdos de /etc/pam.d/smtp :

auth required pam_mysql.so user=postfixadmin passwd=omitted host=127.0.0.1 db=postfixadmin table=mailbox usercolumn=username passwdcolumn=password crypt=2
account sufficient pam_mysql.so user=postfixadmin passwd=omitted host=127.0.0.1 db=postfixadmin table=mailbox usercolumn=username passwdcolumn=password crypt=2

Aqui está o snippet relevante para a criptografia de senha de /etc/postfixadmin/config.inc.php :

// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
// md5 = md5 sum of the password
// system = whatever you have set as your PHP system default
// cleartext = clear text passwords (ouch!)
// mysql_encrypt = useful for PAM integration
// authlib = support for courier-authlib style passwords
// dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: dovecot:CRAM-MD5
$CONF['encrypt'] = 'mysql_encrypt';

E aqui está o conteúdo do meu /etc/postfix/sasl/smtp.conf :

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: postfixadmin
sql_passwd: omitted
sql_database: postfixadmin
sql_select: select password from mailbox where username='%u@%r'

Eu tentei usar o hash MD5, mas o Courier falharia. Então isso é fora da janela ...

    
por Bez Hermoso 22.08.2012 / 05:31

1 resposta

4

Eu tenho exatamente a mesma configuração que você (Postfix + Cyrus SASL usando saslauthd + PAM), e também passei horas para configurá-lo. Mas saiba que funciona perfeitamente.

No meu caso, tenho as mesmas configurações que você em /etc/pam.d/smtp , mas não em /etc/postfix/sasl/smtp.conf .

Parece que você está misturando o uso do plugin SQL Cyrus ( auxprop_plugin: sql ) com o saslauthd e o PAM mysql.

Documentação do Postfix diz que, se você quiser armazenar senhas criptografadas (que parecem ser o caso desde que você definiu up "crypt = 2" na configuração do PAM), então você NÃO PODE usar o plugin sql Cyrus SASL.

Você pode tentar usar somente o PAM. Para isso, você só precisa seguir em /etc/postfix/sasl/smtp.conf

pwcheck_method: saslauthd
mech_list: login plain
log_level: 4

Você não precisa de nenhuma configuração de banco de dados / senha neste arquivo, já que o PAM já sabe tudo!

Verifique também o /etc/default/saslautd , tenho o seguinte:

START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=1
OPTIONS="-c -r -m /var/spool/postfix/var/run/saslauthd"

Verifique se você escolheu pam na variável MECHANISMS e verifique os sinalizadores na variável OPTIONS . Normalmente, você deve ter mais de 1 na variável THREADS . Você pode deixar assim. Você não precisa definir "1" como eu.

EDITAR : parece que respondi a uma pergunta muito antiga! Não importa, isso será referenciado pelo Google e pode ser útil para qualquer um que configure o SASL com o PAM.

    
por 14.08.2013 / 23:00