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

Исходное сообщение
"Как организовать возможность смены пользователем почтового пароля?"

Отправлено Margulis , 09-Апр-03 10:10 
Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется в системе. И пароль к почте тот, который используется для входа в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая справедливое желание пользователей менять пароль на доступ к почте, как это организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?

Содержание

Сообщения в этом обсуждении
"Как организовать возможность смены пользователем почтового п..."
Отправлено shaman , 09-Апр-03 10:15 
>Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется
>в системе. И пароль к почте тот, который используется для входа
>в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая
>справедливое желание пользователей менять пароль на доступ к почте, как это
>организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и
>SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и
>не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на
>путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?
sendmail _принимает_ почту для всех системных юзеров. А за доступ к этой почте отвечает pop-сервер. И, видимо, некоторые его реализации позволяют менять пароль. Кстати, можно настроить виртуальный хостинг, в котором пользователи и пароли будут храниться в базе данных (например, mysql).



"Как организовать возможность смены пользователем почтового п..."
Отправлено dukie , 09-Апр-03 10:35 
openwebmail

Open WebMail - это почтовая система для веб, предназначенная для управления
очень большими почтовыми каталогами наиболее рациональными методами.
Также несколько его особенностей обеспечивают плавный переход пользователей
с Microsoft Outlook на Open WebMail. Open WebMail имеет такие:
множество языков, наборы иконок и стилей, поддержка MIME, виртуальные узлы
и входы в систему, псевдонимы, поддержка PAM, онлайновая смена пароля,
удобные операции с сообщениями и папками, папка черновиков, система поддержки
подтверждений о прочтений, поиск по содержанию, проверка орфографии, автоответ,
фильтрация почты, поддержка POP3 и предпросмотр сообщений

Ну вот например эта весч умеет пароль менять.


"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 09-Апр-03 10:42 
sendmail не организует почтовые ящики пользователям, как было сказано выше. Для простой и безгеморройной настройки возможности смены пользователем пароля можно поставить комбинацию putty (с ключами запуска) + шеллом пользователю /bin/passwd

"Как организовать возможность смены пользователем почтового п..."
Отправлено Понт , 09-Апр-03 15:01 
для простой и безгеморройной работы надо поставить LDAP и запихать в него всех усеров и поставить там нужные пароли

"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 09-Апр-03 15:30 
Сам-то пробовал? В мартовском номере журнала LAN моя статья с описанием реализации схемы централизованной авторизации и раздачи прав доступа в сервере SQUID посредством Novell NDS, что суть тот же LDAP.

Скока я геморрою отгреб с этой схемой - неописуемо. Скока геморрою с LDAP-реализацией UNIX-авторизации (ее я тоже делал) - говорить не буду, цензура вырежет.


"Как организовать возможность смены пользователем почтового п..."
Отправлено Понт , 09-Апр-03 18:25 
а вы ничего не путаете?

UNIX - авторизация, насколько я понимаю (и в терминологии PAM), это /etc/passwd, /etc/shadow, etc.

а какие претензии к LDAP-у? он только выдаст нужный атрибут по результату поиска, в т.ч. и пароль, и ACL, и все что угодно, согласно схеме. Авторизацию же выполняет либо сама программа, либо PAM. лично я делал на ЛДАПе доступ по ssh через PAM - легко и приятно, аутентификация может быть полностью независимой от аутентификации UNIX

тут вопрос-то в чем - почему нужно в /etc/passwd держать всех пользователей почты только потому, что они - пользователи почты? Этот файл вроде как для других целей, главная - чтобы интерактивно войти в систему и в ней работать. А если сервак накрылся? ЛДАП же может реплицировать базы

конечно, когда у тебя десяток пользователей, ЛДАП, NDS, Active Directory или NIS наверное, не нужны. хотя...

попробуем почитать вашу статью


"Как организовать возможность смены пользователем почтового п..."
Отправлено SandySandy , 10-Апр-03 04:56 
По данному вопросу:
у меня пользователи в базе ldap.
Естественно в файлах /etc/passwd пользователей их нет.
Sendmail их видит как локальных и создает автоматом для них ящики в /var/spool/mail.
Кроме того, sendmail можно настроить что бы и все остальные базы (aliases, access и т.д.) тоже будут храниться в ldap.

