URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 74791
[ Назад ]

Исходное сообщение
"courier-imap authmysqlrc помогите настроить"

Отправлено visitor , 20-Июн-07 22:54 
Здравствуйте.

Помогите пож настроить сабж, если пароли в поле password храняться шифрованными mysql-фукцией PASSWORD.

cat authmysqlrc

MYSQL_SERVER            localhost
MYSQL_USERNAME          exim
MYSQL_PASSWORD          exim
MYSQL_PORT              3306
#MYSQL_OPT              0
MYSQL_DATABASE          exim
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
#MYSQL_CLEAR_PWFIELD     password
MYSQL_UID_FIELD         26
MYSQL_GID_FIELD         6
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        CONCAT('/var/mail/exim/','')
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     CONCAT('/var/mail/exim/',maildir)
MYSQL_QUOTA_FIELD       quota

tail -f /var/log/maillog

Jun 20 21:35:14 mail pop3d: LOGIN FAILED, user=senigor, ip=[193.232.248.53]

Как настроить? Задолбался уже :(


Содержание

Сообщения в этом обсуждении
"courier-imap authmysqlrc помогите настроить"
Отправлено gindos , 21-Июн-07 03:42 
Добрый день.

>Помогите пож настроить сабж, если пароли в поле password храняться шифрованными mysql-фукцией PASSWORD.
я лично шифрую пароли при помощи md5 и все проходит на ура


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 09:25 
>Добрый день.
>
>>Помогите пож настроить сабж, если пароли в поле password храняться шифрованными mysql-фукцией PASSWORD.
>я лично шифрую пароли при помощи md5 и все проходит на ура
>

Это понятно, у меня с авторизацией на курьере тоже никогда не возникало проблем если пароли лежали в мд5 или в клеартексте, но сейчас в наследство досталась база позователей пароли которых ширвованы ф-ей PASSWORD и как теперь быть? Подскажите мож кто сталкивался.


"courier-imap authmysqlrc помогите настроить"
Отправлено SubGun , 21-Июн-07 11:00 
DEBUG_LOGIN=2 поставь и дай лог

"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 12:10 
>DEBUG_LOGIN=2 поставь и дай лог


Jun 21 11:08:37 mail pop3d: Connection, ip=[xxx.xxx.xxx.xx]
Jun 21 11:08:37 mail authdaemond: received auth request, service=pop3, authtype=login
Jun 21 11:08:37 mail authdaemond: authmysql: trying this module
Jun 21 11:08:37 mail authdaemond: SQL query: SELECT username, password, "", 26, 6, CONCAT('/var/mail/exim/',''), CONCAT('/var/mail/exim/',maildir), quota, name, "" FROM mailbox WHERE username = "senigor"
Jun 21 11:08:37 mail authdaemond: supplied password 'nthvbyfk2' does not match encrypted password '1de4a0e000e61314'
Jun 21 11:08:37 mail authdaemond: authmysql: REJECT - try next module
Jun 21 11:08:37 mail authdaemond: FAIL, all modules rejected
Jun 21 11:08:45 mail pop3d: Disconnected, ip=[193.232.248.53]

ну вот о чем я и говорю. Т.е. клиент пытаеться передать пароль "nthvbyfk2" а он ес-но не совпадает с криптованным тем же паролем 1de4a0e000e61314 который в поле password.
Как быть?


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 16:34 
Неужели нет решения?


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 17:55 
кто-нибудь может что нибудь посоветовать? гугл молчит. Если в поле пароля прописывать clearpasswd и устанавливать MYSQL_CLEAR_PWFIELD, то все работает. Но как быть в моей ситуации? HELP !!!!!!!

"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 19:41 
OK. Может можно как-то преобразовать пароли 1de4a0e000e61314 к cleartext ???
Кто нибудь ответит?

"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 21-Июн-07 21:53 
>OK. Может можно как-то преобразовать пароли 1de4a0e000e61314 к cleartext ???
>Кто нибудь ответит?

АУУУУУУУУУУУУУУУУУУУ !!!
Кто нибудь поможет?


"courier-imap authmysqlrc помогите настроить"
Отправлено gindos , 22-Июн-07 01:51 
>АУУУУУУУУУУУУУУУУУУУ !!!
>Кто нибудь поможет?
да не суетись ты... нибудь-чего придумаем... :-)


