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

Исходное сообщение
"postfix + postgres + sasl + pam_pgsql"

Отправлено Vii , 03-Дек-06 11:52 
Скомпилировал postfix:
make tidy
make -f Makefile.init makefiles CCARGS="-DHAS_PGSQL  -I/usr/include/pgsql -DUSE_SASL_AUTH -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lpq -L/usr/local/lib -lsasl2"

скомпелировал sasl
./configure \
--enable-anon \
--enable-plain \
--enable-login \
--disable-krb4 \
--disable-otp \
--disable-cram \
--disable-digest \
--with-saslauthd=/var/run/saslauthd \
--with-pam=/lib/security \
--with-dblib=berkeley \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--with-plugindir=/usr/local/lib/sasl2
Скомпилил pam_pgsql
cat /etc/pam.d/smtp
auth        required      /lib/security/pam_pgsql.so
account     required      /lib/security/pam_pgsql.so
password    required      /lib/security/pam_pgsql.so

тестирую авторизацию через sasl
testsaslauthd -s smtp -u test -p teste -f /var/run/saslauthd/mux
авторизация проходит на ура!

включаю авторизацию в postfix
/etc/postfix/main.cf:
smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd

в файле
/usr/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd

перегружаю все сервисы, ставлю в TheBat smtp авторизацию, пробую, фиг не получается
добавляю в sasldb2 пользователя test2 c паролем teste2 делаю в TheBat особую авторизацию где логин test2 и пароль teste2 и шифрование через md5 авторизация проходит!!!!!

меняю содиржимое /usr/local/lib/sasl2/smtpd.conf на всякий бред - никакого результата!!!
как сделать стоб авторизация шла через pam сервиса smtp...........


Содержание

Сообщения в этом обсуждении
"postfix + postgres + sasl + pam_pgsql"
Отправлено Martin_M , 03-Дек-06 16:48 
>Скомпилировал postfix:
>make tidy
>make -f Makefile.init makefiles CCARGS="-DHAS_PGSQL  -I/usr/include/pgsql -DUSE_SASL_AUTH -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lpq -L/usr/local/lib
>-lsasl2"
>
>скомпелировал sasl
>./configure \
>--enable-anon \
>--enable-plain \
>--enable-login \
>--disable-krb4 \
>--disable-otp \
>--disable-cram \
>--disable-digest \


И как - же у тебя MD5-авторизация проходит? Посотри список доступных механизмов аутентификации.
Это раз, во вторых - ты в результате что хочешь получить - аутентификация в  db или все-таки через PAM вырулить в pgSQL? А то ты тестируешь одно (да, это я про test2), а в конфиге у тебя другое (через сторонний модуль - PAM в данном случае).
Версии ПО какие?


"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 03-Дек-06 17:08 
>И как - же у тебя MD5-авторизация проходит? Посотри список доступных механизмов
>аутентификации.
Вот это мне и не понятно)))))) как это получается...... sasl игнорирует
/usr/local/lib/sasl2/smtpd.conf
pwcheck_method: saslauthd - аунтификация через демон sasl - saslauthd

>Это раз, во вторых - ты в результате что хочешь получить -
>аутентификация в  db или все-таки через PAM вырулить в pgSQL?
я хочу через pam вырулить в pgSQL, saslauthd через pam в pgSQL рулит

testsaslauthd -s smtp -u test -p teste -f /var/run/saslauthd/mux
0: ОК ........

>А то ты тестируешь одно (да, это я про test2), а
>в конфиге у тебя другое (через сторонний модуль - PAM в
>данном случае).
я и не понимаю как это............

>Версии ПО какие?
postfix 2.2.5
cyrus-sasl-2.1.22
pam-pgsql-0.5.2
postgresql-7.4.11


"postfix + postgres + sasl + pam_pgsql"
Отправлено michelle , 03-Дек-06 20:32 
>Вот это мне и не понятно)))))) как это получается...... sasl игнорирует
>/usr/local/lib/sasl2/smtpd.conf

Сделай симлинк /usr/local/lib/sasl2/ на /usr/lib/sasl2/


"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 03-Дек-06 20:43 
>>Вот это мне и не понятно)))))) как это получается...... sasl игнорирует
>>/usr/local/lib/sasl2/smtpd.conf
>
>Сделай симлинк /usr/local/lib/sasl2/ на /usr/lib/sasl2/