"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 10-Апр-03 07:54 
sendmail сам по себе ничего не создает. Его можно назвать wrapper'ом, потому как на каждый случай он запускает отдельный процесс, именуемый mailer'ом. В случае локальной доставки этот процесс может быть либо mail.local, либо procmail - они-то и создают ящики.

"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 10-Апр-03 07:52 
я так понял, ты реализацию через pam_ldap делал?

я бы не сказал, что это "легко и приятно". Странно, если у тебя это заработало с полпинка, лично мне приходилось и исходнички поправлять. В pam_nss в частности класс PosixAccount зашит намертво, а в NDS этого класса по умолчанию нету. Конечно, если реализовывать авторизацию на OpenLdap, все куда как более просто. С NDS все по-другому.


"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 10-Апр-03 08:03 
очепятался pam_nss == nss_ldap

"Как организовать возможность смены пользователем почтового п..."
Отправлено SandySandy , 10-Апр-03 04:51 
И какой же "геморой" при поднятии сервара LDAP для централизованной аутенфикации?

з.ы. У меня два сервера LDAP на разных работах, все поднимается без проблем, если даже делать все по инструкции..


"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 10-Апр-03 07:56 
>И какой же "геморой" при поднятии сервара LDAP для централизованной >аутенфикации?

авторизации

>з.ы. У меня два сервера LDAP на разных работах, все поднимается без
>проблем, если даже делать все по инструкции..

Какие LDAP-сервера? NDS?


"Как организовать возможность смены пользователем почтового п..."
Отправлено Paul , 10-Апр-03 08:01 
я предложил два метода (вернее я предложил один, а с LDAP идейку предложил другой товарищ)

первый - делать шелл пользователю в виде /bin/passwd (или как он там в разных системах именуется). Дешево и сердито.
второй - организовывать LDAP. Способ красивый, спору нет. Но с изначальной задачей смены пароля ввиду отсутствия мало-мальски функциональных интерфейсов к LDAP. Хотя для задачи смены пароля можно и самому накатать. Дурное дело нехитрое. По уму тут как раз в крупных конторах следовало бы обратить внимание на Novell, ибо у последнего окромя клиента под Win существует еще дофига утилиток, типа ConsoleOne - с приятственным графическим интерфейсом.


"Как организовать возможность смены пользователем почтового п..."
Отправлено Ihor , 10-Апр-03 10:47 
Просто поставь poppassd (http://echelon.pl/pubs/poppassd.html или на www.freshmeat.net) - есть версии, кот. меняют /etc/passwd напрямую и
кот. работают через PAM.
WWW-интерфейс к нему можно взять, например, с http://www.westnet.com/providers/ (см. wwwpass) + неокторые почтовые программы умеют общаться с ним напрямую без всяких дополнительных примочек.
Например, Eudora, для которой изначально это всё и было разработано.

"Как организовать возможность смены пользователем почтового п..."
Отправлено Margulis , 11-Апр-03 18:04 
>Просто поставь poppassd...WWW-интерфейс к нему можно взять, например, с http://www.westnet.com/providers/ (см. wwwpass)

Докладываю: poppassd поставил. Попробовал менять пароль через Telnet. Получилось, хотя после УСПЕШНОЙ смены пароля она всё равно ругается, что "Unable change password." В принципе, и фиг с ней.
Начал прикручивать WEB-интерфейс с http://www.westnet.com/providers/ (wwwpass). Тут возникли вопросы. Например, возникло предположение, что эта фенька - для диалапщиков (поскольку присутствует файл с завораживающим названием get_dialup.pl, который README предписывает засунуть in your cgi-bin directory. Кроме того, обратившись к странице change_passwd.html, видим запрос на ввод старого пароля и дважды нового пароля. Про имя пользователя упоминания нет. Значит, предполагается, что я уже сообщал его раньше? Очень похоже на диалапские штучки. Короче, есть смысл биться в этом направлении?


"Как организовать возможность смены пользователем почтового п..."
Отправлено SandySandy , 11-Апр-03 11:28 
У меня стоит openldap сервер. Поднимай не пожалеешь.
Пароли пользователи меняют через самбу ;) сами!

