Интересная проблема возникла!
В начале поставил сервер (courier-imap) пока тестировал использовал обычый метод аутентификации, всё работало!!!
Потом перешел на MD5-CRAM всё ок было.
Сейчас пытаюсь свести чтоб и то и то работало, не получается!
Обычная аутентифиация проваливается (Пишет не верный логин), а шифрованый с теми же параметрами работат, какие варианты только не пробовал для POP3AUTH и POP3AUTH_ORIG: 'LOGIN','PLAIN','CRAM-MD5' (все возможные сосетания) - результат один и тотже будто он эти параметры и не смотрит, аналогично для POP3-ssl,IMAP,IMAP-ssl,ESMTP,ESMTP-ssl.
Как лечить???
POP3AUTH="LOGIN CRAM-MD5"Где и в каком виде хранятся пароли?
>POP3AUTH="LOGIN CRAM-MD5"
>
>Где и в каком виде хранятся пароли?
В MySql
В одном поле не шифрованые пароли, в отдельном хеши
>>POP3AUTH="LOGIN CRAM-MD5"
>>
>>Где и в каком виде хранятся пароли?
>
>
>В MySql
>В одном поле не шифрованые пароли, в отдельном хешиМожет у вас не точно указаны вот эти параметры в authmysqlrc(authdaemon)
#MYSQL_CRYPT_PWFIELD crypt
#MYSQL_CLEAR_PWFIELD passwdИли быть может, вы просто забыли рестартануть authdaemon после внесения изменений в конфигурацию?
>>>POP3AUTH="LOGIN CRAM-MD5"
>>>
>>>Где и в каком виде хранятся пароли?
>>
>>
>>В MySql
>>В одном поле не шифрованые пароли, в отдельном хеши
>
>Может у вас не точно указаны вот эти параметры в authmysqlrc(authdaemon)
>
>#MYSQL_CRYPT_PWFIELD crypt
>#MYSQL_CLEAR_PWFIELD passwd
Наврядли, включил кроме этого логирование на MySql SQL скрипты правильно отрабатывают,
более того 1 в 1 выполнял из вручную, мускул правильно возвращает, и хешь и открытый пароль
Пробовал и через MYSQL_SELECT_CAUSE сам этот SELECT написать, тоже самое записи возврщает, но работает только с MD5
>POP3AUTH="LOGIN CRAM-MD5"
>
>Где и в каком виде хранятся пароли?Увы но
POP3AUTH="LOGIN CRAM-MD5"
не прокатило!!!
>>POP3AUTH="LOGIN CRAM-MD5"
>>
>>Где и в каком виде хранятся пароли?
>
>Увы но
>POP3AUTH="LOGIN CRAM-MD5"
>не прокатило!!!а в логи не ругается как-нибудь?
>>>POP3AUTH="LOGIN CRAM-MD5"
>>>
>>>Где и в каком виде хранятся пароли?
>>
>>Увы но
>>POP3AUTH="LOGIN CRAM-MD5"
>>не прокатило!!!
>
>а в логи не ругается как-нибудь?
Запустил уже POP3D с параметром DEBUG_LOGIN=2
Проверяю по логам и вот что вижу
Jul 6 15:09:21 mx courierpop3login: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=USER
Jul 6 15:09:21 mx courierpop3login: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=PASS
Jul 6 15:09:21 mx courierpop3login: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], username=test@domen.ru
Jul 6 15:09:21 mx courierpop3login: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], password=***
Jul 6 15:09:26 mx courierpop3login: LOGIN FAILED, ip=[::ffff:192.168.4.202]
>>>POP3AUTH="LOGIN CRAM-MD5"
>>>
>>>Где и в каком виде хранятся пароли?
>>
>>Увы но
>>POP3AUTH="LOGIN CRAM-MD5"
>>не прокатило!!!
>
>а в логи не ругается как-нибудь?
В случае с MD5 всё ок (для POP3 таже картина)
Jul 6 15:19:25 mx pop3d-ssl: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=AUTH
Jul 6 15:19:25 mx pop3d-ssl: LOGIN, user=test@domain.ru, ip=[::ffff:192.168.4.202]
Jul 6 15:19:25 mx pop3d-ssl: LOGOUT, user=test@domain.ru, ip=[::ffff:192.168.4.202], top=0, retr=0, time=0
>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>
>>>>Где и в каком виде хранятся пароли?
>>>
>>>Увы но
>>>POP3AUTH="LOGIN CRAM-MD5"
>>>не прокатило!!!
>>
>>а в логи не ругается как-нибудь?
>
>
>В случае с MD5 всё ок (для POP3 таже картина)
>Jul 6 15:19:25 mx pop3d-ssl: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=AUTH
>Jul 6 15:19:25 mx pop3d-ssl: LOGIN, user=test@domain.ru, ip=[::ffff:192.168.4.202]
>Jul 6 15:19:25 mx pop3d-ssl: LOGOUT, user=test@domain.ru, ip=[::ffff:192.168.4.202], top=0, retr=0, time=0
>
Кроме всего прочего не слушается DEBUG_LOGIN в модуле authdaemon
Дистрибутив courier-0.47-4sarge5 (OS Debian)
>>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>>
>>>>>Где и в каком виде хранятся пароли?
>>>>
>>>>Увы но
>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>не прокатило!!!
>>>
>>>а в логи не ругается как-нибудь?
>>
>>
>>В случае с MD5 всё ок (для POP3 таже картина)
>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=AUTH
>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN, user=test@domain.ru, ip=[::ffff:192.168.4.202]
>>Jul 6 15:19:25 mx pop3d-ssl: LOGOUT, user=test@domain.ru, ip=[::ffff:192.168.4.202], top=0, retr=0, time=0
>>
>Кроме всего прочего не слушается DEBUG_LOGIN в модуле authdaemon
>Дистрибутив courier-0.47-4sarge5 (OS Debian)
Вчём трабл сам по себе нашел!!!
Оказывается он(authmysql) при любом методе аутентификации брал шифрованый хеш!!!
и его сравнивал с открытым паролем!!!
Но повторюсь в настройках модуля прописаны коректно, почему так происходит понять не могу!!!
Как лечить тоже!!!
Вопрос остаётся открытым!!!
>>>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>>>
>>>>>>Где и в каком виде хранятся пароли?
>>>>>
>>>>>Увы но
>>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>>не прокатило!!!
>>>>
>>>>а в логи не ругается как-нибудь?
>>>
>>>
>>>В случае с MD5 всё ок (для POP3 таже картина)
>>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=AUTH
>>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN, user=test@domain.ru, ip=[::ffff:192.168.4.202]
>>>Jul 6 15:19:25 mx pop3d-ssl: LOGOUT, user=test@domain.ru, ip=[::ffff:192.168.4.202], top=0, retr=0, time=0
>>>
>>Кроме всего прочего не слушается DEBUG_LOGIN в модуле authdaemon
>>Дистрибутив courier-0.47-4sarge5 (OS Debian)
>
>
>Вчём трабл сам по себе нашел!!!
>Оказывается он(authmysql) при любом методе аутентификации брал шифрованый хеш!!!
>и его сравнивал с открытым паролем!!!
>Но повторюсь в настройках модуля прописаны коректно, почему так происходит понять не
>могу!!!
>Как лечить тоже!!!
>Вопрос остаётся открытым!!!Обновил до версии 0.53.2
Покрайней мерез стал писать логи аутентификации
вот что эта зараза выдаёт!!!
Jul 7 10:49:42 mx authdaemond: received auth request, service=pop3, authtype=login
Jul 7 10:49:42 mx authdaemond: authmysql: trying this module
Jul 7 10:49:42 mx authdaemond: SQL query: SELECT login, crypt, clear, uid, gid, home, maildir, quota, name, auxoptions FROM user WHERE login = "test@domain.ru"
Jul 7 10:49:42 mx authdaemond: supplied password '****' does not match encrypted password '378b243e220ca493'
Jul 7 10:49:42 mx authdaemond: authmysql: REJECT - try next module
Jul 7 10:49:42 mx authdaemond: FAIL, all modules rejected
Подскажите!!!
Почему он с зашифрованным паролем сравнивает!!!???
Может подскажет кто??? Может какие мысли есть!!!???
>>>>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>>>>
>>>>>>>Где и в каком виде хранятся пароли?
>>>>>>
>>>>>>Увы но
>>>>>>POP3AUTH="LOGIN CRAM-MD5"
>>>>>>не прокатило!!!
>>>>>
>>>>>а в логи не ругается как-нибудь?
>>>>
>>>>
>>>>В случае с MD5 всё ок (для POP3 таже картина)
>>>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN: DEBUG: ip=[::ffff:192.168.4.202], command=AUTH
>>>>Jul 6 15:19:25 mx pop3d-ssl: LOGIN, user=test@domain.ru, ip=[::ffff:192.168.4.202]
>>>>Jul 6 15:19:25 mx pop3d-ssl: LOGOUT, user=test@domain.ru, ip=[::ffff:192.168.4.202], top=0, retr=0, time=0
>>>>
>>>Кроме всего прочего не слушается DEBUG_LOGIN в модуле authdaemon
>>>Дистрибутив courier-0.47-4sarge5 (OS Debian)
>>
>>
>>Вчём трабл сам по себе нашел!!!
>>Оказывается он(authmysql) при любом методе аутентификации брал шифрованый хеш!!!
>>и его сравнивал с открытым паролем!!!
>>Но повторюсь в настройках модуля прописаны коректно, почему так происходит понять не
>>могу!!!
>>Как лечить тоже!!!
>>Вопрос остаётся открытым!!!
>
>Обновил до версии 0.53.2
>Покрайней мерез стал писать логи аутентификации
>вот что эта зараза выдаёт!!!
>Jul 7 10:49:42 mx authdaemond: received auth request, service=pop3, authtype=login
>Jul 7 10:49:42 mx authdaemond: authmysql: trying this module
>Jul 7 10:49:42 mx authdaemond: SQL query: SELECT login, crypt, clear,
>uid, gid, home, maildir, quota, name, auxoptions FROM user WHERE login
>= "test@domain.ru"
>Jul 7 10:49:42 mx authdaemond: supplied password '****' does not match
>encrypted password '378b243e220ca493'
>Jul 7 10:49:42 mx authdaemond: authmysql: REJECT - try next module
>
>Jul 7 10:49:42 mx authdaemond: FAIL, all modules rejected
>Подскажите!!!
>Почему он с зашифрованным паролем сравнивает!!!???
>Может подскажет кто??? Может какие мысли есть!!!???А что Вам мешает заглянуть в исходники courier-authlib-0.58?
Cмотрим файл authmysql.c, строка 65. Подправить ее под себя так тяжело?diff -u authmysql.c.orig authmysql.c
--- authmysql.c.orig Fri Jul 7 11:27:57 2006
+++ authmysql.c Fri Jul 7 11:34:01 2006
@@ -58,11 +58,14 @@
{
if (authcheckpassword(pass,authinfo->cryptpw))
{
- errno=EPERM;
- return (-1); /* User/Password not found. */
+ if (!authinfo->clearpw) {
+ errno=EPERM;
+ return (-1); /* User/Password not found. */
+ }
}
}
- else if (authinfo->clearpw)
+
+ if (authinfo->clearpw)
{
if (strcmp(pass, authinfo->clearpw))
{
PS. Должно сработать, сам не проверял. ;-)))
>А что Вам мешает заглянуть в исходники courier-authlib-0.58?
>Cмотрим файл authmysql.c, строка 65. Подправить ее под себя так тяжело?
>
>diff -u authmysql.c.orig authmysql.c
>--- authmysql.c.orig Fri Jul 7 11:27:57 2006
>+++ authmysql.c Fri Jul 7 11:34:01 2006
>@@ -58,11 +58,14 @@
> {
> if (authcheckpassword(pass,authinfo->cryptpw))
>
> {
>-
>
>errno=EPERM;
>-
>
>return (-1); /* User/Password not found. */
>+ if (!authinfo->clearpw) {
>+
>
> errno=EPERM;
>+
>
> return (-1);
> /* User/Password not found. */
>+
>
>}
>
> }
> }
>- else if (authinfo->clearpw)
>+
>+ if (authinfo->clearpw)
> {
> if (strcmp(pass, authinfo->clearpw))
>
> {
>
>
>PS. Должно сработать, сам не проверял. ;-)))Чесно говоря решение не из изящьных!!!
Спасибо что натолкнули на мысль порыться в исходникак... многое прояснило!!!
Я то думал что они смотрят сверяют пасы в зависимости от типа аутентификации... окакзалось не так!!! ;-(((Оказалось проще не пересобирать библиотеку а просто в конфиге убрать параметр
MYSQL_CRYPT_PWFIELD и во всех SELECT-ах поле crypt поменять на пустую строку.Всем спасибо!!!
Насколько я понял по этим строкам исходника, если используется авторизация по хешу, то не используется авторизация по паролю. С патчем должно работать в обоих случаях, ИМХО нужно тестить. Удачи!
>Насколько я понял по этим строкам исходника, если используется авторизация по хешу,
>то не используется авторизация по паролю. С патчем должно работать в
>обоих случаях, ИМХО нужно тестить. Удачи!А теперь фишка если закоментарить MYSQL_CRYPT_PWFIELD и во всех SELECT-ах поле crypt поменять на пустую строку.
То все методы авторизации начинают работать...
Т.Е. если он не находит хеша, то он его в открытом виде берёт из базы и генерит хешь на лету и таким макаром всё работает...
>>Насколько я понял по этим строкам исходника, если используется авторизация по хешу,
>>то не используется авторизация по паролю. С патчем должно работать в
>>обоих случаях, ИМХО нужно тестить. Удачи!
>
>А теперь фишка если закоментарить MYSQL_CRYPT_PWFIELD и во всех SELECT-ах поле crypt
>поменять на пустую строку.
>То все методы авторизации начинают работать...
>Т.Е. если он не находит хеша, то он его в открытом виде
>берёт из базы и генерит хешь на лету и таким макаром
>всё работает...Так задачу которую Вы решали, подразумевала использование как хеша в базе так и пароля. Или я не прав?
>>>Насколько я понял по этим строкам исходника, если используется авторизация по хешу,
>>>то не используется авторизация по паролю. С патчем должно работать в
>>>обоих случаях, ИМХО нужно тестить. Удачи!
>>
>>А теперь фишка если закоментарить MYSQL_CRYPT_PWFIELD и во всех SELECT-ах поле crypt
>>поменять на пустую строку.
>>То все методы авторизации начинают работать...
>>Т.Е. если он не находит хеша, то он его в открытом виде
>>берёт из базы и генерит хешь на лету и таким макаром
>>всё работает...
>
>Так задачу которую Вы решали, подразумевала использование как хеша в базе так
>и пароля. Или я не прав?
На самом деле мне надо было заставить работать почтовик и с открытым паролем и с хешем, не обязательно в базе при этом хранить хешь, т.к. для авторизации с открытым паролем и так необходим открытый пароль.