сделано это, но не работает, кучу мануалов и постфикса и сасл прочитал, по манам все правельно сделал.........


"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 04-Дек-06 08:28 
доп информация теперь он хочит подключиться к деману но не видет его, вот лог
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: SASL authentication failure: no secret in database
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: unknown[192.168.0.38]: SASL CRAM-MD5 authentication failed
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: SASL authentication failure: Password verification failed
Dec  4 11:31:45 mail postfix/smtpd[15363]: warning: unknown[192.168.0.38]: SASL PLAIN authentication failed
Dec  4 11:31:45 mail postfix/smtpd[15363]: 4AFD77B818D: client=unknown[192.168.0.38]



"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 04-Дек-06 09:55 
Теперь он к saslauchd коннектится:

cat smtpd.conf
pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux

но не хотит через пам в sql идти.....
Dec  4 12:55:59 mail postfix/smtpd[19706]: connect from unknown[192.168.0.38]
Dec  4 12:55:59 mail postfix/smtpd[19706]: warning: SASL authentication failure: Password verification failed
Dec  4 12:55:59 mail postfix/smtpd[19706]: warning: unknown[192.168.0.38]: SASL PLAIN authentication failed
Dec  4 12:55:59 mail postfix/smtpd[19706]: 3956A7B818D: client=unknown[192.168.0.38]



"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 04-Дек-06 11:54 
Теперь он к saslauchd коннектится:
cat smtpd.conf
pwcheck_method: saslauthd
saslauthd_path: /var/run/saslauthd/mux
mech_list: plain login

в cat /etc/pam.d/smtp
%PAM-1.0
auth        required      /lib/security/pam_pgsql.so
account     required      /lib/security/pam_pgsql.so
password    required      /lib/security/pam_pgsql.so

Выдает ошибку, тестирую
# testsaslauthd -s smtp -u test -p teste -f /var/run/saslauthd/mux
0: OK "Success."

# authtest test
Authentication succeeded.

     Authenticated: test  (uid 1000, gid 1000)
    Home Directory: /var/spool/virtual/
           Maildir: test.domain/test/
             Quota: (none)
Encrypted Password: $1$.J.LF$K2IE.hH/CNpIyYfuniEWy/
Cleartext Password: (none)
           Options: (none)

отпровляю почту в логах:
Dec  4 14:55:29 mail postfix/smtpd[26940]: connect from unknown[192.168.0.38]
Dec  4 14:55:30 mail postfix/smtpd[26940]: warning: SASL authentication failure: Password verification failed
Dec  4 14:55:30 mail postfix/smtpd[26940]: warning: unknown[192.168.0.38]: SASL PLAIN authentication failed
Dec  4 14:55:30 mail postfix/smtpd[26940]: 0ED957B818D: client=unknown[192.168.0.38]
Dec  4 14:55:30 mail postfix/smtpd[26940]: disconnect from unknown[192.168.0.38]

Изменяю:
в cat /etc/pam.d/smtp
%PAM-1.0
auth       required     pam_stack.so service=system-auth
account    required     pam_stack.so service=system-auth
password   required     pam_stack.so service=system-auth

в авторизации smtp прописываю реального пользователя - авторизация проходит......
Ктонить подскажет в чем дело?


"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 07-Дек-06 12:31 
Теперь осталась одна проблема.
Т.к. у меня сервер с поддержкой виртуальных доменов, в pam попадает только первая часть логина, а именно до "@" как сделать чтоб он полностью отдавал с доменом в pam?

"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 07-Дек-06 15:17 
Ну теперь все, сделал....
Пришлось дописывать pam_pgsql.c
1) Расширил запрос с "SELECT %s FROM %s WHERE %s='%s'"
            стало "SELECT %s FROM %s WHERE %s LIKE '%s@%%'"

2) добавил цикл после:
    if(PQntuples(res) == 0) {
        rc = PAM_USER_UNKNOWN;
    } else {
Сам цикл:
             for(fff=0;fff<PQntuples(res);fff++)
              {
строку переделал:char *stored_pw = PQgetvalue(res, 0, 0);
на:            char *stored_pw = PQgetvalue(res, fff, 0);
                ...............
                ...............
              }
    }
