Страница 1 из 1

Exim Authenfication проблем :(

Добавлено: 2012-07-14 23:45:08
EGG01
Дано:

Установлена связка Exim+Dovecot+RoundCube (ну и соответственно для руления пользователями - postfixadmin, делалось практически по статье http://www.lissyara.su/articles/freebsd ... mtp_relay/, с небольшими поправками), на сервере есть несколько доменов;
Почта отлично приходит, раскидывается по доменам/пользователям - тут все хорошо.

Проблема:

Не могу разобраться с аутенфикацией моих пользователей при отправке почты. Делал так как написано в статье:

Код: Выделить всё

auth_plain:
    driver = plaintext
    public_name = PLAIN
    server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth2}' AND `password` = '${quote_mysql:$auth3}'}{yes}{no}}
    server_prompts = :
    server_set_id = $auth2

auth_login:
    driver = plaintext
    public_name = LOGIN
    server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}'}{yes}{no}}
    server_prompts = Username:: : Password::
    server_set_id = $auth1

auth_cram_md5:
    driver = cram_md5
    public_name = CRAM-MD5
    server_secret = ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth1}'}{$value}fail}
    server_set_id = $auth2
- не работает, получаю отлуп (пробовал с разных клиентов, разные методы аутенфикации):

Код: Выделить всё

2012-07-14 20:44:57 auth_login authenticator failed for ([192.168.100.8]) [192.168.100.8] I=[xxx.xxx.xxx.xxx]:25: 535 Incorrect authentication data (set_id=alena@abc.ru)
2012-07-14 20:59:53 auth_cram_md5 authenticator failed for ns.domain.ru (webmail.abc.ru) [xxx.xxx.xxx.xxx] I=[xxx.xxx.xxx.xxx]:25 U=80: 535 Incorrect authentication data
Сделал по другому, раз exim умеет делать аутенфикацию пользователей через dovecot прописал аутенфикацию вот так:

Код: Выделить всё

auth_plain:
    driver = dovecot
    public_name = PLAIN
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1

auth_login:
    driver = dovecot
    public_name = LOGIN
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1

auth_cram_md5:
    driver = dovecot
    public_name = CRAM-MD5
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1
По логу dovecot-a все отлично, аутенфикация прошла:

Код: Выделить всё

Jul 15 00:24:56 auth-worker(22954): Info: mysql(localhost): Connected to database mail
Jul 15 00:24:56 imap-login: Info: Login: user=<alena@abc.ru>, method=CRAM-MD5, rip=xxx.xxx.xxx.xxx, lip=xxx.xxx.xxx.xxx, mpid=22957, secured, session=<NlxQUM7EQgDCCIVa>
Jul 15 00:24:57 imap(alena@abc.ru): Info: Disconnected: Logged out in=12 out=348
НО exim говорит абсолютно другое:

Код: Выделить всё

2012-07-15 00:24:57 auth_cram_md5 authenticator failed for ns.domain.ru (webmail.abc.ru) [xxx.xxx.xxx.xxx] I=[xxx.xxx.xxx.xxx]:25 U=80: 435 Unable to authenticate at present: authentication socket connection error
Подскажите, куда смотреть, что копать, где я накосячил ?

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-15 0:56:30
EGG01
Да, до кучи: не отправляется почта ни с почтовых клиентов, ни с RoundCube, засада одна и таже.
Версии: exim 4.80, Dovecot 2.1.8

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-15 16:56:21
egorchik

Код: Выделить всё

auth_plain:
    driver = plaintext
    public_name = PLAIN
    server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth2}' AND `password` = '${quote_mysql:$auth3}'}{yes}{no}}
    server_prompts = :
    server_set_id = $auth2

auth_login:
    driver = plaintext
    public_name = LOGIN
    server_condition = ${lookup mysql{SELECT `username` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth1}' AND `password` = '${quote_mysql:$auth2}'}{yes}{no}}
    server_prompts = Username:: : Password::
    server_set_id = $auth1

auth_cram_md5:
    driver = cram_md5
    public_name = CRAM-MD5
    server_secret = ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = \
        '${quote_mysql:$auth1}'}{$value}fail}
    server_set_id = $auth2