"Как организовать возможность смены пользователем почтового п..."
Отправлено Ash , 11-Апр-03 15:25 
>Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется
>в системе. И пароль к почте тот, который используется для входа
>в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая
>справедливое желание пользователей менять пароль на доступ к почте, как это
>организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и
>SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и
>не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на
>путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?
>
Попробуй passwdd - нормально приворачивается к вебу


"..."
Отправлено Margulis , 11-Апр-03 16:17 
>Попробуй passwdd - нормально приворачивается к вебу

У меня чё-та и WEB не встаёт:

Inetserv# apachectl start
/usr/local/sbin/apachectl start: httpd could not be started
Inetserv#

Вот такая радость...


"..."
Отправлено Margulis , 11-Апр-03 18:09 
Докладываю: poppassd поставил. Попробовал менять пароль через Telnet. Получилось, хотя после УСПЕШНОЙ смены пароля она всё равно ругается, что "Unable change password." В принципе, и фиг с ней.
Начал прикручивать WEB-интерфейс с http://www.westnet.com/providers/ (wwwpass). Тут возникли вопросы. Например, возникло предположение, что эта фенька - для диалапщиков (поскольку присутствует файл с завораживающим названием get_dialup.pl, который README предписывает засунуть in your cgi-bin directory. Кроме того, обратившись к странице change_passwd.html, видим запрос на ввод старого пароля и дважды нового пароля. Про имя пользователя упоминания нет. Значит, предполагается, что я уже сообщал его раньше? Очень похоже на диалапские штучки. Короче, есть смысл биться в этом направлении?


"..."
Отправлено Ihor , 14-Апр-03 11:13 
Вот ещё PHP скрипт для работы с poppassd. К нему нужно ещё сделать форму,
где пользователь и будет набирать имя пользователя, текущий пароль и новый пароль:
===================================================================
# have a form submit two values to this script by names of curpass --- which is the users current # password and newpass --- which would be the users new pass

<?
$cfgServer    = "localhost";
$cfgPort    = 106;
$cfgTimeOut    = 10;
echo "<br>";
# open a socket first
if(!$cfgTimeOut)
    # without timeout
    $poppass_handle = fsockopen($cfgServer, $cfgPort);
else
    # with timeout
    $poppass_handle = fsockopen($cfgServer, $cfgPort, &$errno, &$errstr, $cfgTimeOut);

if(!$poppass_handle) {
    echo " Connetion to server failed . <br> ";
echo " Failed to Change Password ";
    exit();
}  
else {
# now talking to the server to change password.
fputs($poppass_handle, "user $username \r\n");
$tmpa = fgets($poppass_handle, 50);
fputs($poppass_handle, "pass $curpass \r\n");
$tmpb = fgets($poppass_handle, 50);
fputs($poppass_handle, "newpass $newpass \r\n");
$tmpc = fgets($poppass_handle, 3 );
$tmpd = fgets($poppass_handle, 3 );

#500 is first 3 characters returned by the poppassd
#daemon if current password is incorrect

if ($tmpc == 500)
{
echo "The Current Password you entered is incorrect <br>";
echo "Please go back and change your password again. " ;
}
else
{
echo "Password Changed Sucessfully" ;
}
}
# now done with it close the connection
fclose ($poppass_handle)
?>


"Как организовать возможность смены пользователем почтового п..."
Отправлено Понт , 12-Апр-03 10:54 
Вот простейший код на PHP (без проверки ошибок):

    $li=ldap_connect($ldap_server_name,$ldap_server_port);
    $r=ldap_bind($li,$binddn,$bindpw);
    $dn=$binddn;  // can be any dn as long as $binddn has access to modify
    $buf['userpassword'] = "{CRYPT}".crypt($new_pass);
    ldap_modify($li, $dn, $buf));
    ldap_close($li);

где (параметры post-a или get-a) $binddn - dn пользователя, $bindpw - старый пароль, $new_pass - новый пароль

при желании можно поднять SSL, но чтобы иметь заверенный сертификат, придется хорошо заплатить


"Как организовать возможность смены пользователем почтового п..."
Отправлено Андрей , 14-Апр-03 13:04 

А может кто-нибудь подскажет как переташить пользователей с их паролями из smbpasswd в LDAP?