"courier-imap authmysqlrc помогите настроить"
Отправлено Hammer , 22-Июн-07 10:25 
>>OK. Может можно как-то преобразовать пароли 1de4a0e000e61314 к cleartext ???
>>Кто нибудь ответит?
>
>АУУУУУУУУУУУУУУУУУУУ !!!
>Кто нибудь поможет?

MYSQL_SERVER            localhost
MYSQL_USERNAME          mail
MYSQL_PASSWORD          mail
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          mail
MYSQL_USER_TABLE        users
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         125
MYSQL_GID_FIELD         6
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        '/var/mail/virtual/'
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     maildir
MYSQL_QUOTA_FIELD       quota

У меня так выглядит. Все работает. пароли зашифрованы функцией CRYPT


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 22-Июн-07 17:48 
решение найдено наполовину :)

Это использование cyrus_imapd + pwcheck_mysql, который

is a an authentication module for the Cyrus IMAP server. It allows IMAP mail users to be authenticated against a MySQL database. This is nice because it allows you to have IMAP mail users without having regular UNIX accounts. There are probably many caveats to using this module including:

o Passwords will show up in the MySQL log if you have logging on your MySQL server, this is the default. Although this module is designed to encrypt passwords as they are stored in the database, they can still be seen in plain text in the SQL logs this is due to the fact that I am using password () in my SQL statement, a MySQL specific function. If anyone knows how to encrypt the password before doing the "select" statement, that would be great.

Но не хочеться использовать этот cyrus. Хочеться курьер-имап. Может кто знает похожий модуль для курьер-имапа?


"courier-imap authmysqlrc помогите настроить"
Отправлено ALex_hha , 23-Июн-07 10:17 
Если не ошибаюсь, то тебе поможет dovecot.



"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 24-Июн-07 19:35 
>Если не ошибаюсь, то тебе поможет dovecot.

Спасибо тебе огромное!!! Именно то что нужно:

If the passwords are in some special format in the SQL server that Dovecot doesn't recognize, it's still possible to use them. Change the SQL query to return NULL as the password and return the row only if the password matches. The password is in %w variable.

For example:

# NOTE: '\' line splitting is used only for readability, currently Dovecot doesn't support it
password_query = SELECT NULL AS password, userid AS user FROM users WHERE userid = '%u' AND mysql_pass = password('%w')

Вот решение проблемы !!!


"courier-imap authmysqlrc помогите настроить"
Отправлено SubGun , 25-Июн-07 10:44 
>Вот решение проблемы !!!

Решение проблемы - достаточно прямые руки.


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 25-Июн-07 14:35 
>>Вот решение проблемы !!!
>
>Решение проблемы - достаточно прямые руки.

Что же вы молчали 4 дня, пряморукий Вы наш. Ну вообще-то еще не поздно, я с удовольствием узнаю решение этой проблемы от Вас для курьер-имапа. Я весь во внимании.


"courier-imap authmysqlrc помогите настроить"
Отправлено SubGun , 25-Июн-07 15:35 
>Что же вы молчали 4 дня, пряморукий Вы наш. Ну вообще-то еще
>не поздно, я с удовольствием узнаю решение этой проблемы от Вас
>для курьер-имапа. Я весь во внимании.

Мне теперь нужно поставить Courier, чтобы вам помочь? Чтобы решить проблему, нужно пытаться это сделать, а не подходить кардинально, устанавливая Dovecot. Уж поверьте, если бы возможности доставать криптованные пароли из базы не было бы, такая функция не была бы включена в конфиг. Уж будьте уверены, если я возьмусь за решение данного вопроса, я сделаю. Однако решать за вас ваши же проблемы я не намерен.