Такой метод работает. Смотри, внимательние на SQL запросы... Попробуй сам их выполнить, посмотри, что возвращается.
Попробуй отправить телнетом, посмотри, в какой момент происходит затык.
У меня была проблема с 25 портом (в трафик вмешивалось сетевое оборудование циско)

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-15 17:39:45
dikens3
Может с правами что?
http://wiki.lissyara.su/wiki/%D0%90%D1% ... B8_dovecot

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-15 22:25:02
EGG01
dikens3 писал(а):Может с правами что?
http://wiki.lissyara.su/wiki/%D0%90%D1% ... B8_dovecot
В вики описан конфиг довекота первой версии, это раз. Во вторых, в довекоте то аутенфикация проходит нормально, но почему-то в процессе пропадает соединение с сокетом auth-client.

в вики довекота прописана только plain аутенфикация. А хочется CRAM-MD5 таки.

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-16 10:10:12
EGG01
egorchik писал(а): Такой метод работает. Смотри, внимательние на SQL запросы... Попробуй сам их выполнить, посмотри, что возвращается.
Попробуй отправить телнетом, посмотри, в какой момент происходит затык.
У меня была проблема с 25 портом (в трафик вмешивалось сетевое оборудование циско)
Сделал. Не проканало.

Вот что в в логе экзима:

Код: Выделить всё

12:54:55 22514 expanding: $auth1
12:54:55 22514    result: eugene@egnet.ru
12:54:55 22514 expanding: SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}'
12:54:55 22514    result: SELECT `password` FROM `mailbox` WHERE `username` = 'eugene@egnet.ru'
12:54:55 22514 search_open: mysql "NULL"
12:54:55 22514 search_find: file="NULL"
12:54:55 22514   key="SELECT `password` FROM `mailbox` WHERE `username` = 'eugene@egnet.ru'" partial=-1 affix=NULL starflags=0
12:54:55 22514 LRU list:
12:54:55 22514 internal_search_find: file="NULL"
12:54:55 22514   type=mysql key="SELECT `password` FROM `mailbox` WHERE `username` = 'eugene@egnet.ru'"
12:54:55 22514 database lookup required for SELECT `password` FROM `mailbox` WHERE `username` = 'eugene@egnet.ru'
12:54:55 22514 MySQL query: SELECT `password` FROM `mailbox` WHERE `username` = 'eugene@egnet.ru'
12:54:55 22514 MYSQL new connection: host=localhost port=0 socket=NULL database=mail user=mail
12:54:55 22514 lookup yielded: 5779df819b5dd9eb75d2601099a5320527e430f759a0444676beb74d32edb91e
12:54:55 22514 expanding: $value
12:54:55 22514    result: 5779df819b5dd9eb75d2601099a5320527e430f759a0444676beb74d32edb91e
12:54:55 22514 expanding: ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}'}{$value}fail}
12:54:55 22514    result: 5779df819b5dd9eb75d2601099a5320527e430f759a0444676beb74d32edb91e
12:54:55 22514 CRAM-MD5: user name = eugene@egnet.ru
12:54:55 22514           challenge = <22514.1342421695@mail.egnet.ru>
12:54:55 22514           received  = 0158dd4e10004275118e8544174d7217
12:54:55 22514           digest    = 5bae3738da5054915defbee5eddea78f
12:54:55 22514 expanding: $auth2
12:54:55 22514    result: 
12:54:55 22514 SMTP>> 535 Incorrect authentication data
И два, из Раундкуба:

Код: Выделить всё

