dovecot - проблемы авторизации

17 сообщений / 0 new
Последнее сообщение
eMax
Не в сети
Зарегистрирован: 20/09/2010
dovecot - проблемы авторизации

картина такая: стоит exim, юзвери в mysql. почту принимает нормально. ставлю dovecot 1.0.beta8

[b]dovecot.conf:[/b]
protocols = imap
listen = [::]

ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/certs/dovecot.pem

disable_plaintext_auth = no

log_path = /var/log/dovecot.log

info_log_path = /var/log/dovecot.log

mail_extra_groups = mail

default_mail_env = maildir:/usr/local/vmail/%d/$n

protocol imap {
login_executable = /usr/libexec/dovecot/imap-login
mail_executable = /usr/libexec/dovecot/imap
}

auth default {
mechanisms = plain login cram-md5 digest-md5
passdb sql {
args = /etc/dovecot-sql.conf
}
userdb passwd {
args = /etc/dovecot-sql.conf
}
user = root
}

[b]dovecot-sql.conf:[/b]
driver = mysql
connect = host=localhost port=3306 user=exim password=********* dbname=mail
default_pass_scheme = PLAIN
password_query = SELECT passwd as password FROM mail.users WHERE id = '%n' AND mbox_host = '%d' AND active = 'Y'
user_query = SELECT uid, gid, home FROM mail.users WHERE id = '%n' AND mbox_host = '%d'

сам dovecot стартует нормально:
dovecot: Oct 11 17:57:20 Info: Dovecot v1.0.beta8 starting up
dovecot: Oct 11 17:57:21 Info: auth-worker(default): mysql: Connected to localhost (mail)

а вот при попытке соединения пишет:
[b]dovecot: Oct 11 17:58:04 Info: imap-login: Aborted login: user=
, method=PLAIN, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90[/b]

есть у кого нибудь соображения по этому поводу?

[ Редактирование ]
[ Редактирование ]

edge (не проверено)

