- 论坛徽章:
- 0
|
#vi /usr/local/etc/apache22/httpd.conf # 修改 apache 的 User 跟 Group
#User www
#Group www
User vmail
Group vmail
#vi /usr/local/etc/apache22/Includes/mine.conf # 增加 apache 對應的 postfixadmin 虛擬目錄
Alias /postfixadmin/ "/usr/local/www/postfixadmin/"
<Directory "/usr/local/www/postfixadmin">
Options None
AllowOverride ALL
Order allow,deny
Allow from all
</Directory>
#apachectl stop # 重新啟動apache
#apachectl start
由於postfixadmin 本身沒有添加transport_maps選項功能,為了實現添加mail address list記錄到alias 表中需要修改以下幾個文件:
# vi /usr/local/www/postfixadmin/variables.inc.php # 增加如下四個變量
$fTransport_maps = "";
$fMlist = "";
$tMlist = "";
$tTransport_maps = "";
# vi /usr/local/www/postfixadmin/templates/craete-alias.tpl # 加下劃線部分為新增行
<div id="edit_form">
<form name="alias" method="post">
<table>
<tr>
<td colspan="3"><h3><?php print $PALANG['pCreate_alias_welcome']; ?></h3></td>
</tr>
<tr>
<td><?php print $PALANG['pCreate_alias_address']; ?></td>
<td><input class="flat" type="text" name="fAddress" value="<?php print $tAddress; ?>" /></td>
<td>
<select class="flat" name="fDomain">
<?php
for ($i = 0; $i < sizeof ($list_domains); $i++)
{
if ($tDomain == $list_domains[$i])
{
print "<option value=\"$list_domains[$i]\" selected>$list_domains[$i]</option>\n";
}
else
{
print "<option value=\"$list_domains[$i]\">$list_domains[$i]</option>\n";
}
}
?>
</select>
<?php print $pCreate_alias_address_text; ?>
</td>
</tr>
<tr>
<td><?php print $PALANG['pCreate_alias_goto'] . ":"; ?></td>
<td><input class="flat" type="text" name="fGoto" value="<?php print $tGoto; ?>" /></td>
<td><?php print $pCreate_alias_goto_text; ?></td>
</tr>
<tr>
<td><?php print "Mlist" . ":"; ?></td>
<td><input class="flat" type="text" name="fMlist" value="<?php print $tMlist; ?>" /></td>
</tr>
<tr>
<td><?php print "Transport_maps" . ":"; ?></td>
<td><input class="flat" type="text" name="fTransport_maps" value="<?php print $tTransport_maps; ?>" /></td>
</tr>
<tr>
<td colspan="3" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pCreate_alias_button']; ?>" /></td>
</tr>
<tr>
<td colspan="3" class="standout"><?php print $tMessage; ?></td>
</tr>
<tr>
<td colspan="3" class="help_text"><?php print $PALANG['pCreate_alias_catchall_text']; ?></td>
</tr>
</table>
</div>
# vi /usr/local/www/postfixadmin/templates/edit-alias.tpl # 加下劃線部分為新增或修改部分
<div id="edit_form">
<form name="alias" method="post">
<table>
<tr>
<td colspan="3"><h3><?php print $PALANG['pEdit_alias_welcome']; ?></h3></td>
</tr>
<tr>
<td><?php print $PALANG['pEdit_alias_address'] . ":"; ?></td>
<td><?php print $fAddress; ?></td>
<td> </td>
</tr>
<tr>
<td><?php print $PALANG['pEdit_alias_goto'] . ":"; ?></td>
<td>
<textarea class="flat" rows="10" cols="60" name="fGoto">
<?php
$array = preg_split ('/,/', $tGoto);
for ($i = 0 ; $i < sizeof ($array) ; $i++)
{
if (empty ($array[$i])) continue;
print "$array[$i]\n";
}
?>
</textarea>
</td>
<td> </td>
</tr>
<tr>
<td><?php print "Mlist" . ":"; ?></td>
<td><input class="flat" type="text" name="fMlist" value="<?php print $tMlist; ?>" /></td>
</tr>
<tr>
<td><?php print "Transport_maps" . ":"; ?></td>
<td><input class="flat" type="text" name="fTransport_maps" value="<?php print $tTransport_maps; ?>" /></td>
</tr>
<tr>
<td colspan="3" class="hlp_center"><input class="button" type="submit" name="submit" value="<?php print $PALANG['pEdit_alias_button']; ?>" /></td>
</tr>
<tr>
<td colspan="3" class="standout"><?php print $tMessage; ?></td>
</tr>
</table>
</form>
</div>
# vi /usr/local/www/postfixadmin/templates/admin_list-virtual.tpl # 加下劃線部分為新增或修改部分
<div id="admin_virtual">
<form name="overview" method="post">
<select name="fDomain" onChange="this.form.submit()";>
<?php
for ($i = 0; $i < sizeof ($list_domains); $i++)
{
if ($fDomain == $list_domains[$i])
{
print "<option value=\"$list_domains[$i]\" selected>$list_domains[$i]</option>\n";
}
else
{
print "<option value=\"$list_domains[$i]\">$list_domains[$i]</option>\n";
}
}
?>
</select>
<input type="hidden" name="limit" value="0">
<input type="submit" name="go" value="<?php print $PALANG['pAdminList_virtual_button']; ?>" />
</form>
<h4><?php print $PALANG['pAdminList_virtual_welcome'] . $fDomain; ?></h4>
<p><?php print $PALANG['pAdminList_virtual_alias_alias_count'] . ": " . $limit['alias_count'] . " / " . $limit['aliases']; ?></p>
<p><?php print $PALANG['pAdminList_virtual_alias_mailbox_count'] . ": " . $limit['mailbox_count'] . " / " . $limit['mailboxes']; ?></p>
<form name="search" method="post" action="search.php">
<input type="textbox" name="search" size="10">
</form>
</div>
<?php
print "<div id=\"nav_bar\">\n";
if ($tDisplay_back_show == 1)
{
print "<a href=\"list-virtual.php?domain=$fDomain&limit=$tDisplay_back\"><img border=\"0\" src=\"../images/arrow-l.png\" title=\"" . $PALANG['pOverview_left_arrow'] . "\" alt=\"" . $PALANG['pOverview_left_arrow'] . "\"></a>\n";
}
if ($tDisplay_up_show == 1)
{
print "<a href=\"list-virtual.php?domain=$fDomain&limit=0\"><img border=\"0\" src=\"../images/arrow-u.png\" title=\"" . $PALANG['pOverview_up_arrow'] . "\" alt=\"" . $PALANG['pOverview_up_arrow'] . "\"></a>\n";
}
if ($tDisplay_next_show == 1)
{
print "<a href=\"list-virtual.php?domain=$fDomain&limit=$tDisplay_next\"><img border=\"0\" src=\"../images/arrow-r.png\" title=\"" . $PALANG['pOverview_right_arrow'] . "\" alt=\"" . $PALANG['pOverview_right_arrow'] . "\"></a>\n";
}
print "</div>\n";
if (sizeof ($tAlias) > 0)
{
print "<table id=\"alias_table\">\n";
print " <tr>\n";
print " <td colspan=\"5\"><h3>" . $PALANG['pOverview_alias_title'] . "</h3></td>";
print " </tr>";
print " <tr class=\"header\">\n";
print " <td>" . $PALANG['pAdminList_virtual_alias_address'] . "</td>\n";
print " <td>" . $PALANG['pAdminList_virtual_alias_goto'] . "</td>\n";
print " <td>Transport_map</td>\n";
print " <td colspan=\"2\"> </td>\n";
print " </tr>\n";
for ($i = 0; $i < sizeof ($tAlias); $i++)
{
if ((is_array ($tAlias) and sizeof ($tAlias) > 0))
{
print " <tr class=\"hilightoff\" onMouseOver=\"className='hilighton';\" onMouseOut=\"className='hilightoff';\">\n";
print " <td>" . $tAlias[$i]['address'] . "</td>\n";
print " <td>" . ereg_replace (",", "<br>", $tAlias[$i]['goto']) . "</td>\n";
print " <td>" . $tAlias[$i]['transport_maps'] . "</td>\n";
print " <td><a href=\"edit-alias.php?address=" . urlencode ($tAlias[$i]['address']) . "&domain=$fDomain" . "\">" . $PALANG['edit'] . "</a></td>\n";
print " <td><a href=\"delete.php?table=alias" . "&delete=" . urlencode ($tAlias[$i]['address']) . "&domain=$fDomain" . "\"onclick=\"return confirm ('" . $PALANG['confirm'] . $PALANG['pOverview_get_aliases'] . ": ". $tAlias[$i]['address'] . "')\">" . $PALANG['del'] . "</a></td>\n";
print " </tr>\n";
}
}
print "</table>\n";
}
if (sizeof ($tMailbox) > 0)
{
print "<table id=\"mailbox_table\">\n";
print " <tr>\n";
print " <td colspan=\"7\"><h3>" . $PALANG['pOverview_mailbox_title'] . "</h3></td>";
print " </tr>";
print " <tr class=\"header\">\n";
print " <td>" . $PALANG['pAdminList_virtual_mailbox_username'] . "</td>\n";
print " <td>" . $PALANG['pAdminList_virtual_mailbox_name'] . "</td>\n";
if ($CONF['quota'] == 'YES') print " <td>" . $PALANG['pAdminList_virtual_mailbox_quota'] . "</td>\n";
print " <td>" . $PALANG['pAdminList_virtual_mailbox_modified'] . "</td>\n";
print " <td>" . $PALANG['pAdminList_virtual_mailbox_active'] . "</td>\n";
print " <td colspan=\"2\"> </td>\n";
print " </tr>\n";
for ($i = 0; $i < sizeof ($tMailbox); $i++)
{
if ((is_array ($tMailbox) and sizeof ($tMailbox) > 0))
{
print " <tr class=\"hilightoff\" onMouseOver=\"className='hilighton';\" onMouseOut=\"className='hilightoff';\">\n";
print " <td>" . $tMailbox[$i]['username'] . "</td>\n";
print " <td>" . $tMailbox[$i]['name'] . "</td>\n";
if ($CONF['quota'] == 'YES') print " <td>" . $tMailbox[$i]['quota'] / $CONF['quota_multiplier'] . "</td>\n";
print " <td>" . $tMailbox[$i]['modified'] . "</td>\n";
$active = ($tMailbox[$i]['active'] == 1) ? $PALANG['YES'] : $PALANG['NO'];
print " <td><a href=\"edit-active.php?username=" . urlencode ($tMailbox[$i]['username']) . "&domain=$fDomain" . "\">" . $active . "</a></td>\n";
print " <td><a href=\"edit-mailbox.php?username=" . urlencode ($tMailbox[$i]['username']) . "&domain=$fDomain" . "\">" . $PALANG['edit'] . "</a></td>\n";
print " <td><a href=\"delete.php?table=mailbox" . "&delete=" . urlencode ($tMailbox[$i]['username']) . "&domain=$fDomain" . "\"onclick=\"return confirm ('" . $PALANG['confirm'] . $PALANG['pOverview_get_mailboxes'] . ": ". $tMailbox[$i]['username'] . "')\">" . $PALANG['del'] . "</a></td>\n";
print " </tr>\n";
}
}
print "</table>\n";
}
?>
# vi /usr/local/www/postfixadmin/admin/create-alias.php # 加下劃線部分為新增或修改部分
<?php
//
// Postfix Admin
// by Mischa Peters <mischa at high5 dot net>
// Copyright (c) 2002 - 2005 High5!
// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
//
// File: create-alias.php
//
// Template File: create-alias.tpl
//
// Template Variables:
//
// tMessage
// tAddress
// tGoto
// tDomain
//
// Form POST \ GET Variables:
//
// fAddress
// fGoto
// fDomain
//
require ("../variables.inc.php");
require ("../config.inc.php");
require ("../functions.inc.php");
include ("../languages/" . check_language () . ".lang");
$list_domains = list_domains ();
if ($_SERVER['REQUEST_METHOD'] == "GET")
{
$pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
if (isset ($_GET['domain'])) $tDomain = escape_string ($_GET['domain']);
include ("../templates/header.tpl");
include ("../templates/admin_menu.tpl");
include ("../templates/create-alias.tpl");
include ("../templates/footer.tpl");
}
if ($_SERVER['REQUEST_METHOD'] == "POST")
{
$pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
$fAddress = escape_string ($_POST['fAddress']) . "@" . escape_string ($_POST['fDomain']);
$fAddress = strtolower ($fAddress);
$fGoto = escape_string ($_POST['fGoto']);
$fGoto = strtolower ($fGoto);
$fMlist = escape_string ($_POST['fMlist']);
$fMlist = strtolower ($fMlist);
$fTransport_maps = escape_string ($_POST['fTransport_maps']);
$fTransport_maps = strtolower ($fTransport_maps);
$fDomain = escape_string ($_POST['fDomain']);
if (!preg_match ('/@/',$fGoto))
{
$fGoto = $fGoto . "@" . escape_string ($_POST['fDomain']);
}
if (!check_alias ($fDomain))
{
$error = 1;
$tAddress = escape_string ($_POST['fAddress']);
$tGoto = $fGoto;
$tDomain = $fDomain;
$tMlist = $fMlist;
$tTransport_maps = $fTransport_maps;
$pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error3'];
}
if (empty ($fAddress) or !check_email ($fAddress))
{
$error = 1;
$tAddress = escape_string ($_POST['fAddress']);
$tGoto = $fGoto;
$tMlist = $fMlist;
$tTransport_maps = $fTransport_maps;
$tDomain = $fDomain;
$pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error1'];
}
if (empty ($fGoto) or !check_email ($fGoto))
{
$error = 1;
$tAddress = escape_string ($_POST['fAddress']);
$tGoto = $fGoto;
$tDomain = $fDomain;
$tMlist = $fMlist;
$tTransport_maps = $fTransport_maps;
$pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text_error'];
}
if (escape_string ($_POST['fAddress']) == "*") $fAddress = "@" . escape_string ($_POST['fDomain']);
$result = db_query ("SELECT * FROM alias WHERE address='$fAddress'");
if ($result['rows'] == 1)
{
$error = 1;
$tAddress = escape_string ($_POST['fAddress']);
$tGoto = $fGoto;
$tDomain = $fDomain;
$tMlist = $fMlist;
$tTransport_maps = $fTransport_maps;
$pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error2'];
}
if ($error != 1)
{
if (preg_match ('/^\*@(.*)$/', $fGoto, $match)) $fGoto = "@" . $match[1];
$result = db_query ("INSERT INTO alias (address,goto,domain,created,modified,mlist,transport_maps) VALUES ('$fAddress','$fGoto','$fDomain',NOW(),NOW(),'$fMlist','$fTransport_maps')");
if ($result['rows'] != 1)
{
$tDomain = $fDomain;
$tMessage = $PALANG['pCreate_alias_result_error'] . "<br />($fAddress -> $fGoto)<br />";
}
else
{
db_log ($CONF['admin_email'], $fDomain, "create alias", "$fAddress -> $fGoto");
$tDomain = $fDomain;
$tMessage = $PALANG['pCreate_alias_result_succes'] . "<br />($fAddress -> $fGoto)</br />";
}
}
include ("../templates/header.tpl");
include ("../templates/admin_menu.tpl");
include ("../templates/create-alias.tpl");
include ("../templates/footer.tpl");
}
?> |
|