Страница 2 из 4
Re: postfixadmin 2.2
Добавлено: 2008-09-04 12:38:57
Alex_hha
Нашел глюк в postfixadmin-2.2.1.
В скрипте backup.php есть код
$tables = array(
'admin',
'alias',
'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'vacation',
'vacation_notification'
);
Теперь смотрим таблицы в БД
Код: Выделить всё
mysql> show tables;
+-----------------------+
| Tables_in_postfix |
+-----------------------+
| admin |
| alias |
| config |
| domain |
| domain_admins |
| fetchmail |
| log |
| mailbox |
| vacation |
| vacation_notification |
+-----------------------+
10 rows in set (0.00 sec)
Таблицы alias_domain вообще нет. Как они тестировали?
Re: postfixadmin 2.2
Добавлено: 2008-10-14 15:48:49
urusha
Кому интересно:
Вобщем, хотел сделать чтоб админка при создании ящика создавала папки (спам, черновики и все подобное), для этого в config.inc.php добавил/раскоментил
Код: Выделить всё
$CONF['create_mailbox_subdirs']=array('Junk','Sent','Drafts','Templates');
$CONF['create_mailbox_subdirs_host']='localhost';
$CONF['create_mailbox_subdirs_hostoptions']=array('novalidate-cert');
последняя чтоб не было проблем с сертификатами tls (у меня были, ругался "tlsv1 alert unknown ca")
но админка напрочь отказывалась создавать папки, хотя imap-login совершался и корневая папка соответственно создавалась.
пошел я в httpd-error.log а там увидел
Код: Выделить всё
Character not allowed in mailbox name: '.' и тд
начал рыскать по скриптам админовким и таки нашел неполатку:
в functions.inc.php в 1922 строке вместо
должно быть
по крайней мере у меня так все прекрасно заработало, ура! По моему это реальне баг. похоже что-то с mbox-mdir. не знаю. У меня mdir
Версии продуктов: apache 2.2.9_5, postfixadmin 2.2.1.1, dovecot 1.1.2_1, php5-5.2.6_1, php5-imap-5.2.6_1
Спасибо за внимание
Re: postfixadmin 2.2
Добавлено: 2008-10-14 19:18:31
Morty
а ...
покажите кто-нибудь что в таблице fetchmail
Re: postfixadmin 2.2
Добавлено: 2008-10-19 14:25:17
Alteron
А у меня проблема такая: не логинит юзеров с эксплорером. Указываешь правильное имя и пароль, выкидывает обратно в логин. Указываешь неправильно имя или пароль, говорит, что ошибка.
Я так понимаю, что массив _SESSION не передаётся.
Я использую SeaMonkey, меня пускает. Но у меня куча эникейщиков-админов, которые эксплорером пользуются. Специально для них пытаюсь поднять вэб, чтобы для создания юзера меня больше не отрывали.
Re: postfixadmin 2.2
Добавлено: 2008-10-20 10:19:04
Alex_hha
Отлично работает с ie 6.x, 7.x
Re: postfixadmin 2.2
Добавлено: 2008-10-20 18:38:17
Alteron
Странно. Пробовал с двух домашних машин, рабочей - фигу.
Ладно, поставлю 3-й СП, вдруг поможет.
Re: postfixadmin 2.2
Добавлено: 2008-10-21 8:19:17
freeman
lissyara писал(а):пиляд...
надо статью переписывать
))
почти офтоп. А если я не хочу новьё юзать, а полюбил своё пиленное ?
WIKI чем хорошо бы было - там можно старую версию посмотреть даже если уже внесли изменения соотв. новому
Re: postfixadmin 2.2
Добавлено: 2008-10-21 9:54:40
Alex_hha
Странно. Пробовал с двух домашних машин, рабочей - фигу.
Ладно, поставлю 3-й СП, вдруг поможет.
та при чем тут SP ?!!!
Re: postfixadmin 2.2
Добавлено: 2008-10-22 11:37:03
kotsur
таки кто-нить разобрался с косяком postfixadmin 2.2 при создании админа когда setup выдает
Код: Выделить всё
DEBUG INFORMATION:
Invalid query: Access denied for user 'exim'@'localhost' to database 'exim'
или создавать админа в базе ручками?
Re: postfixadmin 2.2
Добавлено: 2008-10-22 11:46:27
kotsur
kotsur писал(а):таки кто-нить разобрался с косяком postfixadmin 2.2 при создании админа когда setup выдает
Код: Выделить всё
DEBUG INFORMATION:
Invalid query: Access denied for user 'exim'@'localhost' to database 'exim'
или создавать админа в базе ручками?
поборол. хотя странно как-то...
сделал в мускуле
Код: Выделить всё
>USE exim;
>GRANT ALL PRIVILEGES ON exim.* TO exim@localhost;
>GRANT USAGE ON exim.* TO exim@localhost;
>QIUT;
все заработало
Re: postfixadmin 2.2
Добавлено: 2008-10-23 12:45:34
flus
Подскажите, откуда постфикс берет вот эту часть пути к почтовому ящику - "/usr/local/virtual/"?
Re: postfixadmin 2.2
Добавлено: 2008-10-23 15:21:33
Alex_hha
Это просто пример, как правило к пути, хранимому в БД прибавляется virtual_mailbox_base
Re: postfixadmin 2.2
Добавлено: 2008-10-28 15:29:57
ruslan
Alex_hha писал(а):Нашел глюк в postfixadmin-2.2.1.
В скрипте backup.php есть код
$tables = array(
'admin',
'alias',
'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'vacation',
'vacation_notification'
);
Теперь смотрим таблицы в БД
Код: Выделить всё
mysql> show tables;
+-----------------------+
| Tables_in_postfix |
+-----------------------+
| admin |
| alias |
| config |
| domain |
| domain_admins |
| fetchmail |
| log |
| mailbox |
| vacation |
| vacation_notification |
+-----------------------+
10 rows in set (0.00 sec)
Таблицы alias_domain вообще нет. Как они тестировали?
Закоментил левую таблицу и понеслось
Код: Выделить всё
$tables = array(
'admin',
'alias',
// 'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'vacation',
'vacation_notification'
);
Автору уже сообщили - пофиксит в след версиях
Re: postfixadmin 2.2
Добавлено: 2008-10-28 16:34:19
Alex_hha
Писалось уже об этом, см первый пост на второй странице
Так же еще глюк в функции
smtp_mail из файла function.inc.php
Вместо
Код: Выделить всё
else
{
fputs ($fh, "EHLO $smtp_server\r\n");
$res = smtp_get_response($fh);
надо использовать
Код: Выделить всё
else
{
$res = smtp_get_response($fh);
fputs ($fh, "EHLO $smtp_server\r\n");
$res = smtp_get_response($fh);
Ибо перед тем как слать HELO/EHLO надо дождаться приветствия сервера
Re: postfixadmin 2.2
Добавлено: 2008-11-06 14:08:43
Saneh
Alex_hha писал(а):Нашел глюк в postfixadmin-2.2.1.
В скрипте backup.php есть код
$tables = array(
'admin',
'alias',
'alias_domain',
'config',
'domain',
'domain_admins',
'fetchmail',
'log',
'mailbox',
'vacation',
'vacation_notification'
);
Теперь смотрим таблицы в БД
Код: Выделить всё
mysql> show tables;
+-----------------------+
| Tables_in_postfix |
+-----------------------+
| admin |
| alias |
| config |
| domain |
| domain_admins |
| fetchmail |
| log |
| mailbox |
| vacation |
| vacation_notification |
+-----------------------+
10 rows in set (0.00 sec)
Таблицы alias_domain вообще нет. Как они тестировали?
сделал как написано
при создании почтового ящика:
Код: Выделить всё
Почтовый ящик был успешно создан, но в нем не удалось создать (некоторые) стандартные папки
(my@ara.ru
а в логах апача
Код: Выделить всё
Apache/2.2.9 (FreeBSD) mod_ssl/2.2.9 OpenSSL/0.9.8e DAV/2 PHP/5.2.5 with Suhosin-Patch configured -- resuming normal operations
or] [client 192.168.1.23] Could not log into IMAP/POP server: TLS/SSL failure for localhost: SSL negotiation failed, referer: http://192.168.1.6/postfixadmin/create-mailbox.php
Re: postfixadmin 2.2
Добавлено: 2008-11-06 14:10:22
Sanyh
выше это был я
стоит у меня exim+courier imap
Re: postfixadmin 2.2
Добавлено: 2008-11-06 15:43:20
Sanyh
кто нибудь ответит?
Re: postfixadmin 2.2
Добавлено: 2008-11-07 8:19:15
Alteron
2 Alex_hha
У тебя какой апач стоит? Сдаётся мне, что постфикс админ не логонит юзеров с эксплорером из-за того, что у меня апач 1.3 стоит.
Re: postfixadmin 2.2
Добавлено: 2008-11-07 12:54:36
Alex_hha
# pkg_info | grep apache
apache+mod_ssl-1.3.41+2.8.31 The Apache 1.3 webserver with SSL/TLS functionality
исправь
Re: postfixadmin 2.2
Добавлено: 2008-11-07 17:22:06
Belfigor
Всем добрый вечер , люди , я если честно уже тоже намыкался с этим
postfixadmin и нашёл для себе альтернативу , вот этот скрипт , он правда на немецком , но регистрирует домены и юзеров только в путь , можно отредактировать под себя , пашет он на 5 с + ! так что если кому нужно , юзайте !
Код: Выделить всё
<?PHP
/* #### +NFOs+ ####
Postfix-Mail-Account Management Script (with MySQL+PHP)
Coder: R.T. @ preisroboter.de (tiebel@preisroboter.de)
Codestyle: Quick & Dirty (but still works fine ;)
"Copyrights": GNU / GPL
Just change the VARs to yout environment (DB) and
restrict the access on this file with e.g. htaccess
DOWNLOAD: http://ronnytiebel.de/download.php?id=5
#### -NFOs- #### */
/* #### +Var-Setup+ #### */
define('db_server','localhost');
define('db_name','mailserver');
define('db_user','mailuser');
define('db_pwd','mailuser2006');
$tbl[1] = "virtual_aliases";
$tbl[2] = "virtual_domains";
$tbl[3] = "virtual_users";
/* #### -Var-Setup- #### */
/* #### +Functions+ #### */
function query($sql)
{
global $cid;
if($sql) return mysql_query($sql,$cid);
//else die(mysql_error());
}
function fetch($res)
{
if($res) return mysql_fetch_array($res);
else return false;
}
function connect()
{
global $cid,$db;
$cid = mysql_connect(db_server,db_user,db_pwd);
If($cid) $db = mysql_select_db(db_name,$cid);
else die(mysql_error());
}
function disconnect()
{
global $cid;
if(!(mysql_close($cid))) die("Fehler beim trennen der Verbindung!");
}
/* #### -Functions- #### */
/* #### +Initialize+ #### */
connect();
$do = $_REQUEST['do'];
$id = $_REQUEST['id'];
$new = $_REQUEST['new'];
$del = $_REQUEST['del'];
$chg = $_REQUEST['chg'];
$ack = $_REQUEST['ack'];
$domain = $_REQUEST['domain'];
$source = $_REQUEST['src'];
$usr = $_REQUEST['usr'];
$pwd = $_REQUEST['pwd'];
$dest = $_REQUEST['dest'];
$ndomain = $_REQUEST['new_domain'];
$sql[1] = "SELECT virtual_aliases.id, virtual_domains.name, virtual_aliases.source, virtual_aliases.destination FROM virtual_aliases, virtual_domains WHERE virtual_aliases.domain_id = virtual_domains.id;";
$sql[2] = "SELECT * FROM virtual_domains;";
$sql[3] = "SELECT virtual_users.id, virtual_domains.name, virtual_users.user FROM virtual_users, virtual_domains WHERE virtual_users.domain_id = virtual_domains.id;";
if(($domain <> "") && ($source <> "") && ($dest <> "")) $sql[4] = "INSERT INTO virtual_aliases VALUES (NULL,'$domain','$source','$dest');";
if($ndomain <> "")
{
$sql0 = "SELECT name FROM virtual_domains WHERE name = '$ndomain';";
$qr = query($sql0);
if(mysql_num_rows($qr) < 1) $sql[5] = "INSERT INTO virtual_domains VALUES(NULL,'$ndomain');";
}
if(($domain <> "") && ($usr <> "") && ($pwd <> ""))
{
$sql1 = "SELECT domain_id, user, password FROM virtual_users WHERE domain_id = $domain AND user = '$usr' AND password = '".md5($pwd)."';";
$qr = query($sql1);
if(mysql_num_rows($qr) < 1) $sql[6] = "INSERT INTO virtual_users VALUES(NULL,'$domain','$usr','".md5($pwd)."');";
}
if(($del <> "") && ($id <> "") && ($ack == "JA"))
{
$sql = "DELETE FROM ".$tbl[$del]." WHERE id = $id;";
query($sql);
}
if(($chg == 1) && ($id <> "") && ($domain <> "") && ($source <> "") && ($dest <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET domain_id = '".$domain."', source = '".$source."', destination = '".$dest."' WHERE id = ".$id.";";
query($sql);
}
if(($chg == 2) && ($id <> "") && ($domain <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET name='".$domain."' WHERE id = ".$id.";";
query($sql);
}
if(($chg == 3) && ($id <> "") && ($domain <> "") && ($usr <> "") && ($pwd <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET domain_id ='".$domain."', user ='".$usr."', password = '".md5($pwd)."' WHERE id = ".$id.";";
query($sql);
}
if($do) $qry = query($sql[$do]);
if($qry) $result = true;
else $result = false;
/* #### -Initialize- #### */
/* #### +Code+ #### */
echo<<<html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Mail-Control</title>
<meta name="AUTHOR" content="RT">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
</head>
<body>
<center>
<h2>Mail-Control v1.0</h2>
<a href="?do=1">Aliases</a> | <a href="?do=2">Domains</a> | <a href="?do=3">User</a>
</center>
<hr>
html;
switch($new) {
case 1:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$out = 'Neuer Alias<center><form action="?do=4" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Domain:</td>';
$out.= '<td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$out.= '<option value="'.$row[0].'">'.$row[1].'</option>';
}
$out.= '</select></td></tr>';
$out.= '<tr><td align="right">Source:</td><td align="left"><input type="text" name="src" size=20></input></td></tr>';
$out.= '<tr><td align="right">Destination:</td align="left"><td><input type="text" name="dest" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
case 2:
$out = 'Neue Domain<center><form action="?do=5" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Name:</td><td align="left"><input type="text" name="new_domain" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
case 3:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$out = 'Neuer User<center><form action="?do=6" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Domain:</td>';
$out.= '<td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$out.= '<option value="'.$row[0].'">'.$row[1].'</option>';
}
$out.= '</select></td></tr>';
$out.= '<tr><td align="right">Benutzername:</td><td align="left"><input type="text" name="usr" size=20></input></td></tr>';
$out.= '<tr><td align="right">Passwort:</td align="left"><td><input type="text" name="pwd" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
}
switch($do) {
case 1:
$out ="Alias-Verwaltung";
$out.='<center><a href="?new=1">Alias hinzu</a></center><br><br>';
$out.='<table width="80%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b>Aktion</b></td><td><b>ID</b></td><td><b>Domain</b></td><td><b>Quelle</b></td><td><b>Ziel</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=1&id='.$row[0].'" title="Diesen Datensatz löschen">DEL</a> / <a href="?chg=1&id='.$row[0].'" title="Diesen Datensatz ändern">CHG</a></td><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td><td>'.$row[3].'</td></tr>';
}
$out.='</table>';
break;
case 2:
$out = "Domain-Verwaltung";
$out.='<center><a href="?new=2">Domain hinzu</a></center><br><br>';
$out.='<table width="40%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b>Aktion</b></td><td><b>ID</b></td><td><b>Name</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=2&id='.$row[0].'" title="Diesen Datensatz löschen">DEL</a> / <a href="?chg=2&id='.$row[0].'" title="Diesen Datensatz ändern">CHG</a></td><td>'.$row[0].'</td><td>'.$row[1].'</td></tr>';
}
$out.='</table>';
break;
case 3:
$out = "User-Verwaltung";
$out.='<center><a href="?new=3">User hinzu</a></center><br><br>';
$out.='<table width="60%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b>Aktion</b></td><td><b>ID</b></td><td><b>Domain</b></td><td><b>User</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=3&id='.$row[0].'" title="Diesen Datensatz löschen">DEL</a> / <a href="?chg=3&id='.$row[0].'" title="Diesen Datensatz ändern">CHG</a></td><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td></tr>';
}
$out.='</table>';
break;
case 4:
if($result == true) $out = "<center><b>Alias wurde hinzugefügt...</b></center>";
else $out = "<center><h3>FEHLER beim einfügen!!!</h3></center>";
break;
case 5:
if($result == true) $out = "<center><b>Domain wurde hinzugefügt...</b></center>";
else $out = "<center><h3>FEHLER beim einfügen!!!</h3></center>";
break;
case 6:
if($result == true) $out = "<center><b>User wurde hinzugefügt...</b></center>";
else $out = "<center><h3>FEHLER beim einfügen!!!</h3></center>";
break;
}
switch($del) {
case 1:
if($ack == "")
{
$out = '<center><h3>Diesen Alias wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>Alias wurde gelöscht...</b><br><a href="?do=1">Zurück</a></center>';
}
else $out = '<center><a href="?do=1">Zurück</a></center>';
break;
case 2:
if($ack == "")
{
$out = '<center><h3>Diese Domain wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>Domain wurde gelöscht...</b><br><a href="?do=2">Zurück</a></center>';
}
else $out = '<center><a href="?do=2">Zurück</a></center>';
break;
case 3:
if($ack == "")
{
$out = '<center><h3>Diesen User wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>User wurde gelöscht...</b><br><a href="?do=3">Zurück</a></center>';
}
else $out = '<center><a href="?do=3">Zurück</a></center>';
break;
}
switch($chg) {
case 1:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$sql = "SELECT * FROM virtual_aliases WHERE id=".$id.";";
$qry2 = query($sql);
$details = fetch($qry2);
if($ack == "")
{
$out = '<center>Alias bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$sel = "";
if($row[0] == $details['domain_id']) $sel = "selected";
$out.= '<option value="'.$row[0].'" '.$sel.'>'.$row[1].'</option>';
}
$out.= '</td></tr>';
$out.= '<tr><td align="right">Quelle:</td><td align="left"><input type="text" name="src" size=20 value="'.$details['source'].'"></input></td></tr>';
$out.= '<tr><td align="right">Ziel:</td><td align="left"><input type="text" name="dest" size=20 value="'.$details['destination'].'"></input></td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>Alias wurde geändert...</b><br><a href="?do=1">Zurück</a></center>';
}
else $out = '<center><a href="?do=1">Zurück </a></center>';
break;
case 2:
$sql = "SELECT name FROM virtual_domains WHERE id=".$id.";";
$qry = query($sql);
if($ack == "")
{
$dom = fetch($qry);
$out = '<center>Domain bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><input type="text" name="domain" size=20 value="'.$dom['name'].'"></input>';
$out.= '</td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>Domain wurde geändert...</b><br><a href="?do=2">Zurück</a></center>';
}
else $out = '<center><a href="?do=2">Zurück </a></center>';
break;
case 3:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$sql = "SELECT * FROM virtual_users WHERE id=".$id.";";
$qry2 = query($sql);
$details = fetch($qry2);
if($ack == "")
{
$out = '<center>User bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$sel = "";
if($details['domain_id'] == $row[0]) $sel = "selected";
$out.= '<option value="'.$row[0].'" '.$sel.'>'.$row[1].'</option>';
}
$out.= '</td></tr>';
$out.= '<tr><td align="right">Name:</td><td align="left"><input type="text" name="usr" size=20 value="'.$details['user'].'"></input></td></tr>';
$out.= '<tr><td align="right">Password:</td><td align="left"><input type="text" name="pwd" size=20 value=""></input></td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>User wurde geändert...</b><br><a href="?do=3">Zurück</a></center>';
}
else $out = '<center><a href="?do=3">Zurück </a></center>';
break;
}
echo $out;
echo<<<html
</body>
</html>
html;
/* #### -Code- #### */
?>
Re: postfixadmin 2.2
Добавлено: 2008-11-07 17:28:40
ProFTP
ящеги он не создает автоматом после того как данные будут в таблице?
или руками надо?
Re: postfixadmin 2.2
Добавлено: 2008-11-07 18:54:52
Belfigor
ProFTP писал(а):ящеги он не создает автоматом после того как данные будут в таблице?
или руками надо?
Создаёт , у меня все юзеры вида
belfigor@stopxaker.ru
Код: Выделить всё
Aktion ID Domain User
DEL / CHG 42 stopxaker.ru 666
DEL / CHG 25 stopxaker.ru ali
DEL / CHG 24 stopxaker.ru anet
DEL / CHG 17 stopxaker.ru AnyKey
DEL / CHG 1 stopxaker.ru belfigor
Я конечно не кодер , но я его по ламерски отредактиовал , что у меня теперь юзеры сами регинятся в локалке
вот скрипт, сильно не пинайте
_________________________________________________________________________________________________________
Код: Выделить всё
<style type="text/css">
<!--
.стиль2 {color: #00FF00}
body,td,th {
font-family: Times New Roman, Times, serif;
font-size: 24px;
color: #000066;
}
body {
background-color: #00FF99;
background-image: url();
}
a {
font-size: 24px;
font-family: Times New Roman, Times, serif;
}
a:link {
color: #000066;
}
a:visited {
color: #996633;
}
a:hover {
color: #0066CC;
}
.стиль6 {color: #004000}
.стиль7 {color: #800000}
-->
</style>
<h2><a href="index.php"><img src="logo.gif" width="340" height="86" border="0" /></a><a href="http://10.159.42.58" target="_top"></a><strong><cite>Регистрация почты на Stopxaker.ru</cite></strong></h2>
<p class="стиль2"><a href="http://10.159.42.58/index.php?module=News&do=View&id=57"><font face="Times New Roman, Times, serif"> (Начать пользоваться почтой </font></a></p>
<p class="стиль2"><a href="http://10.159.42.58/userreg.php">Вернуться назад</a></p>
<p class="стиль2">
<a href="http://10.159.42.58/forum/">Forum</a>
<a href="http://10.159.42.58/">Stop }{aKeR</a>
<span class="стиль7">
<?PHP
/* #### +NFOs+ ####
Postfix-Mail-Account Management Script (with MySQL+PHP)
Coder: R.T. @ preisroboter.de (tiebel@preisroboter.de)
Codestyle: Quick & Dirty (but still works fine ;)
"Copyrights": GNU / GPL
Just change the VARs to yout environment (DB) and
restrict the access on this file with e.g. htaccess
DOWNLOAD: http://ronnytiebel.de/download.php?id=5
#### -NFOs- #### */
/* #### +Var-Setup+ #### */
define('db_server','localhost');
define('db_name','mailserver');
define('db_user','mailuser');
define('db_pwd','mailuser2006');
$tbl[1] = "virtual_aliases";
$tbl[2] = "virtual_domains";
$tbl[3] = "virtual_users";
/* #### -Var-Setup- #### */
/* #### +Functions+ #### */
function query($sql)
{
global $cid;
if($sql) return mysql_query($sql,$cid);
//else die(mysql_error());
}
function fetch($res)
{
if($res) return mysql_fetch_array($res);
else return false;
}
function connect()
{
global $cid,$db;
$cid = mysql_connect(db_server,db_user,db_pwd);
If($cid) $db = mysql_select_db(db_name,$cid);
else die(mysql_error());
}
function disconnect()
{
global $cid;
if(!(mysql_close($cid))) die("Fehler beim trennen der Verbindung!");
}
/* #### -Functions- #### */
/* #### +Initialize+ #### */
connect();
$do = $_REQUEST['do'];
$id = $_REQUEST['id'];
$new = $_REQUEST['new'];
$del = $_REQUEST['del'];
$chg = $_REQUEST['chg'];
$ack = $_REQUEST['ack'];
$domain = $_REQUEST['domain'];
$source = $_REQUEST['src'];
$usr = $_REQUEST['usr'];
$pwd = $_REQUEST['pwd'];
$dest = $_REQUEST['dest'];
$ndomain = $_REQUEST['new_domain'];
$sql[1] = "SELECT virtual_aliases.id, virtual_domains.name, virtual_aliases.source, virtual_aliases.destination FROM virtual_aliases, virtual_domains WHERE virtual_aliases.domain_id = virtual_domains.id;";
$sql[2] = "SELECT * FROM virtual_domains;";
$sql[3] = "SELECT virtual_users.id, virtual_domains.name, virtual_users.user FROM virtual_users, virtual_domains WHERE virtual_users.domain_id = virtual_domains.id;";
if(($domain <> "") && ($source <> "") && ($dest <> "")) $sql[4] = "INSERT INTO virtual_aliases VALUES (NULL,'$domain','$source','$dest');";
if($ndomain <> "")
{
$sql0 = "SELECT name FROM virtual_domains WHERE name = '$ndomain';";
$qr = query($sql0);
if(mysql_num_rows($qr) < 1) $sql[5] = "INSERT INTO virtual_domains VALUES(NULL,'$ndomain');";
}
if(($domain <> "") && ($usr <> "") && ($pwd <> ""))
{
$sql1 = "SELECT domain_id, user, password FROM virtual_users WHERE domain_id = $domain AND user = '$usr' AND password = '".md5($pwd)."';";
$qr = query($sql1);
if(mysql_num_rows($qr) < 1) $sql[6] = "INSERT INTO virtual_users VALUES(NULL,'$domain','$usr','".md5($pwd)."');";
}
if(($del <> "") && ($id <> "") && ($ack == "JA"))
{
$sql = "DELETE FROM ".$tbl[$del]." WHERE id = $id;";
query($sql);
}
if(($chg == 1) && ($id <> "") && ($domain <> "") && ($source <> "") && ($dest <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET domain_id = '".$domain."', source = '".$source."', destination = '".$dest."' WHERE id = ".$id.";";
query($sql);
}
if(($chg == 2) && ($id <> "") && ($domain <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET name='".$domain."' WHERE id = ".$id.";";
query($sql);
}
if(($chg == 3) && ($id <> "") && ($domain <> "") && ($usr <> "") && ($pwd <> "") && ($ack == "Speichern"))
{
$sql = "UPDATE ".$tbl[$chg]." SET domain_id ='".$domain."', user ='".$usr."', password = '".md5($pwd)."' WHERE id = ".$id.";";
query($sql);
}
if($do) $qry = query($sql[$do]);
if($qry) $result = true;
else $result = false;
/* #### -Initialize- #### */
/* #### +Code+ #### */
echo<<<html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Mail-Control</title>
<meta name="AUTHOR" content="RT">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<center>
<h2></h2>
<a href=""></a> <a href="?do=2"></a> <a href="?new=3">Регистрация</a>
</center>
<hr>
html;
switch($new) {
case 1:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$out = 'Neuer Alias<center><form action="?do=4" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Domain:</td>';
$out.= '<td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$out.= '<option value="'.$row[0].'">'.$row[1].'</option>';
}
$out.= '</select></td></tr>';
$out.= '<tr><td align="right">Source:</td><td align="left"><input type="text" name="src" size=20></input></td></tr>';
$out.= '<tr><td align="right">Destination:</td align="left"><td><input type="text" name="dest" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
case 2:
$out = 'Neue Домен<center><form action="?do=5" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Name:</td><td align="left"><input type="text" name="new_domain" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
case 3:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$out = 'Новый пользователь<center><form action="?do=6" method="post">';
$out.= '<table width="50%" align="center"><tr><td align="right">Домен:</td>';
$out.= '<td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$out.= '<option value="'.$row[0].'">'.$row[1].'</option>';
}
$out.= '</select></td></tr>';
$out.= '<tr><td align="right">Логин (латиница):</td><td align="left"><input type="text" name="usr" size=20></input></td></tr>';
$out.= '<tr><td align="right">Ваш пароль:</td align="left"><td><input type="text" name="pwd" size=20></input></td></tr>';
$out.= '<tr><td align="right"><input type="reset" value="Reset"></td><td align="left"><input type="submit" value="Ok"></td></tr>';
$out.= '</form></table></center>';
break;
}
switch($do) {
case 1:
$out ="Alias-Verwaltung";
$out.='<center><a href="?new=1">Alias hinzu</a></center><br><br>';
$out.='<table width="80%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b></b></td><td><b>ID</b></td><td><b>Домен</b></td><td><b>Quelle</b></td><td><b>Ziel</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=1&id='.$row[0].'" title="Diesen Datensatz löschen"></a> / <a href="?chg=1&id='.$row[0].'" title="Diesen Datensatz ändern"></a></td><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td><td>'.$row[3].'</td></tr>';
}
$out.='</table>';
break;
case 2:
$out = "Domain-Verwaltung";
$out.='<center><a href="?new=2">Domain hinzu</a></center><br><br>';
$out.='<table width="40%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b></b></td><td><b>ID</b></td><td><b>Name</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=2&id='.$row[0].'" title="Diesen Datensatz löschen"></a> / <a href="?chg=2&id='.$row[0].'" title="Diesen Datensatz ändern"></a></td><td>'.$row[0].'</td><td>'.$row[1].'</td></tr>';
}
$out.='</table>';
break;
case 3:
$out = "Добро пожаловать в регистрационную форму почтового ящика !!!";
$out.='<center><a href="?new=3">Зарегистрироваться</a></center><br><br>';
$out.='<table width="60%" align="center" border=1 rules="all">';
$out.='<tr align=center><td><b></b></td><td><b>ID</b></td><td><b>Domain</b></td><td><b>User</b></td><tr>';
while($row = fetch($qry))
{
$out.='<tr align=center><td><a href="?del=3&id='.$row[0].'" title="Diesen Datensatz löschen"></a> / <a href="?chg=3&id='.$row[0].'" title="Diesen Datensatz ändern"></a></td><td>'.$row[0].'</td><td>'.$row[1].'</td><td>'.$row[2].'</td></tr>';
}
$out.='</table>';
break;
case 4:
if($result == true) $out = "<center><b>Alias wurde hinzugefügt...</b></center>";
else $out = "<center><h3>Спамер ???Всё твой ip уже в базе !</h3></center>";
break;
case 5:
if($result == true) $out = "<center><b>Domain wurde hinzugefügt...</b></center>";
else $out = "<center><h3>Спамер??? Всё твой ip уже в базе</h3></center>";
break;
case 6:
if($result == true) $out = "<center><b>Поздравляем, вы успешно зарегистрированны!!!</b></center>";
else $out = "<center><h3>Спамер??? Всё твой ip уже в базе!</h3></center>";
break;
}
switch($del) {
case 1:
if($ack == "")
{
$out = '<center><h3>Diesen Alias wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>Alias wurde gelöscht...</b><br><a href="?do=1">Zurück</a></center>';
}
else $out = '<center><a href="?do=1">Zurück</a></center>';
break;
case 2:
if($ack == "")
{
$out = '<center><h3>Diese Domain wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>Domain wurde gelöscht...</b><br><a href="?do=2">Zurück</a></center>';
}
else $out = '<center><a href="?do=2">Zurück</a></center>';
break;
case 3:
if($ack == "")
{
$out = '<center><h3>Diesen User wirklich löschen?</h3><form action = "?del='.$del.'&id='.$id.'" method="post">';
$out.= '<input type="submit" name="ack" value="NEIN"> | <input type="submit" name="ack" value="JA"></form>';
}
else if($ack == "JA")
{
$out = '<center><b>User wurde gelöscht...</b><br><a href="?do=3">Zurück</a></center>';
}
else $out = '<center><a href="?do=3">Zurück</a></center>';
break;
}
switch($chg) {
case 1:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$sql = "SELECT * FROM virtual_aliases WHERE id=".$id.";";
$qry2 = query($sql);
$details = fetch($qry2);
if($ack == "")
{
$out = '<center>Alias bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$sel = "";
if($row[0] == $details['domain_id']) $sel = "selected";
$out.= '<option value="'.$row[0].'" '.$sel.'>'.$row[1].'</option>';
}
$out.= '</td></tr>';
$out.= '<tr><td align="right">Quelle:</td><td align="left"><input type="text" name="src" size=20 value="'.$details['source'].'"></input></td></tr>';
$out.= '<tr><td align="right">Ziel:</td><td align="left"><input type="text" name="dest" size=20 value="'.$details['destination'].'"></input></td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>Alias wurde geändert...</b><br><a href="?do=1">Zurück</a></center>';
}
else $out = '<center><a href="?do=1">Zurück </a></center>';
break;
case 2:
$sql = "SELECT name FROM virtual_domains WHERE id=".$id.";";
$qry = query($sql);
if($ack == "")
{
$dom = fetch($qry);
$out = '<center>Domain bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><input type="text" name="domain" size=20 value="'.$dom['name'].'"></input>';
$out.= '</td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>Domain wurde geändert...</b><br><a href="?do=2">Zurück</a></center>';
}
else $out = '<center><a href="?do=2">Zurück </a></center>';
break;
case 3:
$sql = "SELECT id,name FROM virtual_domains;";
$qry = query($sql);
$sql = "SELECT * FROM virtual_users WHERE id=".$id.";";
$qry2 = query($sql);
$details = fetch($qry2);
if($ack == "")
{
$out = '<center>User bearbeiten:<form action = "?chg='.$chg.'&id='.$id.'" method="post">';
$out.= '<table width="50%">';
$out.= '<tr><td align="right">Domain:</td><td align="left"><select name="domain" size=1>';
while($row = fetch($qry))
{
$sel = "";
if($details['domain_id'] == $row[0]) $sel = "selected";
$out.= '<option value="'.$row[0].'" '.$sel.'>'.$row[1].'</option>';
}
$out.= '</td></tr>';
$out.= '<tr><td align="right">Name:</td><td align="left"><input type="text" name="usr" size=20 value="'.$details['user'].'"></input></td></tr>';
$out.= '<tr><td align="right">Password:</td><td align="left"><input type="text" name="pwd" size=20 value=""></input></td></tr>';
$out.= '<tr><td align="right"><input type="submit" name="ack" value="Abbrechen"></td><td align="left"><input type="submit" name="ack" value="Speichern"></td></tr></table></form>';
}
else if($ack == "Speichern")
{
$out = '<center><b>Вы успешно зарегистрированны geändert...</b><br><a href="?do=3">Zurück</a></center>';
}
else $out = '<center><a href="?do=3">Zurück </a></center>';
break;
}
echo $out;
echo<<<html
</body>
</html>
html;
/* #### -Code- #### */
?>
</span></p>
<p>Зарегистрированные
пользователи :
ali ,
anet,
AnyKey,
belfigor,
coolmc,
evgs,
fox71ru,
GOBLIN,
grom,
kostik,
nadejda,
punisher,
raymond,
Vadim,
Erma4ok.</p>
<p>Для проверки работы почты вы можете прислать письмо мне , belfigor@stopxaker.ru </p>
<p>C уважением Администрация (<span class="стиль6">Belfigor</span>) </p>
Re: postfixadmin 2.2
Добавлено: 2008-11-07 18:59:49
ruslan
Гитлер капут
Re: postfixadmin 2.2
Добавлено: 2008-11-07 21:42:57
Alex_hha
От людям делать нефиг
Re: postfixadmin 2.2
Добавлено: 2008-11-07 21:59:12
Belfigor
Alex_hha писал(а):От людям делать нефиг
ну почему же не фиг ?
, скрипт то реально работает , регинит юзеров и домены , что ещё нужно ? всё работает ...