ну вроде все заработало.......
по иде не так много будет много почтовых ящиков пахожих на это:
user@test.domain
user@domain.test
и особой задержки это не вызовит))))))
спасибо всем!!!!!!
Если что обращайтесь



"postfix + postgres + sasl + pam_pgsql"
Отправлено Alex_hha , 09-Дек-06 17:30 
А почему бы не использовать виртуальных пользователей и напрямую не выбирать их из БД.
Зачем заморочка с pam???

"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 10-Дек-06 14:37 
>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>из БД.
>Зачем заморочка с pam???

т.к. у меня в базе хронятся криптованные пароли а не в открытом виде :))))
А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то подскажите :)



"postfix + postgres + sasl + pam_pgsql"
Отправлено Alex_hha , 12-Дек-06 16:17 
>>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>>из БД.
>>Зачем заморочка с pam???
>
>т.к. у меня в базе хронятся криптованные пароли а не в открытом
>виде :))))
>А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то
>подскажите :)

Эта проблема уже давно решена. Вот глянь тут - http://www.sys-adm.org.ua/mail/mail-howto-p1.php. Правда там я описывал под mysql, но в твоем случае больших отличий не будет.


"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 12-Дек-06 17:02 
>>>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>>>из БД.
>>>Зачем заморочка с pam???
>>
>>т.к. у меня в базе хронятся криптованные пароли а не в открытом
>>виде :))))
>>А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то
>>подскажите :)
>
>Эта проблема уже давно решена. Вот глянь тут - http://www.sys-adm.org.ua/mail/mail-howto-p1.php. Правда там
>я описывал под mysql, но в твоем случае больших отличий не
>буд

Спачибо :)) попробую проэксперементировать нп работающем сервере :((((



"postfix + postgres + sasl + pam_pgsql"
Отправлено A Clockwork Orange , 12-Дек-06 16:34 
>Ну теперь все, сделал....
>Пришлось дописывать pam_pgsql.c
>1) Расширил запрос с "SELECT %s FROM %s WHERE %s='%s'"
>            
>стало "SELECT %s FROM %s WHERE %s LIKE '%s@%%'"
>
>2) добавил цикл после:
>    if(PQntuples(res) == 0) {
>        rc = PAM_USER_UNKNOWN;
>    } else {
>Сам цикл:
>            
> for(fff=0;fff<PQntuples(res);fff++)
>            
>  {
>строку переделал:char *stored_pw = PQgetvalue(res, 0, 0);
>на:            
>char *stored_pw = PQgetvalue(res, fff, 0);
>            
>    ...............
>            
>    ...............
>            
>  }
>    }


а запустить
saslauthd -r -a pam
так не получилось бы?

>ну вроде все заработало.......
>по иде не так много будет много почтовых ящиков пахожих на это:
>
>user@test.domain
>user@domain.test
>и особой задержки это не вызовит))))))
>спасибо всем!!!!!!
>Если что обращайтесь



"postfix + postgres + sasl + pam_pgsql"
Отправлено Vii , 12-Дек-06 17:04 
>>Ну теперь все, сделал....
>>Пришлось дописывать pam_pgsql.c
>>1) Расширил запрос с "SELECT %s FROM %s WHERE %s='%s'"
>>            
>>стало "SELECT %s FROM %s WHERE %s LIKE '%s@%%'"
>>
>>2) добавил цикл после:
>>    if(PQntuples(res) == 0) {
>>        rc = PAM_USER_UNKNOWN;
>>    } else {
>>Сам цикл:
>>            
>> for(fff=0;fff<PQntuples(res);fff++)
>>            
>>  {
>>строку переделал:char *stored_pw = PQgetvalue(res, 0, 0);
>>на:            
>>char *stored_pw = PQgetvalue(res, fff, 0);
>>            
>>    ...............
>>            
>>    ...............
>>            
>>  }
>>    }
>
>
>а запустить
>saslauthd -r -a pam
>так не получилось бы?
>
>>ну вроде все заработало.......
>>по иде не так много будет много почтовых ящиков пахожих на это:
>>
>>user@test.domain
>>user@domain.test
>>и особой задержки это не вызовит))))))
>>спасибо всем!!!!!!
>>Если что обращайтесь

Почитаем посмотрим........ Спасиб)))