postfixadmin 2.2

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-09-04 12:38:57

Нашел глюк в 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 вообще нет. Как они тестировали?

urusha
рядовой
Сообщения: 20
Зарегистрирован: 2008-09-01 15:06:14

Re: postfixadmin 2.2

Непрочитанное сообщение urusha » 2008-10-14 15:48:49

Кому интересно:
Вобщем, хотел сделать чтоб админка при создании ящика создавала папки (спам, черновики и все подобное), для этого в 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 строке вместо

Код: Выделить всё

$f='{'.$s_host.'}INBOX.'.$f;

должно быть

Код: Выделить всё

$f='{'.$s_host.'}'.$f;

по крайней мере у меня так все прекрасно заработало, ура! По моему это реальне баг. похоже что-то с 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

Спасибо за внимание
и нет не поэтому, и да и поэтому тоже

Аватара пользователя
Morty
ст. лейтенант
Сообщения: 1370
Зарегистрирован: 2007-07-17 23:25:12

Re: postfixadmin 2.2

Непрочитанное сообщение Morty » 2008-10-14 19:18:31

а ...
покажите кто-нибудь что в таблице fetchmail

Alteron
сержант
Сообщения: 230
Зарегистрирован: 2008-07-21 9:35:11

Re: postfixadmin 2.2

Непрочитанное сообщение Alteron » 2008-10-19 14:25:17

А у меня проблема такая: не логинит юзеров с эксплорером. Указываешь правильное имя и пароль, выкидывает обратно в логин. Указываешь неправильно имя или пароль, говорит, что ошибка.
Я так понимаю, что массив _SESSION не передаётся.
Я использую SeaMonkey, меня пускает. Но у меня куча эникейщиков-админов, которые эксплорером пользуются. Специально для них пытаюсь поднять вэб, чтобы для создания юзера меня больше не отрывали.
Измеритель верёвочками.

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-10-20 10:19:04

Отлично работает с ie 6.x, 7.x

Alteron
сержант
Сообщения: 230
Зарегистрирован: 2008-07-21 9:35:11

Re: postfixadmin 2.2

Непрочитанное сообщение Alteron » 2008-10-20 18:38:17

Странно. Пробовал с двух домашних машин, рабочей - фигу.
Ладно, поставлю 3-й СП, вдруг поможет.
Измеритель верёвочками.

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: postfixadmin 2.2

Непрочитанное сообщение freeman » 2008-10-21 8:19:17

lissyara писал(а):пиляд...
надо статью переписывать =)))

почти офтоп. А если я не хочу новьё юзать, а полюбил своё пиленное ? :)
WIKI чем хорошо бы было - там можно старую версию посмотреть даже если уже внесли изменения соотв. новому ;)
Последний раз редактировалось freeman 2008-10-21 10:16:37, всего редактировалось 1 раз.
Остатся должен только один ...

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-10-21 9:54:40

Странно. Пробовал с двух домашних машин, рабочей - фигу.
Ладно, поставлю 3-й СП, вдруг поможет.

та при чем тут SP ?!!!

Аватара пользователя
kotsur
рядовой
Сообщения: 28
Зарегистрирован: 2008-06-23 7:39:37

Re: postfixadmin 2.2

Непрочитанное сообщение kotsur » 2008-10-22 11:37:03

таки кто-нить разобрался с косяком postfixadmin 2.2 при создании админа когда setup выдает

Код: Выделить всё

DEBUG INFORMATION:
Invalid query: Access denied for user 'exim'@'localhost' to database 'exim'


или создавать админа в базе ручками?

Аватара пользователя
kotsur
рядовой
Сообщения: 28
Зарегистрирован: 2008-06-23 7:39:37

Re: postfixadmin 2.2

Непрочитанное сообщение kotsur » 2008-10-22 11:46:27

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;

все заработало

flus
проходил мимо

Re: postfixadmin 2.2

Непрочитанное сообщение flus » 2008-10-23 12:45:34

/ Ну а здесь описан способ создания и хранения mailbox
// YES: /usr/local/virtual/domain.tld/username@domain.tld
// NO: /usr/local/virtual/username@domain.tld


