The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Чудные преобразования имени пользователя (Dovecot - Postfix)"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Почта / Linux)
Изначальное сообщение [ Отслеживать ]

"Чудные преобразования имени пользователя (Dovecot - Postfix)"  +/
Сообщение от billybons2006 email(ok) on 15-Сен-11, 18:04 
Домен ivelle.ru - виртуальный в данном случае. В Outlook логин указан как "ivanov.ilya@ivelle.ru", 223.132.78.178 - ip моего роутера, за которым сидит Outlook, сам сервер на VDS хостинге (CentOS 6 x86).

Dovecot 2.0.beta6 (установлен из rpm) при авторизации почтового клиента зачем-то убирает доменную часть логина и потом выдает ошибку авторизации. В логах это выглядит примерно (сократил из-за размера) так:

(1) auth: Debug: auth(ivanov.ilya@ivelle.ru,223.132.78.178): username changed ivanov.ilya@ivelle.ru -> ivanov.ilya

(2) auth: Debug: client out: OK     1       user=ivanov.ilya

(3) auth: Debug: sql(ivanov.ilya,223.132.78.178): SELECT CONCAT(username,'@',userrealm) AS user, '500' AS uid, '500' AS gid FROM virtual_users WHERE username = 'ivanov.ilya' AND userrealm = '' AND active='1'

Ну а дальше ошибка авторизации.

Суть проблемы: в таблице virtual_users в поле username хранится логин, в поле userrealm - домен виртуального пользователя. Я не понимаю, почему получив полный логин (это видно в начале строки (1), потом происходит обрезание доменной части и пошло и поехало.

На всякий случай вырезка из master.cf:
dovecot unix    -       n       n       -       -      pipe
  flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient}

Помогите понять, плиз!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Чудные преобразования имени пользователя (Dovecot - Postfix)"  +/
Сообщение от lavr email on 15-Сен-11, 21:41 
>[оверквотинг удален]
> userrealm - домен виртуального пользователя. Я не понимаю, почему получив полный
> логин (это видно в начале строки (1), потом происходит обрезание доменной
> части и пошло и поехало.
> На всякий случай вырезка из master.cf:
> dovecot unix    -      
> n       n    
>    -       -
>      pipe
>   flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -d ${recipient}
> Помогите понять, плиз!

зависит от метода аутентикации, верхнее расписано в wiki2 про MySQL черным по белому

http://wiki2.dovecot.org/AuthDatabase/SQL

By default MySQL does case-insensitive string comparisons, so you may have a problem if your users are logging with different as "user", "User" and "uSer". To fix this, you can make the SQL database return a "user" field, which makes Dovecot modify the username to the returned value. Note that if you're using separate user and domain fields, a common problem is that you're returning only the "user" field from the database. This drops out the domain from the username. So make sure you're returning a concatenated user@domain string or username/domain fields separately. See the examples below.

если используете SASL -> смотрите какая схема используется и как

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Чудные преобразования имени пользователя (Dovecot - Postfix)"  +/
Сообщение от billybons2006 email(ok) on 16-Сен-11, 10:49 
> http://wiki2.dovecot.org/AuthDatabase/SQL

Как я понял, доменная часть просто отбрасывается. Можно "сохранить" доменную часть, дополнив password_query.

В /etc/dovecot/dovecot-mysql.conf изменил запрос password_query:

Было так (по идее, ну зачем нужно select домен в запросе пароля???):
password_query = SELECT username AS user,userpassword AS password FROM virtual_users WHERE username = '%n' AND userrealm = '%d' AND active='1'

Сделал так (добавил "userrealm AS domain"):

password_query = SELECT username AS user,userrealm AS domain,userpassword AS password FROM virtual_users WHERE username = '%n' AND userrealm = '%d' AND active='1'

Спасибо! Мне бы в голову не пришло, что это так решается...
PS: У других userrealm может быть как угодно назван в базе данных. У меня это userrealm, у вас м.б. domain, userdomain и пр.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру