Re: [Dovecot] Password auth scheme question with mysql

2012-01-28 Thread Timo Sirainen
On 25.1.2012, at 2.03, Ed W wrote:

 The error seems to be that I set the pass variable in my password_query to 
 set the master password for the upstream proxied to server.  I can't actually 
 remember now why this was required, but it was necessary to allow the proxy 
 to work correctly in the past.  I guess this assumption needs revisiting now 
 since it can't be used if the plain password isn't in the database...

I'm not sure if I understand correctly, but if you need the user's plaintext 
password it's in %w variable (assuming plaintext authentication). So a common 
configuration is to use: '%w' AS pass



[Dovecot] Password auth scheme question with mysql

2012-01-24 Thread Ed W
Hi, I have a current auth database using mysql with a password column 
in plain text. The config has default_pass_scheme = PLAIN specified


In preparation for a more adaptable system I changed a password entry 
from asdf to {PLAIN}asdf, but now auth fails.  Works fine if I 
change it back to just asdf. (I don't believe it's a caching problem)


What might I be missing?  I was under the impression that the password 
column can include a {scheme} prefix to indicate the password scheme 
(presumably this also means a password cannot start with a {?).  Is 
this still true when using mysql and default_pass_scheme ?


Thanks for any hints?

Ed W


Re: [Dovecot] Password auth scheme question with mysql

2012-01-24 Thread Ed W

On 24/01/2012 22:06, Ed W wrote:
Hi, I have a current auth database using mysql with a password 
column in plain text. The config has default_pass_scheme = PLAIN 
specified


In preparation for a more adaptable system I changed a password entry 
from asdf to {PLAIN}asdf, but now auth fails.  Works fine if I 
change it back to just asdf. (I don't believe it's a caching problem)


What might I be missing?  I was under the impression that the password 
column can include a {scheme} prefix to indicate the password scheme 
(presumably this also means a password cannot start with a {?).  Is 
this still true when using mysql and default_pass_scheme ?


Hmm, so I try:

# doveadm pw -p asdf -s sha256
{SHA256}8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts=

I enter this hash into my database column, then enabling debug logging I 
see this in the logs:


Jan 24 22:40:44 mail1 dovecot: auth: Debug: 
cache(d...@mailasail.com,1.2.24.129): SHA256({PLAIN}asdf) != 
'8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts='
Jan 24 22:40:44 mail1 dovecot: auth-worker: Debug: 
sql(d...@blah.com,1.2.24.129): query: SELECT NULLIF(mail_host, 
'1.2.24.129') as proxy, NULLIF(mail_host, '1.2.24.129') as host, email 
as user, password, password as pass, home userdb_home, concat(home, '/', 
maildir) as userdb_mail, 200 as userdb_uid, 200 as userdb_gid FROM users 
WHERE email = 
if('blah.com''','d...@blah.com','d...@blah.com@mailasail.com') and 
flag_active=1
Jan 24 22:40:44 mail1 dovecot: auth-worker: 
sql(d...@blah.com,1.2.24.129): Password mismatch (given password: 
{PLAIN}asdf)
Jan 24 22:40:44 mail1 dovecot: auth-worker: Error: 
md5_verify(d...@mailasail.com): Not a valid MD5-CRYPT or PLAIN-MD5 password
Jan 24 22:40:44 mail1 dovecot: auth-worker: Error: 
ssha256_verify(d...@mailasail.com): SSHA256 password too short
Jan 24 22:40:44 mail1 dovecot: auth-worker: Error: 
ssha512_verify(d...@mailasail.com): SSHA512 password too short
Jan 24 22:40:44 mail1 dovecot: auth-worker: Warning: Invalid OTP data in 
passdb
Jan 24 22:40:44 mail1 dovecot: auth-worker: Warning: Invalid OTP data in 
passdb
Jan 24 22:40:44 mail1 dovecot: auth-worker: Debug: 
sql(d...@blah.com,1.2.24.129): SHA256({PLAIN}asdf) != 
'8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts='



Forgot to say. this is with dovecot 2.0.17

Thanks for any pointers

Ed W


Re: [Dovecot] Password auth scheme question with mysql

2012-01-24 Thread Ed W

On 24/01/2012 22:51, Ed W wrote:

Hmm, so I try:

# doveadm pw -p asdf -s sha256
{SHA256}8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts=

I enter this hash into my database column, then enabling debug logging 
I see this in the logs:



..
Jan 24 22:40:44 mail1 dovecot: auth-worker: Debug: 
sql(d...@blah.com,1.2.24.129): SHA256({PLAIN}asdf) != 
'8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts='


Gah.  Ok, so I discovered the doveadm auth command:


# doveadm auth -x service=pop3 demo asdf
passdb: demo auth succeeded
extra fields:
  user=d...@blah.com
  proxy
  host=1.2.24.129
  pass={SHA256}8OTC92xYkW7CWPJGhRvqCR0U1CR6L8PhhpRGGxgW4Ts=



So why do I get an auth failed and the log files I showed in my last 
email when I use telnet localhost 110 and then the commands:


user demo
pass asdf


Help please...?

Ed W


Re: [Dovecot] Password auth scheme question with mysql

2012-01-24 Thread Ed W

On 24/01/2012 22:06, Ed W wrote:
Hi, I have a current auth database using mysql with a password 
column in plain text. The config has default_pass_scheme = PLAIN 
specified


In preparation for a more adaptable system I changed a password entry 
from asdf to {PLAIN}asdf, but now auth fails.  Works fine if I 
change it back to just asdf. (I don't believe it's a caching problem)


What might I be missing?  I was under the impression that the password 
column can include a {scheme} prefix to indicate the password scheme 
(presumably this also means a password cannot start with a {?).  Is 
this still true when using mysql and default_pass_scheme ?


Bahh.  Partly figured this out now - sorry for the noise - looks like a 
config error on my side:


I have traced this to my proxy setup, which appears not to work as 
expected.  Basically all works fine when I test to the main server IP, 
but fails when I test localhost, since it triggers me to be proxied to 
the main IP address (same machine, just using the external IP).


The error seems to be that I set the pass variable in my 
password_query to set the master password for the upstream proxied to 
server.  I can't actually remember now why this was required, but it was 
necessary to allow the proxy to work correctly in the past.  I guess 
this assumption needs revisiting now since it can't be used if the plain 
password isn't in the database...


For interest, here is my auth setup:

password_query = SELECT NULLIF(mail_host, '%l') as proxy, 
NULLIF(mail_host, '%l') as host, \

email as user, password, \
password as pass, \
home userdb_home, concat(home, '/', maildir) as userdb_mail, \
1234 as userdb_uid, 1234 as userdb_gid \
FROM users \
WHERE email = if('%d''','%u','%u...@mailasail.com') and 
flag_active=1


mail_host in this case holds the IP of the machine holding the users 
mailbox (hence it's easy to push mailboxes to a specific machine and the 
users get proxied to it)


Sorry for the noise

Ed W