Подскажите, откуда постфикс берет вот эту часть пути к почтовому ящику - "/usr/local/virtual/"?
:cz2:

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-10-23 15:21:33

Это просто пример, как правило к пути, хранимому в БД прибавляется virtual_mailbox_base

Аватара пользователя
ruslan
рядовой
Сообщения: 33
Зарегистрирован: 2008-08-05 11:54:25
Откуда: Dnepropetrovsk, UA
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение ruslan » 2008-10-28 15:29: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 вообще нет. Как они тестировали?



Закоментил левую таблицу и понеслось :)

Код: Выделить всё

$tables = array(
         'admin',
         'alias',
//         'alias_domain',
         'config',
         'domain',
         'domain_admins',
         'fetchmail',
         'log',
         'mailbox',
         'vacation',
         'vacation_notification'
      );

Автору уже сообщили - пофиксит в след версиях
FreeBSD 6.4-STABLE

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-10-28 16:34:19

Писалось уже об этом, см первый пост на второй странице ;)

Так же еще глюк в функции 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 надо дождаться приветствия сервера

Saneh
проходил мимо

Re: postfixadmin 2.2

Непрочитанное сообщение Saneh » 2008-11-06 14:08:43

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

Sanyh
сержант
Сообщения: 151
Зарегистрирован: 2008-02-13 8:42:54

Re: postfixadmin 2.2

Непрочитанное сообщение Sanyh » 2008-11-06 14:10:22

выше это был я :)
стоит у меня exim+courier imap

Sanyh
сержант
Сообщения: 151
Зарегистрирован: 2008-02-13 8:42:54

Re: postfixadmin 2.2

Непрочитанное сообщение Sanyh » 2008-11-06 15:43:20

кто нибудь ответит?

Alteron
сержант
Сообщения: 230
Зарегистрирован: 2008-07-21 9:35:11

Re: postfixadmin 2.2

Непрочитанное сообщение Alteron » 2008-11-07 8:19:15

2 Alex_hha

У тебя какой апач стоит? Сдаётся мне, что постфикс админ не логонит юзеров с эксплорером из-за того, что у меня апач 1.3 стоит.
Измеритель верёвочками.

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-11-07 12:54:36

# pkg_info | grep apache
apache+mod_ssl-1.3.41+2.8.31 The Apache 1.3 webserver with SSL/TLS functionality

[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

исправь

Аватара пользователя
Belfigor
рядовой
Сообщения: 25
Зарегистрирован: 2008-08-04 2:41:07
Откуда: Белгород
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Belfigor » 2008-11-07 17:22:06

Всем добрый вечер , люди , я если честно уже тоже намыкался с этим postfixadmin и нашёл для себе альтернативу , вот этот скрипт , он правда на немецком , но регистрирует домены и юзеров только в путь , можно отредактировать под себя , пашет он на 5 с + ! так что если кому нужно , юзайте ! :smile:

Код: Выделить всё

<?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&ouml;schen">DEL</a> / <a href="?chg=1&id='.$row[0].'" title="Diesen Datensatz &auml;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&ouml;schen">DEL</a> / <a href="?chg=2&id='.$row[0].'" title="Diesen Datensatz &auml;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&ouml;schen">DEL</a> / <a href="?chg=3&id='.$row[0].'" title="Diesen Datensatz &auml;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&uuml;gt...</b></center>";
else $out = "<center><h3>FEHLER beim einf&uuml;gen!!!</h3></center>";
break;
case 5:
if($result == true) $out = "<center><b>Domain wurde hinzugef&uuml;gt...</b></center>";
else $out = "<center><h3>FEHLER beim einf&uuml;gen!!!</h3></center>";
break;
case 6:
if($result == true) $out = "<center><b>User wurde hinzugef&uuml;gt...</b></center>";
else $out = "<center><h3>FEHLER beim einf&uuml;gen!!!</h3></center>";
break;
}

