Este foi um erro totalmente estúpido da minha parte. Acontece que no arquivo de configuração /etc/postfix/sasl/smtpd.conf
, havia um espaço após o sql_passwd
e outros campos, o que significa que a autenticação falhou.
Eu tenho um servidor de e-mail com Postfix, Dovecot, saslauthd
e um armazenamento MySQL e backend de autenticação. Eu posso enviar e-mails muito bem, no entanto receber e-mails (do Outlook, neste caso) falha com mensagens em /var/log/mysql/mysql.log
:
O log do MySQL mostra esses erros:
53 Connect mail@localhost on mail
53 Connect Access denied for user 'mail'@'localhost' (using password: YES)
54 Connect mail@localhost on mail
54 Connect Access denied for user 'mail'@'localhost' (using password: YES)
55 Connect mail@localhost on mail
55 Connect Access denied for user 'mail'@'localhost' (using password: YES)
56 Connect mail@localhost on mail
56 Connect Access denied for user 'mail'@'localhost' (using password: YES)
Parece que não consigo fazer login no servidor MySQL, no entanto , quando faço
mysql -u mail -p -h localhost
Eu consigo logar fine . A senha é conhecida como correta em ambos os casos.
Tenho a sensação de que tudo isso é causado pelo Postfix (e, subseqüentemente, pelo SMTPD?) sendo executado em uma chroot
jail em /var/spool/postfix
. Eu tentei desativar o chroot e montar mysql.sock
em uma pasta no chroot Postfic, mas nada muda.
Eu também tentei alterar instâncias de 127.0.0.1
para localhost
e vice-versa sem sucesso. O Google foi minado pelas minhas tentativas de encontrar uma solução. Talvez eu esteja procurando a coisa errada.
O que eu preciso fazer para permitir que o Postfix acesse um banco de dados MySQL em execução no mesmo servidor? Eu quero usar o MySQL para outras coisas como PHP, então uma solução exclusiva do Postfix não é realmente uma opção. Isso tem me incomodado por uns bons 3 dias agora e eu tentei todas as soluções por aí.
Meu /etc/postfix/sasl/smtpd.conf
é assim:
pwcheck_method: auxprop
mech_list: PLAIN LOGIN
log_level: 7
allow_plaintext: true
auxprop_plugin: sql
sql_engine: mysql
sql_hostnames: localhost
sql_user: mail
sql_passwd: [hidden]
sql_database: mail
sql_select: select password from mailbox where username='%u@%r' and active = 1
Não tenho certeza de quais outros arquivos postar, então, por favor, comente e atualizarei de acordo. Estou executando o Ubuntu Server 12.10 32 bit.
Eu tinha o mesmo nome de usuário / senha correto, mas no meu caso, eu tinha essa consulta:
query = select 1 as found from users where email = '%u@%d' and enabled = true LIMIT 1;
O problema foi o final ;
.
Acabei de remover e funcionou
query = select 1 as found from users where email = '%u@%d' and enabled = true LIMIT 1
A mensagem de erro pode ser alterada para algo mais útil.
Tags authentication mysql postfix