Скомпилировал 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:
>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 в данном случае).
Версии ПО какие?
>И как - же у тебя 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
>Вот это мне и не понятно)))))) как это получается...... sasl игнорирует
>/usr/local/lib/sasl2/smtpd.confСделай симлинк /usr/local/lib/sasl2/ на /usr/lib/sasl2/
>>Вот это мне и не понятно)))))) как это получается...... sasl игнорирует
>>/usr/local/lib/sasl2/smtpd.conf
>
>Сделай симлинк /usr/local/lib/sasl2/ на /usr/lib/sasl2/сделано это, но не работает, кучу мануалов и постфикса и сасл прочитал, по манам все правельно сделал.........
доп информация теперь он хочит подключиться к деману но не видет его, вот лог
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]
Теперь он к 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]
Теперь он к 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 прописываю реального пользователя - авторизация проходит......
Ктонить подскажет в чем дело?
Теперь осталась одна проблема.
Т.к. у меня сервер с поддержкой виртуальных доменов, в pam попадает только первая часть логина, а именно до "@" как сделать чтоб он полностью отдавал с доменом в pam?
Ну теперь все, сделал....
Пришлось дописывать 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
и особой задержки это не вызовит))))))
спасибо всем!!!!!!
Если что обращайтесь
А почему бы не использовать виртуальных пользователей и напрямую не выбирать их из БД.
Зачем заморочка с pam???
>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>из БД.
>Зачем заморочка с pam???т.к. у меня в базе хронятся криптованные пароли а не в открытом виде :))))
А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то подскажите :)
>>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>>из БД.
>>Зачем заморочка с pam???
>
>т.к. у меня в базе хронятся криптованные пароли а не в открытом
>виде :))))
>А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то
>подскажите :)Эта проблема уже давно решена. Вот глянь тут - http://www.sys-adm.org.ua/mail/mail-howto-p1.php. Правда там я описывал под mysql, но в твоем случае больших отличий не будет.
>>>А почему бы не использовать виртуальных пользователей и напрямую не выбирать их
>>>из БД.
>>>Зачем заморочка с pam???
>>
>>т.к. у меня в базе хронятся криптованные пароли а не в открытом
>>виде :))))
>>А я не знаю чтоб sasl сравнивал криптовые пароли, если знаете то
>>подскажите :)
>
>Эта проблема уже давно решена. Вот глянь тут - http://www.sys-adm.org.ua/mail/mail-howto-p1.php. Правда там
>я описывал под mysql, но в твоем случае больших отличий не
>будСпачибо :)) попробую проэксперементировать нп работающем сервере :((((
>Ну теперь все, сделал....
>Пришлось дописывать 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
>и особой задержки это не вызовит))))))
>спасибо всем!!!!!!
>Если что обращайтесь
>>Ну теперь все, сделал....
>>Пришлось дописывать 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
>>и особой задержки это не вызовит))))))
>>спасибо всем!!!!!!
>>Если что обращайтесьПочитаем посмотрим........ Спасиб)))