switch($del) {
case 1:
if($ack == "")
{
$out = '<center><h3>Diesen Alias wirklich l&ouml;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&ouml;scht...</b><br><a href="?do=1">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=1">Zur&uuml;ck</a></center>';
break;

case 2:
if($ack == "")
{
$out = '<center><h3>Diese Domain wirklich l&ouml;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&ouml;scht...</b><br><a href="?do=2">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=2">Zur&uuml;ck</a></center>';
break;

case 3:
if($ack == "")
{
$out = '<center><h3>Diesen User wirklich l&ouml;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&ouml;scht...</b><br><a href="?do=3">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=3">Zur&uuml;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&auml;ndert...</b><br><a href="?do=1">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=1">Zur&uuml;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&auml;ndert...</b><br><a href="?do=2">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=2">Zur&uuml;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&auml;ndert...</b><br><a href="?do=3">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=3">Zur&uuml;ck </a></center>';
break;
}
echo $out;

echo<<<html
</body>
</html>
html;
/* #### -Code- #### */
?>
Да прибудет со мной Shell

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение ProFTP » 2008-11-07 17:28:40

ящеги он не создает автоматом после того как данные будут в таблице? :"":

или руками надо?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
Belfigor
рядовой
Сообщения: 25
Зарегистрирован: 2008-08-04 2:41:07
Откуда: Белгород
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Belfigor » 2008-11-07 18:54:52

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


Я конечно не кодер , но я его по ламерски отредактиовал , что у меня теперь юзеры сами регинятся в локалке

вот скрипт, сильно не пинайте :oops:
_________________________________________________________________________________________________________


Код: Выделить всё

<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&ouml;schen"></a> / <a href="?chg=1&id='.$row[0].'" title="Diesen Datensatz &auml;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&ouml;schen"></a> / <a href="?chg=2&id='.$row[0].'" title="Diesen Datensatz &auml;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&ouml;schen"></a> / <a href="?chg=3&id='.$row[0].'" title="Diesen Datensatz &auml;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&uuml;gt...</b></center>";
else $out = "<center><h3>Спамер ???Всё твой ip уже в базе !</h3></center>";
break;
case 5:
if($result == true) $out = "<center><b>Domain wurde hinzugef&uuml;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&ouml;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&ouml;scht...</b><br><a href="?do=1">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=1">Zur&uuml;ck</a></center>';
break;

case 2:
if($ack == "")
{
$out = '<center><h3>Diese Domain wirklich l&ouml;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&ouml;scht...</b><br><a href="?do=2">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=2">Zur&uuml;ck</a></center>';
break;

case 3:
if($ack == "")
{
$out = '<center><h3>Diesen User wirklich l&ouml;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&ouml;scht...</b><br><a href="?do=3">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=3">Zur&uuml;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&auml;ndert...</b><br><a href="?do=1">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=1">Zur&uuml;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&auml;ndert...</b><br><a href="?do=2">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=2">Zur&uuml;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&auml;ndert...</b><br><a href="?do=3">Zur&uuml;ck</a></center>';
}
else $out = '<center><a href="?do=3">Zur&uuml;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>
 
Последний раз редактировалось Belfigor 2008-11-07 19:03:03, всего редактировалось 2 раза.
Да прибудет со мной Shell

Аватара пользователя
ruslan
рядовой
Сообщения: 33
Зарегистрирован: 2008-08-05 11:54:25
Откуда: Dnepropetrovsk, UA
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение ruslan » 2008-11-07 18:59:49

Гитлер капут
FreeBSD 6.4-STABLE

Alex_hha
лейтенант
Сообщения: 755
Зарегистрирован: 2005-11-06 18:25:26
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Alex_hha » 2008-11-07 21:42:57

От людям делать нефиг :-D

Аватара пользователя
Belfigor
рядовой
Сообщения: 25
Зарегистрирован: 2008-08-04 2:41:07
Откуда: Белгород
Контактная информация:

Re: postfixadmin 2.2

Непрочитанное сообщение Belfigor » 2008-11-07 21:59:12

Alex_hha писал(а):От людям делать нефиг :-D


ну почему же не фиг ? :( , скрипт то реально работает , регинит юзеров и домены , что ещё нужно ? всё работает ...
Да прибудет со мной Shell


Вернуться в «MTA - Mail Transfer Agent»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей