LINUX.ORG.RU
ФорумAdmin

ASP webmail


0

0

Ктонить webmail в asp9 прикручивал с виртуальными усерами от мускля типа postfix + courier + mysql + webmail по образу типа от multik В логах webmail пишет про несуществующего пользователя ivanov хотя в логин пихаю ivanov@domen.ru. Cоответственно в mysql он уже такой и есть-ivanov@domen.ru Но получаю отлуп (наверное по этому). Хелп ми Где надо мне копать.

anonymous

А нарисуй сюдыть "grep '^[^#]' authmysqlrc" (биспаролейибонафикнинада), и заодно "select * from users where id='ivanov@domain.ru';"

anonymous
()
Ответ на: комментарий от anonymous

Да сам постфикс + курьер работает на базе мускля и стоит squirrel где логин тоже так заводится ivanov@domen.ru (доменов несколько) хотя на ivanov тоже срабатывает Хотел поглядеть на вебмаил (подвид neomail). Там на перле идет mysql аутентификация. Ваши рекомендации сейчас проверю. только перегрузится надо в линукс.

anonymous
()
Ответ на: комментарий от anonymous

Комманда grep '^[^#]' authmysqlrc (это аутентификатор от courier )

MYSQL_SERVER localhost MYSQL_USERNAME 123456man MYSQL_PASSWORD 654321 MYSQL_SOCKET /var/lib/mysql/mysql.sock MYSQL_PORT 3306 MYSQL_OPT 0 MYSQL_DATABASE mail MYSQL_USER_TABLE aliases MYSQL_CLEAR_PWFIELD password DEFAULT_DOMAIN domain.ru MYSQL_UID_FIELD id MYSQL_GID_FIELD gid MYSQL_LOGIN_FIELD alias MYSQL_HOME_FIELD home MYSQL_NAME_FIELD info MYSQL_MAILDIR_FIELD maildir MYSQL_QUOTA_FIELD quota

затем mysql -u 123456man use mail; select * from aliases where alias='ivanov@domain.ru'; 1 row is set и на экране господин с логином ivanov@domain.ru паролем и т д. Идем дальше Я ужу выше отметил что все работает. До webmail-а. Webmail использует свой аутентификатор auth_mysql.pl Вот его начало:

package openwebmail::auth_mysql; use strict; # # auth_mysql.pl - authenticate user with DBD::MySQL # # 2002/03/07 Alan Sung - AlanSung@dragon2.net # # здесь настройки как и в authmysqlrc (по моему-так) my $SQLHost = "localhost"; # INSERT THE MYSQL SERVER IP HERE. my $sqlusr = "123456man"; # INSERT THE MYSQL USER HERE. my $sqlpwd = "654321"; # INSERT THE MYSQL PASSWORD HERE.

my $auth_db = "mail"; my $auth_table = "aliases"; my $field_username = "alias"; my $field_password = "password"; my $field_realname = "alias"; my $field_uid = "id"; my $field_gid = "gid"; my $field_home = "maildir";

my $pass_type = "cleartxt"; # crypt, cleartxt (меня смущает 2 имени username и realname) ################### No configuration required from here ################### # 0 : ok # -2 : parameter format error # -3 : authentication system/internal error # -4 : user doesn't exist sub get_userinfo { my ($r_config, $user)=@_; return(-2, 'User is null') if (!$user);

my $dbh = DBI->connect("dbi:mysql:$auth_db;host=$SQLHost", $sqlusr,$sqlpwd) or return(-3, "Cannot connect to db server: ".$DBI::errstr); my $queryStr =qq|select $field_uid, $field_gid, $field_realname, $field_home from $auth_table where strcmp($field_username , '$user')=0|; my $sth = $dbh->prepare($queryStr) or return(-3, "Can't prepare SQL statement: ".$dbh->errstr()); $sth->execute or return(-3, "Can't execute SQL statement: ".$sth->errstr());

if ($sth->rows eq 0) { $sth->finish; $dbh->disconnect or return(-3, "Disconnection failed: ".$DBI::errstr); return (-4, "User $user doesn't exist"); } else { if (my $result = $sth->fetchrow_hashref()) { $sth->finish; $dbh->disconnect or return(-3, "Disconnection failed: ".$DBI::errstr);; return(0, '', $result->{$field_realname}, $result->{$field_uid}, $result->{$field_gid}, $result->{$field_home}); } else { return(-3, "Can't fetch SQL result: ".$sth->errstr()); } } } Это 1 функция на которой и вылетает мой ivanov Как лечить. А вот в логах webmail.log Thu Jul 17 00:35:09 2003 - [6460] (127.0.0.1) ivanov - userinfo error - auth_mysql.pl, ret -4, User ivanov doesn't exist Thu Jul 17 00:35:19 2003 - [6460] (127.0.0.1) ivanov - login error - no such user - loginname=ivanov@domain.ru

Как отследить где происходит ошибка.

anonymous
()

И впрямь здря выпрошены конфиги курьера... устойчивое подозрение, что шибка вумный скрыпт обрезает доменную часть. Можешь понатыкать в скрипт каких-нибудь вставок для выяснения? Кстати, а что за webmail?

anonymous
()
Ответ на: комментарий от anonymous

Это openwebmail-2.0.8.asp.src.rpm идет в составе asp9 стянул оказалось на основе neomail По внешним признакам на маил.ру похож картинками. :) Внутрь пока не попал не пускает зараза :). Есть еще скрипт для postfix+vmail системы там как раз все user+domain пользователи. но на основе db # use nobody for all virtual users mailbox by default my $local_uid=getpwnam('nobody');

################### No configuration required from here ###################

use Fcntl qw(:DEFAULT :flock); require "filelock.pl";

# 0 : ok # -2 : parameter format error # -3 : authentication system/internal error # -4 : user doesn't exist

sub get_userinfo { my ($r_config, $user_domain)=@_;

return(-2, 'Not valid user@domain format') if ($user_domain !~ /(.+)[\@:!](.+)/);

my ($user, $domain)=($1, $2);

my ($uid, $gid, $realname, $homedir) = (getpwuid($local_uid))[2,3,6,7];

return(-4, "User $user_domain doesn't exist") if ($uid eq "");

Видно придется всматриваться поглубже.

anonymous
()

Дык эта. Что и следовало ожидать. Вот этот кусок:

... /(.+)[\@:!](.+)/ ...
my ($user, $domain)=($1, $2);

Разделяет юзерскую и доменную часть, подлец.
А в ещевышеуказанном примере работа идет с $user.
my $queryStr =qq|select $field_uid, $field_gid, $field_realname,
$field_home from $auth_table
where strcmp($field_username, '$user')=0|;

В последней строчке поменяй
strcmp($field_username, '$user')=0 на strcmp($field_username, '$user@$domain')=0
И должно быть щастье. Если щастья не будет, ишши подобные строки.

anonymous
()
Ответ на: комментарий от anonymous

Выяснил что надо не $user@$domaen а $user\@$domain скрипт перловый а не пхп осталось с другого где раздвоение идет начало взять т как где еще домен найти. Спа

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.