"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 25-Июн-07 15:56 
>>Что же вы молчали 4 дня, пряморукий Вы наш. Ну вообще-то еще
>>не поздно, я с удовольствием узнаю решение этой проблемы от Вас
>>для курьер-имапа. Я весь во внимании.
>
>Мне теперь нужно поставить Courier, чтобы вам помочь? Чтобы решить проблему, нужно
>пытаться это сделать, а не подходить кардинально, устанавливая Dovecot. Уж поверьте,
>если бы возможности доставать криптованные пароли из базы не было бы,
>такая функция не была бы включена в конфиг.

OK. Скажите мне пожалуйста ф-цию которая достает криптованный мускульной ф-цией PASSWORD пароль и сравнивает его с паролем полученным в PLAIN от клиента. Курьер-аузлиб просто этого не может.

>Уж будьте уверены,
>если я возьмусь за решение данного вопроса, я сделаю. Однако решать
>за вас ваши же проблемы я не намерен.

Не сомневаюсь, вы попросили дебаг, я вам предоставил...


"courier-imap authmysqlrc помогите настроить"
Отправлено SubGun , 25-Июн-07 16:00 
>OK. Скажите мне пожалуйста ф-цию которая достает криптованный мускульной ф-цией PASSWORD пароль
>и сравнивает его с паролем полученным в PLAIN от клиента. Курьер-аузлиб
>просто этого не может.

Да, признаю:
MYSQL_CRYPT_PWFIELD - name of the field containing the crypt-ed password (either MYSQL_CRYPT_PWFIELD or MYSQL_CLEAR_PWFIELD is required). NOTE: this password must be crypt-ed using the operating system's crypt function, NOT MySQL's crypt function. MySQL's crypt() function is non-standard and is not generally compatible with the operating system's crypt function.

Только путем напильника эту проблему решить можно.


"courier-imap authmysqlrc помогите настроить"
Отправлено SubGun , 25-Июн-07 16:09 
Так же, весьма интересно, что
ENCRYPT(str[,salt]) 
Шифрует аргумент str, используя вызов системной функции кодирования crypt() из Unix.
Если функция crypt() в данной операционной системе недоступна, функция ENCRYPT() всегда возвращает NULL. Функция ENCRYPT() игнорирует все символы в аргументе str, за исключением первых восьми, по крайней мере в некоторых операционных системах - это определяется тем, как реализован системный вызов базовой функции crypt().

Вопрос в том, почему, если ENCRYPT использует "системную функцию кодирования crypt() из Unix", то "MySQL's crypt() function is non-standard and is not generally compatible with the operating system's crypt function"? Чего-то я не понимаю.

"courier-imap authmysqlrc помогите настроить"
Отправлено visitor , 25-Июн-07 20:55 
>Так же, весьма интересно, что
>
ENCRYPT(str[,salt]) 
>Шифрует аргумент str, используя вызов системной функции кодирования crypt() из Unix.
>Если функция crypt() в данной операционной системе недоступна, функция ENCRYPT() всегда возвращает
>NULL. Функция ENCRYPT() игнорирует все символы в аргументе str, за исключением
>первых восьми, по крайней мере в некоторых операционных системах - это
>определяется тем, как реализован системный вызов базовой функции crypt().

>Вопрос в том, почему, если ENCRYPT использует "системную функцию кодирования crypt() из
>Unix", то "MySQL's crypt() function is non-standard and is not generally
>compatible with the operating system's crypt function"? Чего-то я не понимаю.
>


Скорее всего когда они писали "MySQL's crypt() function is non-standard ..." они не подразумевали системную crypt(). А хотели сказать типа что ф--ция криптования мускула, не такая как системная. Ну решили так выразить свою мысль наверно:) Короче хез :) Факт остаеться то что ф-ция мускула PASSWORD криптует не так как системная crypt()


"courier-imap authmysqlrc помогите настроить"
Отправлено ALex_hha , 26-Июн-07 10:31 
> Факт остаеться то что ф-ция мускула PASSWORD
> криптует не так как системная crypt()
естественно, об этом написано в документации