Включи отладку в mysql, посмотри в логи, там будет виднее где ошибка, если ошибка в mysql.
Зачем IPV6 в приватной сети? Хотя это конечно к вопросу не относится.
Покажи дамп базы с хотя бы одной записью
Права на /usr/local/vmail/*, кстати /usr довольно странное место для хранения почты. Обычный unixway для этого /var или /home
Логи скудноваты, конфиг неполон. Для помощи этого маловато.
[ Редактирование 11.10.2006 - 21:41:15 ]

eMax
Не в сети
Зарегистрирован: 20/09/2010

конфиг я привел полностью.

дамп базы:

id: admin
crypt: **************
passwd: 123456
uid: 1001
gid: 6
mbox_host: lindex.ru
shell: /usr/sbin/nologin
home: /usr/local/vmail/lindex.ru/admin
quota: 127
active: Y

[ Редактирование 11.10.2006 - 22:41:20 ]
[ Редактирование 11.10.2006 - 22:42:29 ]

eMax
Не в сети
Зарегистрирован: 20/09/2010

mysql работает нормально, запросы отрабатывает нормально.

Да, забыл уточнить, система Gentoo x86_64 2006.1
[ Редактирование 11.10.2006 - 23:08:16 ]

edge (не проверено)

shell: /usr/sbin/nologin - это ссылка на false? Спрашиваю, потому как у меня в Gentoo такого нет. А в /etc/shells она прописана?
из mechanisms = plain login cram-md5 digest-md5 поробуй оставить только plain
default_mail_env = maildir:/usr/local/vmail/%d/$n - а вот тут наверное надо %n а не $n

eMax
Не в сети
Зарегистрирован: 20/09/2010

/usr/sbin/nologin в Gentoo есть, я ее только в /etc/shells прописал.
оставил только mechanisms = plain
исправил default_mail_env = maildir:/usr/local/vmail/%d/%n

в логах теперь:
dovecot: Oct 12 11:31:21 Info: Dovecot v1.0.beta8 starting up
dovecot: Oct 12 11:31:22 Info: auth-worker(default): mysql: Connected to localhost (mail)
dovecot: Oct 12 11:32:34 Info: imap-login: Aborted login: user=< admin@lindex.ru >, method=PLAIN, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90

edge (не проверено)

А если вот так:
# More verbose logging. Useful for figuring out why authentication isn't
# working.
auth_verbose = yes

eMax
Не в сети
Зарегистрирован: 20/09/2010

Вот что теперь он пишет в логах. я пока не понимаю что не так.
При чем MySQL дает нормальные результаты запросов, которые ему посылает dovecot.

dovecot: Oct 12 15:09:23 Error: auth(default): userdb(admin@lindex.ru,::ffff:172
.16.0.112): user not found from userdb
dovecot: Oct 12 15:09:23 Info: imap-login: Internal login failure: user= index.ru>, method=plain, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90
dovecot: Oct 12 15:09:24 Info: auth(default): passwd(admin@lindex.ru,::ffff:172.
16.0.112): unknown user
dovecot: Oct 12 15:09:24 Error: auth(default): userdb(admin@lindex.ru,::ffff:172
.16.0.112): user not found from userdb
dovecot: Oct 12 15:09:24 Info: imap-login: Internal login failure: user= index.ru>, method=plain, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90
dovecot: Oct 12 15:09:26 Info: auth(default): passwd(admin@lindex.ru,::ffff:172.
16.0.112): unknown user
dovecot: Oct 12 15:09:26 Error: auth(default): userdb(admin@lindex.ru,::ffff:172
.16.0.112): user not found from userdb
dovecot: Oct 12 15:09:26 Info: imap-login: Internal login failure: user= index.ru>, method=plain, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90

Luter (не проверено)

логин идет name@host
или просто name....???

eMax
Не в сети
Зарегистрирован: 20/09/2010

логин идет именно name@host

eMax
Не в сети
Зарегистрирован: 20/09/2010

логин идет именно name@host

edge (не проверено)

# SQL database
passdb sql {
# Path for SQL configuration file, see doc/dovecot-sql.conf for example
args = /etc/dovecot/dovecot-mysql.conf
}

# SQL database
userdb sql {
# Path for SQL configuration file, see doc/dovecot-sql.conf for example
args = /etc/dovecot/dovecot-mysql.conf
}

А у тебя фигня написана:
userdb passwd {
args = /etc/dovecot-sql.conf
}

[ Редактирование 12.10.2006 - 21:22:32 ]

eMax
Не в сети
Зарегистрирован: 20/09/2010

исправил:
passdb sql {
args = /etc/dovecot-sql.conf
}

userdb sql {
args = /etc/dovecot-sql.conf
}

Но теперь вот что в логах пишет:

dovecot: Oct 12 23:37:25 Info: auth(default): pam(admin@lindex.ru,::ffff:172.16.
0.112): pam_authenticate() failed: Authentication failure
dovecot: Oct 12 23:37:25 Error: auth-worker(default): sql(admin@lindex.ru,::ffff
:172.16.0.112): User query failed: Unknown column 'userid' in 'where clause'
dovecot: Oct 12 23:37:25 Error: auth(default): userdb(admin@lindex.ru,::ffff:172
.16.0.112): user not found from userdb
dovecot: Oct 12 23:37:25 Info: imap-login: Internal login failure: user=< admin@l
index.ru >, method=plain, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90
dovecot: Oct 12 23:47:25 Info: auth(default): pam(admin@lindex.ru,::ffff:172.16.
0.112): pam_authenticate() failed: Authentication failure
dovecot: Oct 12 23:47:25 Error: auth-worker(default): sql(admin@lindex.ru,::ffff
:172.16.0.112): User query failed: Unknown column 'userid' in 'where clause'
dovecot: Oct 12 23:47:25 Error: auth(default): userdb(admin@lindex.ru,::ffff:172
.16.0.112): user not found from userdb
dovecot: Oct 12 23:47:25 Info: imap-login: Internal login failure: user=< admin@l
index.ru >, method=plain, rip=::ffff:172.16.0.112, lip=::ffff:172.16.0.90

Вот файл dovecot-sql.conf

driver = mysql
connect = host=localhost port=3306 user=dovecot password=******** dbname=mail
default_pass_scheme = PLAIN
password_query = SELECT passwd as password, id FROM mail.users WHERE id = '%n' AND mbox_host = '%d' AND active='Y'
user_query = SELECT uid, gid, home FROM mail.users WHERE id = '%n' AND mbox_host = '%d'
[ Редактирование 12.10.2006 - 23:51:15 ]
[ Редактирование 12.10.2006 - 23:52:01 ]

edge (не проверено)

Убери лишнюю авторизацию через PAM, оставь только sql. И разберись с запросом на который ругается Unknown column 'userid' in 'where clause'. Это можно сделать, как я уже говорил, включив логи в mysql. Все, дальше сам.

eMax
Не в сети
Зарегистрирован: 20/09/2010

Всем спасибо за советы, я его все же победил. Там не столько проблемы с запросами были, но и еще и с правами доступа (uid, gid).

Но в процессе эксплуатации возник еще один прикол:

MYSQL база пользователей и сама почта были перенесены со старого сервера (postfix, courier). 90% пользователей даже не заметили перехода на новый сервер. А вот у оставшихся 2 интересных бага. Некоторые не могут залогиниться, все правится пересозданием пользователя в базе. А у некоторых почему-то создается НОВАЯ папка для почты с таким же именем как и была, но первая буква - заглавная. При этом exim почту раскладывает в старую папку (т. е. с маленькой буквы), а dovecot пытается ее искать в новой папке (с заглавной буквы).

Я понимаю что это прикол именно dovecot, который и создает новые папки, но почему он так делает не понятно??? В MYSQL базе все имена юзверей - с маленькой буквы, все данные и exim и dovecot берут из одной и тойже базы.
У кого нибудь есть предложения?

edge (не проверено)

Попробуй auth_username_format = %Lu, если конечно у тебя все логины маленькими буквами в базе, если нет - то будут косяки.

[ Редактирование 25.10.2006 - 08:29:37 ]

eMax
Не в сети
Зарегистрирован: 20/09/2010

Спасибо! auth_username_format = %Lu - самое оно, помогло сразу и на 100%!!!

RSS-материал