13:07:12 22980 SMTP<< AUTH CRAM-MD5
13:07:12 22980 SMTP>> 334 PDIyOTgwLjEzNDI0MjI0MzJAbWFpbC5lZ25ldC5ydT4=
13:07:12 22980 SMTP<< YWxlbmFAZWduZXQucnUgMGRkNDFlNjY5OWU5NGYzNGE0ODNmYTA5MjlmNzA5MjE=
13:07:12 22980 expanding: $auth1
13:07:12 22980    result: alena@egnet.ru
13:07:12 22980 expanding: SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}'
13:07:12 22980    result: SELECT `password` FROM `mailbox` WHERE `username` = 'alena@egnet.ru'
13:07:12 22980 search_open: mysql "NULL"
13:07:12 22980 search_find: file="NULL"
13:07:12 22980   key="SELECT `password` FROM `mailbox` WHERE `username` = 'alena@egnet.ru'" partial=-1 affix=NULL starflags=0
13:07:12 22980 LRU list:
13:07:12 22980 internal_search_find: file="NULL"
13:07:12 22980   type=mysql key="SELECT `password` FROM `mailbox` WHERE `username` = 'alena@egnet.ru'"
13:07:12 22980 database lookup required for SELECT `password` FROM `mailbox` WHERE `username` = 'alena@egnet.ru'
13:07:12 22980 MySQL query: SELECT `password` FROM `mailbox` WHERE `username` = 'alena@egnet.ru'
13:07:12 22980 MYSQL new connection: host=localhost port=0 socket=NULL database=mail user=mail
13:07:12 22980 lookup yielded: 3d5712666df89775550e900d6b80fce0a5b3d8ddb68b3af419e441a65bffaedb
13:07:12 22980 expanding: $value
13:07:12 22980    result: 3d5712666df89775550e900d6b80fce0a5b3d8ddb68b3af419e441a65bffaedb
13:07:12 22980 expanding: ${lookup mysql{SELECT `password` FROM `mailbox` WHERE `username` = '${quote_mysql:$auth1}'}{$value}fail}
13:07:12 22980    result: 3d5712666df89775550e900d6b80fce0a5b3d8ddb68b3af419e441a65bffaedb
13:07:12 22980 CRAM-MD5: user name = alena@egnet.ru
13:07:12 22980           challenge = <22980.1342422432@mail.egnet.ru>
13:07:12 22980           received  = 0dd41e6699e94f34a483fa0929f70921
13:07:12 22980           digest    = 6fbf8cf48ecc3aabe5344751a0a1cc43
13:07:12 22980 expanding: $auth2
13:07:12 22980    result: 
13:07:12 22980 SMTP>> 535 Incorrect authentication data
13:07:12 22980 LOG: MAIN REJECT
13:07:12 22980   auth_cram_md5 authenticator failed for ns.gomonuk.ru (webmail.egnet.ru) [194.8.133.90] I=[194.8.133.90]:25 U=80: 535 Incorrect authentication data

Все домены и IP адреса оставил как есть. Может я что-то намудрил при генерации ключей ?

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-16 10:27:22
EGG01
И еще момент. Попытался отключить CRAM-MD5, при попытке PLAIN/LOGIN авторизации шлется нешифрованный пароль, но в базе то пароль зашифрован, как запрос поправить ? (ENCRYPT/MD5/SHA1 попробовал)

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-16 12:08:00
EGG01
Покопавшись в исходниках, понял, что прикрутить авторизацию при имеющейся схеме (Exim+Dovecot+PostfixAdmin+RoundCube) и имеющихся версиях софта, кроме как через Dovecot не получиться, так-как пароль криптуется внутри Dovecot-a по очень хитрой схеме, и в лоб к нему подкрасться не получиться. (PostfixAdmin при создании учетки вызывает для криптования пароля doveadm pw).
Посему, надо разобраться почему не хочет проходить авторизация через Dovecot.
Граждане, у кого работает авторизация через Dovecot v.2 - поделитесь секретом, как победили ?

Re: Exim Authenfication проблем :(

Добавлено: 2012-07-16 12:30:22
EGG01
Все, всем спасибо, проблема решена.

Внимательное изучение http://wiki2.dovecot.org/HowTo/EximAndDovecotSASL дало подсказку к решению проблемы:

conf.d/10-master.conf

Код: Выделить всё

service auth {
...
  unix_listener auth-client {
    mode = 0660
    user = mail
  }
...
}
ну и exim.conf

Код: Выделить всё

auth_plain:
    driver = dovecot
    public_name = PLAIN
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1

auth_login:
    driver = dovecot
    public_name = LOGIN
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1

auth_cram_md5:
    driver = dovecot
    public_name = CRAM-MD5
    server_socket = /var/run/dovecot/auth-client
    server_set_id = $auth1
Все работает без проблем.