LINUX.ORG.RU
ФорумAdmin

exim+mysql


0

0

Здравствуйте всем! Проблема следующая. Ecть exim, пользователи хранятся в MySQL. Таблица с пользователями такая

mysql> CREATE TABLE users ( -> id varchar(64) NOT NULL default '', -> crypt varchar(64) NOT NULL default '', -> passwd varchar(64) NOT NULL default '', -> uid int(10) unsigned default '8', -> gid int(10) unsigned default '12', -> mbox_host varchar(128) NOT NULL default 'example.ru', -> shell varchar(32) binary default '/sbin/nologin', -> home varchar(128) binary default '/home/vmail/domains', -> quota tinyint(4) default '15', -> active enum('Y','N') default 'Y', -> PRIMARY KEY (id,mbox_host));

Не работает smtp аутентификация. Используется метод cram-md5:

auth_cram_md5: driver = cram_md5 public_name = CRAM-MD5 server_secret = ${lookup mysql{SELECT passwd FROM users \ WHERE id = '${qote_mysql:${local_part:$auth1}}' \ AND mbox_host = '${quote_mysql:${domain:$auth1}}' \ AND active = 'Y'}{$value}fail} server_set_id = $auth1

exim пишет что некорректный данные типа аутентификационные. После включения логов mysql выяснилось, что в запросе в этом mbox_host=''. Поэтому запрос ниче не возвращает. Я так понимаю, что строка '${quote_mysql:${domain:$auth1}}' должна вернуть доменную часть адреса отправителя. аутентификация работает, если логин пользователя в почтовом клиенте представить в виде имя пользователя@домен. но тогда почтовики такие письма не принимают, так как адрес отправителя у них виден как имя пользователя@домен@домен. Что делать? ) За одно, скажите плиз, что делает оператор qote_mysql, че то из доки не ясно полностью. И правильно ли я понимаю, что $auth1 - это полный адрес отправителя, а не только его local_part?

Заранее спасибо.

anonymous

Ответ на: комментарий от osipen

это конечно интересная вещь, но мне пока надо это поставить ) А то не хотит никак работать )

anonymous
()

Если честно, qote_mysql, это несколько отличается от правильного синтаксиса )

Вот рабочая версия. Прошу учесть, что в таблице users поле password_smtp должен содержать пароль открытым текстом, иначе работать не будет!
auth_cram_md5:
driver = cram_md5
public_name = CRAM-MD5
server_secret = ${lookup mysql{SELECT password_smtp FROM users \
WHERE login = '${quote_mysql:${local_part:$1}}' \
AND domain = '${quote_mysql:${domain:$1}}' \
AND active = '1'}{$value}fail}
server_set_id = $1

anonymous
()
Ответ на: комментарий от anonymous

насчет quote я погорячился здесь ) но в конфиге оно правильно написано у меня. Это я здесь ошибся ) У меня все один в один как у Вас в описании аутентификатора cram-md5 и пароль в открытом виде. А не шарит )не отрабатывает строка '${quote_mysql:${domain:$auth1}}'. мож какие другие опции eximа на это влияют?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.