Author Topic: Проблема с авторизацией в courier-imap  (Read 3317 times)

0 Members and 1 Guest are viewing this topic.

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Недавно настроил postfix+couirier-imap+cyrus-sasl+Postgres+борьба со спамом все это стоит на FreeBSD
База пользователей хранится в виртуальной таблице в базе.
Проблема возникла при авторизации пользователей по pop3... Имена пользователей хранятся в базе в нижнем регистре, например, stranger@domain, а некоторые пользователи при авторизации указывают Stranger@domain. Как заставить курьера преобразовывать имена пользователей в нижний регистр перед авторизацией...
Я понимаю, что это нарушение RFC, но в организации так уже было настроено, а старых конфигов почтовика у меня нет
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline never hood

  • Hero Member
  • *****
  • Posts: 845
  • Karma: +16/-10
  • www.4job.co
    • Работа, которую ты искал
Проблема с авторизацией в courier-imap
« Reply #1 on: March 24, 2008, 13:33:45 »
сделать правило в Postgres?
create rule auth_anycase as on select to mail_users do INSTEAD select * from mail_users where user_name = lower(name)...

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Проблема с авторизацией в courier-imap
« Reply #2 on: March 24, 2008, 13:36:45 »
Quote from: never hood
сделать правило в Postgres?
create rule auth_anycase as on select to mail_users do INSTEAD select * from mail_users where user_name = lower(name)...
Э... Точно... Что-то я дурканул... Спасибо...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Проблема с авторизацией в courier-imap
« Reply #3 on: March 25, 2008, 17:59:49 »
Немного покопавшись понял что это не решение... Проблема в том что нужно приводить не существующее в базе поле в нижний регистр, а то что передается и участвует в проверочном выражении после WHERE - это одна проблема... Вторая заключается в том, что rule на select в постгресе в таком виде может быть переопределено только на таблицу без индексов и primary keys, что естествено не есть гуд.

Но проблему я все-таки решил и частично средствами базы... Привожу решение - вдруг кому понадобится...
В authpgsqlrc определяем свое правило для запроса - примерно так
Code: [Select]
PGSQL_SELECT_CLAUSE  SELECT lower(username)  as тут прописываем какие поля базы нужно выбрать FROM таблица WHERE lower(username) = lower('$(local_part)@$(domain)')
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]