Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется в системе. И пароль к почте тот, который используется для входа в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая справедливое желание пользователей менять пароль на доступ к почте, как это организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?
>Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется
>в системе. И пароль к почте тот, который используется для входа
>в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая
>справедливое желание пользователей менять пароль на доступ к почте, как это
>организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и
>SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и
>не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на
>путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?
sendmail _принимает_ почту для всех системных юзеров. А за доступ к этой почте отвечает pop-сервер. И, видимо, некоторые его реализации позволяют менять пароль. Кстати, можно настроить виртуальный хостинг, в котором пользователи и пароли будут храниться в базе данных (например, mysql).
openwebmailOpen WebMail - это почтовая система для веб, предназначенная для управления
очень большими почтовыми каталогами наиболее рациональными методами.
Также несколько его особенностей обеспечивают плавный переход пользователей
с Microsoft Outlook на Open WebMail. Open WebMail имеет такие:
множество языков, наборы иконок и стилей, поддержка MIME, виртуальные узлы
и входы в систему, псевдонимы, поддержка PAM, онлайновая смена пароля,
удобные операции с сообщениями и папками, папка черновиков, система поддержки
подтверждений о прочтений, поиск по содержанию, проверка орфографии, автоответ,
фильтрация почты, поддержка POP3 и предпросмотр сообщенийНу вот например эта весч умеет пароль менять.
sendmail не организует почтовые ящики пользователям, как было сказано выше. Для простой и безгеморройной настройки возможности смены пользователем пароля можно поставить комбинацию putty (с ключами запуска) + шеллом пользователю /bin/passwd
для простой и безгеморройной работы надо поставить LDAP и запихать в него всех усеров и поставить там нужные пароли
Сам-то пробовал? В мартовском номере журнала LAN моя статья с описанием реализации схемы централизованной авторизации и раздачи прав доступа в сервере SQUID посредством Novell NDS, что суть тот же LDAP.Скока я геморрою отгреб с этой схемой - неописуемо. Скока геморрою с LDAP-реализацией UNIX-авторизации (ее я тоже делал) - говорить не буду, цензура вырежет.
а вы ничего не путаете?UNIX - авторизация, насколько я понимаю (и в терминологии PAM), это /etc/passwd, /etc/shadow, etc.
а какие претензии к LDAP-у? он только выдаст нужный атрибут по результату поиска, в т.ч. и пароль, и ACL, и все что угодно, согласно схеме. Авторизацию же выполняет либо сама программа, либо PAM. лично я делал на ЛДАПе доступ по ssh через PAM - легко и приятно, аутентификация может быть полностью независимой от аутентификации UNIX
тут вопрос-то в чем - почему нужно в /etc/passwd держать всех пользователей почты только потому, что они - пользователи почты? Этот файл вроде как для других целей, главная - чтобы интерактивно войти в систему и в ней работать. А если сервак накрылся? ЛДАП же может реплицировать базы
конечно, когда у тебя десяток пользователей, ЛДАП, NDS, Active Directory или NIS наверное, не нужны. хотя...
попробуем почитать вашу статью
По данному вопросу:
у меня пользователи в базе ldap.
Естественно в файлах /etc/passwd пользователей их нет.
Sendmail их видит как локальных и создает автоматом для них ящики в /var/spool/mail.
Кроме того, sendmail можно настроить что бы и все остальные базы (aliases, access и т.д.) тоже будут храниться в ldap.
sendmail сам по себе ничего не создает. Его можно назвать wrapper'ом, потому как на каждый случай он запускает отдельный процесс, именуемый mailer'ом. В случае локальной доставки этот процесс может быть либо mail.local, либо procmail - они-то и создают ящики.
я так понял, ты реализацию через pam_ldap делал?я бы не сказал, что это "легко и приятно". Странно, если у тебя это заработало с полпинка, лично мне приходилось и исходнички поправлять. В pam_nss в частности класс PosixAccount зашит намертво, а в NDS этого класса по умолчанию нету. Конечно, если реализовывать авторизацию на OpenLdap, все куда как более просто. С NDS все по-другому.
очепятался pam_nss == nss_ldap
И какой же "геморой" при поднятии сервара LDAP для централизованной аутенфикации?з.ы. У меня два сервера LDAP на разных работах, все поднимается без проблем, если даже делать все по инструкции..
>И какой же "геморой" при поднятии сервара LDAP для централизованной >аутенфикации?авторизации
>з.ы. У меня два сервера LDAP на разных работах, все поднимается без
>проблем, если даже делать все по инструкции..Какие LDAP-сервера? NDS?
я предложил два метода (вернее я предложил один, а с LDAP идейку предложил другой товарищ)первый - делать шелл пользователю в виде /bin/passwd (или как он там в разных системах именуется). Дешево и сердито.
второй - организовывать LDAP. Способ красивый, спору нет. Но с изначальной задачей смены пароля ввиду отсутствия мало-мальски функциональных интерфейсов к LDAP. Хотя для задачи смены пароля можно и самому накатать. Дурное дело нехитрое. По уму тут как раз в крупных конторах следовало бы обратить внимание на Novell, ибо у последнего окромя клиента под Win существует еще дофига утилиток, типа ConsoleOne - с приятственным графическим интерфейсом.
Просто поставь poppassd (http://echelon.pl/pubs/poppassd.html или на www.freshmeat.net) - есть версии, кот. меняют /etc/passwd напрямую и
кот. работают через PAM.
WWW-интерфейс к нему можно взять, например, с http://www.westnet.com/providers/ (см. wwwpass) + неокторые почтовые программы умеют общаться с ним напрямую без всяких дополнительных примочек.
Например, Eudora, для которой изначально это всё и было разработано.
>Просто поставь 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, видим запрос на ввод старого пароля и дважды нового пароля. Про имя пользователя упоминания нет. Значит, предполагается, что я уже сообщал его раньше? Очень похоже на диалапские штучки. Короче, есть смысл биться в этом направлении?
У меня стоит openldap сервер. Поднимай не пожалеешь.
Пароли пользователи меняют через самбу ;) сами!
>Насколько я понял, Sendmail создаёт почтовые ящики юзерам, чья учётная запись имеется
>в системе. И пароль к почте тот, который используется для входа
>в систему. Так или нет? Это первый вопрос. Вопрос второй: понимая
>справедливое желание пользователей менять пароль на доступ к почте, как это
>организовать? Понятно, что это должен быть WEB-интерфейс, поскольку всякие Telnet'ы и
>SSH'и - штуки, про которые нормальный непродвинутый юзер может даже и
>не слышать. Наверное, надо использовать PERL. Нельзя ли наставить меня на
>путь истинный в двух словах (желательно цензурных)? Мож утилита какА есть?
>
Попробуй passwdd - нормально приворачивается к вебу
>Попробуй passwdd - нормально приворачивается к вебуУ меня чё-та и WEB не встаёт:
Inetserv# apachectl start
/usr/local/sbin/apachectl start: httpd could not be started
Inetserv#Вот такая радость...
Докладываю: poppassd поставил. Попробовал менять пароль через Telnet. Получилось, хотя после УСПЕШНОЙ смены пароля она всё равно ругается, что "Unable change password." В принципе, и фиг с ней.
Начал прикручивать WEB-интерфейс с http://www.westnet.com/providers/ (wwwpass). Тут возникли вопросы. Например, возникло предположение, что эта фенька - для диалапщиков (поскольку присутствует файл с завораживающим названием get_dialup.pl, который README предписывает засунуть in your cgi-bin directory. Кроме того, обратившись к странице change_passwd.html, видим запрос на ввод старого пароля и дважды нового пароля. Про имя пользователя упоминания нет. Значит, предполагается, что я уже сообщал его раньше? Очень похоже на диалапские штучки. Короче, есть смысл биться в этом направлении?
Вот ещё 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)
?>
Вот простейший код на 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, но чтобы иметь заверенный сертификат, придется хорошо заплатить
А может кто-нибудь подскажет как переташить пользователей с их паролями из smbpasswd в LDAP?