Категорії
Misc, staff, other

Шлифуем PostfixAdmin

В этой статье хочу рассказать, о том, с чем можете столкнуться при использовании postfixadmin’a, в качестве управления почтой юзеров и как это можно решить.

1)PostfixAdmin не создаёт домен.

Данная проблема очень распространена. Причём самое интересное, что у одних работает нормально, у других проблема. Сам сталкивался с ней. Нашёл вот такое решение

functions.inc.php
в get_magic_quotes_gpc () == 0 меняем 0 на 1 и все работает

function escape_string ($string)
{
global $CONF;
if (get_magic_quotes_gpc () == 0) <- ВОТ ЗДЕСЬ
{
if ($CONF[‘database_type’] == “mysql”) $escaped_string = mysql_real_escape_string ($string);
if ($CONF[‘database_type’] == “mysqli”) $escaped_string = mysqli_real_escape_string ($string);
if ($CONF[‘database_type’] == “pgsql”) $escaped_string = pg_escape_string ($string);
}
else
{
$escaped_string = $string;
}
return $escaped_string;
}

Возможно портребуется ещё изменить внести такое изменение в php.ini

magic_quotes_gpc = On
2)Нельзя посмотреть пароль уже созданного юзера.

Дело в том, что я часто имею дела с юзерами, которые по тем или иным причинам теряют\забывают свои пароли. И хотелось бы иметь возможность в любое время их посмотреть. Хотя в postfixadmin’e и есть опция показывать пароли, на самом деле она показывает пароль только при создании ящика. Сначало добавим столбец для хранения чистого пароля в таблице mailbox:

#mysql postfixadmin -upostfixadmin -ppostfixadmin

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 284
Server version: 5.0.81 FreeBSD port: mysql-server-5.0.81

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql>ALTER TABLE mailbox AD pw_clear TEXT;

mysql>QUIT;

Добавили поле pw_clear. Теперь подредактируем php-скрипты. Будем редактировать такие файлы: create-mailbox.phpedit-mailbox.php,templates/edit-mailbox.php. Имена файлов относительно корня postfixadmin’a. Редактируем:

create-mailbox.php

Ищем и комментируем блок (это делается )

#$result = db_query (“INSERT INTO $table_alias (address,goto,domain,created,modified,active) VALUES (‘$fUsername’,’$fUsername’,’$fDomain’,NOW(),NOW(),
#        if ($result[‘rows’] != 1)
#        {
#            $tDomain = $fDomain;
#            $tMessage = $PALANG[‘pAlias_result_error’] . “($fUsername -> $fUsername)”;
#        }

Ищем строку



$result = db_query (“INSERT INTO $table_mailbox (username,password,

и вставляем нужные поля (выделены жирным):

$result = db_query (“INSERT INTO $table_mailbox (username,password,pw_clear,name,maildir,local_part,quota,domain,created,modified,active) VALUES (‘$fUsername’,’$password’,‘$fPassword’,’$fName’,’$maildir’,’$local_part’,’$quota’,’$fDomain’,NOW(),NOW(),’$sqlActive’)”);

edit-mailbox.php

Ищем строку:

$formvars[‘password’] = pacrypt($fPassword);

и вставляем после неё строку

$formvars[‘pw_clear’] = $fPassword;

template\edit-mailbox.php

В самом начале файла есть код, заключенный в :

if( !defined(‘POSTFIXADMIN’) ) die( “This file cannot be used standalone.” ); ?>

Так вот, переделываем его в такой:

if( !defined(‘POSTFIXADMIN’) ) die( “This file cannot be used standalone.” );

$con = mysql_connect(“localhost”, “postfixadmin”, “postfixadmin”) or die(mysql_error());
mysql_select_db(“postfixadmin”, $con) or die(mysql_error());
$result = mysql_query(“SELECT pw_clear FROM mailbox where username=’$fUsername'”) or die(mysql_error());

while($row = mysql_fetch_row( $result ))
{
$pass=$row[‘0’];
}

?>

Так же после блока

<tr>

<td><?php print $PALANG[‘pEdit_mailbox_username’]; ?></td>

<td><?php print $fUsername; ?></td>

<td><?php print $pEdit_mailbox_username_text; ?></td>

</tr>

Вставляем такой

<tr>

<td><?php print “current password”; ?></td>

<td><?php print $pass; ?></td>

</tr>

Всё! Готово. Теперь при заходе по ссылке изменить пароль, в поле current password будет отображаться текущий пароль!

3) Удаление пользователей, при удалении алиасов

Есть ещё одна неприятность: при создании ящика, автоматом создаётся и алиас с его самого на его самого. Причём, при попытке создать алиас с этого ящика на другой – вызывает ошибку: “Такой алиас уже есть”. Для того, что бы не создавался атоматом алиас открываем файл create-mailbox.php, ищем и комментируем блок

#        $result = db_query (“INSERT INTO $table_alias (address,goto,domain,created,modified,active) VALUES (‘$fUsername’,’$fUsername’,’$fDomain’,NOW(),NOW(),
#        if ($result[‘rows’] != 1)
#        {
#            $tDomain = $fDomain;
#            $tMessage = $PALANG[‘pAlias_result_error’] . ”
($fUsername -> $fUsername)
“;
#        }

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff