diff -Naur postfixadmin-2.0.5.orig/admin/create-mailbox.php postfixadmin-2.0.5/admin/create-mailbox.php
--- postfixadmin-2.0.5.orig/admin/create-mailbox.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/admin/create-mailbox.php 2004-10-27 23:42:03.000000000 -0500
@@ -26,6 +26,7 @@
require ("../variables.inc.php");
require ("../config.inc.php");
require ("../functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("../imap.inc.php");
include ("../languages/" . check_language () . ".lang");
$list_domains = list_domains ();
@@ -175,6 +176,30 @@
$tQuota = $CONF['maxquota'];
+ if ($CONF['have_cyrus'] == 'YES')
+ {
+ if(imap_create_account($fUsername))
+ {
+ $tMessage .= "
".$PALANG['pCyrus_create_mailbox_succes'];
+ }
+ else
+ {
+ $tMessage .= "
".$PALANG['pCyrus_create_mailbox_error'];
+ }
+ if ($CONF['quota'] == 'YES')
+ {
+ if (imap_set_quota($fUsername, $quota))
+ {
+ $tMessage .= "
".$PALANG['pCyrus_set_quota_succes']
+ ." ".$fQuota." ".$PALANG['pCyrus_set_quota_text'];
+ }
+ else
+ {
+ $tMessage .= "
".$PALANG['pCyrus_set_quota_error'];
+ }
+ }
+ }
+
if ($fMail == "on")
{
$fTo = $fUsername;
@@ -196,13 +221,16 @@
$fHeaders .= $PALANG['pSendmail_body_text'];
- if (!smtp_mail ($fTo, $fFrom, $fHeaders))
- {
- $tMessage .= "
" . $PALANG['pSendmail_result_error'] . "
";
- }
- else
- {
- $tMessage .= "
" . $PALANG['pSendmail_result_succes'] . "
";
+ if ($CONF['have_cyrus'] != 'YES')
+ {
+ if (!smtp_mail ($fTo, $fFrom, $fHeaders))
+ {
+ $tMessage .= "
" . $PALANG['pSendmail_result_error'] . "
";
+ }
+ else
+ {
+ $tMessage .= "
" . $PALANG['pSendmail_result_succes'] . "
";
+ }
}
}
}
diff -Naur postfixadmin-2.0.5.orig/admin/delete.php postfixadmin-2.0.5/admin/delete.php
--- postfixadmin-2.0.5.orig/admin/delete.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/admin/delete.php 2004-10-27 22:42:27.000000000 -0500
@@ -18,6 +18,7 @@
require ("../variables.inc.php");
require ("../config.inc.php");
require ("../functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("../imap.inc.php");
include ("../languages/" . check_language () . ".lang");
if ($_SERVER['REQUEST_METHOD'] == "GET")
@@ -34,6 +35,31 @@
if ($fTable == "domain")
{
+ // Walk thu available username for domain and delete each one individually
+ // Mayne there is a wildcard way of doing this?
+ $tMessage = '';
+ if ($CONF['have_cyrus'] == 'YES')
+ {
+ $result = db_query ("SELECT username FROM mailbox WHERE domain='$fDelete'");
+ if ($result['rows'] > 0)
+ {
+ $i = 0;
+ while ($row = db_array ($result['result']))
+ {
+ $username = $row['username'];
+ if ($username != '')
+ {
+ if (!imap_del_user($username))
+ {
+ $error = 1;
+ $tMessage .= $PALANG['pCyrus_delete_mailbox_error']
+ . "$username";
+ }
+ }
+ }
+ }
+ }
+
$result_domain = db_delete ("domain",$fWhere,$fDelete);
$result_domain_admins = db_delete ("domain_admins",$fWhere,$fDelete);
$result_alias = db_delete ("alias",$fWhere,$fDelete);
@@ -47,9 +73,10 @@
if (!($result_domain == 1) and ($result_domain_admins >= 0) and ($result_alias >= 0) and ($result_mailbox >= 0) and ($result_vacation >= 0))
{
$error = 1;
- $tMessage = $PALANG['pAdminDelete_domain_error'];
+ $tMessage .= $PALANG['pAdminDelete_domain_error'];
}
- else
+
+ if ($error != 1)
{
$url = "list-domain.php";
}
@@ -94,7 +121,18 @@
$error = 1;
$tMessage = $PALANG['pDelete_delete_error'] . "$fDelete (mailbox)!";
}
- else
+
+ if ($CONF['have_cyrus'] == 'YES')
+ {
+ if (!imap_del_user($fDelete))
+ {
+ $error = 1;
+ $tMessage .= $PALANG['pCyrus_delete_mailbox_error']
+ . "$fDelete";
+ }
+ }
+
+ if ($error != 1)
{
$url = "list-virtual.php?domain=$fDomain";
db_query ("DELETE FROM vacation WHERE email='$fDelete' AND domain='$fDomain'");
diff -Naur postfixadmin-2.0.5.orig/admin/edit-mailbox.php postfixadmin-2.0.5/admin/edit-mailbox.php
--- postfixadmin-2.0.5.orig/admin/edit-mailbox.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/admin/edit-mailbox.php 2004-10-23 22:15:04.000000000 -0500
@@ -9,6 +9,8 @@
// tMessage
// tName
// tQuota
+// tQuotaCyrusUse
+// tQuotaCyrusSet
//
// Form POST \ GET Variables:
//
@@ -23,6 +25,7 @@
require ("../variables.inc.php");
require ("../config.inc.php");
require ("../functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("../imap.inc.php");
include ("../languages/" . check_language () . ".lang");
if ($_SERVER['REQUEST_METHOD'] == "GET")
@@ -42,6 +45,20 @@
{
$tMessage = $PALANG['pEdit_mailbox_login_error'];
}
+
+ if ($CONF['have_cyrus'] == 'YES' and $CONF['quota'] == 'YES')
+ {
+ $result_array = imap_get_quota ($fUsername);
+ if ($result_array[0] < 0 or $result_array[1] < 0)
+ {
+ $tMessage .= "
".$PALANG['pCyrus_get_quota_error']."
";
+ }
+ else
+ {
+ $tQuotaCyrusUse = $result_array[0] / $CONF['quota_multiplier'];
+ $tQuotaCyrusSet = $result_array[1] / $CONF['quota_multiplier'];
+ }
+ }
include ("../templates/header.tpl");
include ("../templates/admin_menu.tpl");
@@ -95,6 +112,10 @@
$result = db_query ("UPDATE mailbox SET password='$password',name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
}
+ if ($CONF['have_cyrus'] == 'YES' and $CONF['quota'] == 'YES') {
+ imap_set_quota($fUsername, $quota);
+ }
+
if ($result['rows'] != 1)
{
$tMessage = $PALANG['pEdit_mailbox_result_error'];
diff -Naur postfixadmin-2.0.5.orig/config.inc.php.sample postfixadmin-2.0.5/config.inc.php.sample
--- postfixadmin-2.0.5.orig/config.inc.php.sample 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/config.inc.php.sample 2004-10-27 23:49:45.000000000 -0500
@@ -31,6 +31,26 @@
$CONF['smtp_server'] = "localhost";
$CONF['smtp_port'] = "25";
+// IMAP Server
+// This is used for a cyrus-imap backend. The cyrus-imap server is
+// administered via the IMAP port and a special administrative user.
+// Set the 'use_cyrus' flag to yes and configure the imap host, port,
+// user and password if you are using cyrus-imap
+$CONF['have_cyrus'] = 'NO';
+$CONF['cyrus_server'] = 'localhost';
+$CONF['cyrus_port'] = '143';
+$CONF['cyrus_user'] = 'cyrus';
+$CONF['cyrus_password'] = 'cyrus';
+$CONF['cyrus_debug'] = 'NO';
+
+// IMAP Server
+// This is used for a cyrus-imap backend only! Specify any folders and
+// permissions you want added for '+' delivery. Remember that '+'
+// folders need to be all lower case.
+$CONF['cyrus_add'] = array('junkmail' => 'anyone p',
+ '' => '',
+ '' => '');
+
// Encrypt
// In what way do you want the passwords to be crypted?
// md5crypt = internal postfix admin md5
@@ -75,6 +95,7 @@
// When you want to enforce quota for your mailbox users set this to 'YES'.
$CONF['quota'] = 'NO';
// When using maildrop use '102400' otherwise use '1048576'
+// When using cyrus-imap us '1000'
$CONF['quota_multiplier'] = '102400';
// Virtual Vacation
diff -Naur postfixadmin-2.0.5.orig/create-mailbox.php postfixadmin-2.0.5/create-mailbox.php
--- postfixadmin-2.0.5.orig/create-mailbox.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/create-mailbox.php 2004-10-27 23:42:39.000000000 -0500
@@ -26,6 +26,7 @@
require ("./variables.inc.php");
require ("./config.inc.php");
require ("./functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("./imap.inc.php");
include ("./languages/" . check_language () . ".lang");
$SESSID_USERNAME = check_session ();
@@ -185,6 +186,30 @@
$tQuota = $CONF['maxquota'];
+ if ($CONF['have_cyrus'] == 'YES')
+ {
+ if(imap_create_account($fUsername))
+ {
+ $tMessage .= "
".$PALANG['pCyrus_create_mailbox_succes'];
+ }
+ else
+ {
+ $tMessage .= "
".$PALANG['pCyrus_create_mailbox_error'];
+ }
+ if ($CONF['quota'] == 'YES')
+ {
+ if (imap_set_quota($fUsername, $quota))
+ {
+ $tMessage .= "
".$PALANG['pCyrus_set_quota_succes']
+ ." ".$fQuota." ".$PALANG['pCyrus_set_quota_text'];
+ }
+ else
+ {
+ $tMessage .= "
".$PALANG['pCyrus_set_quota_error'];
+ }
+ }
+ }
+
if ($fMail == "on")
{
$fTo = $fUsername;
@@ -206,13 +231,16 @@
$fHeaders .= $PALANG['pSendmail_body_text'];
- if (!smtp_mail ($fTo, $fFrom, $fHeaders))
- {
- $tMessage .= "
" . $PALANG['pSendmail_result_error'] . "
";
- }
- else
- {
- $tMessage .= "
" . $PALANG['pSendmail_result_succes'] . "
";
+ if ($CONF['have_cyrus'] != 'YES')
+ {
+ if (!smtp_mail ($fTo, $fFrom, $fHeaders))
+ {
+ $tMessage .= "
" . $PALANG['pSendmail_result_error'] . "
";
+ }
+ else
+ {
+ $tMessage .= "
" . $PALANG['pSendmail_result_succes'] . "
";
+ }
}
}
}
diff -Naur postfixadmin-2.0.5.orig/delete.php postfixadmin-2.0.5/delete.php
--- postfixadmin-2.0.5.orig/delete.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/delete.php 2004-10-27 22:42:42.000000000 -0500
@@ -16,6 +16,7 @@
require ("./variables.inc.php");
require ("./config.inc.php");
require ("./functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("./imap.inc.php");
include ("./languages/" . check_language () . ".lang");
$SESSID_USERNAME = check_session();
@@ -59,6 +60,16 @@
db_log ($SESSID_USERNAME, $fDomain, "delete mailbox", $fDelete);
}
}
+
+ if ($CONF['have_cyrus'] == 'YES')
+ {
+ if (!imap_del_user($fDelete))
+ {
+ $error = 1;
+ $tMessage .= $PALANG['pCyrus_delete_mailbox_error']
+ . "$fDelete";
+ }
+ }
}
if ($error != 1)
diff -Naur postfixadmin-2.0.5.orig/edit-mailbox.php postfixadmin-2.0.5/edit-mailbox.php
--- postfixadmin-2.0.5.orig/edit-mailbox.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/edit-mailbox.php 2004-10-23 22:15:04.000000000 -0500
@@ -9,6 +9,8 @@
// tMessage
// tName
// tQuota
+// tQuotaCyrusUse
+// tQuotaCyrusSet
//
// Form POST \ GET Variables:
//
@@ -23,6 +25,7 @@
require ("./variables.inc.php");
require ("./config.inc.php");
require ("./functions.inc.php");
+if ($CONF['have_cyrus'] == 'YES') require ("./imap.inc.php");
include ("./languages/" . check_language () . ".lang");
$SESSID_USERNAME = check_session ();
@@ -47,6 +50,20 @@
{
$tMessage = $PALANG['pEdit_mailbox_login_error'];
}
+
+ if ($CONF['have_cyrus'] == 'YES' and $CONF['quota'] == 'YES')
+ {
+ $result_array = imap_get_quota ($fUsername);
+ if ($result_array[0] < 0 or $result_array[1] < 0)
+ {
+ $tMessage .= "
".$PALANG['pCyrus_get_quota_error']."
";
+ }
+ else
+ {
+ $tQuotaCyrusUse = $result_array[0] / $CONF['quota_multiplier'];
+ $tQuotaCyrusSet = $result_array[1] / $CONF['quota_multiplier'];
+ }
+ }
include ("./templates/header.tpl");
include ("./templates/menu.tpl");
@@ -108,6 +125,10 @@
$result = db_query ("UPDATE mailbox SET password='$password',name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
}
+ if ($CONF['have_cyrus'] == 'YES' and $CONF['quota'] == 'YES') {
+ imap_set_quota($fUsername, $quota);
+ }
+
if ($result['rows'] != 1)
{
$tMessage = $PALANG['pEdit_mailbox_result_error'];
diff -Naur postfixadmin-2.0.5.orig/functions.inc.php postfixadmin-2.0.5/functions.inc.php
--- postfixadmin-2.0.5.orig/functions.inc.php 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/functions.inc.php 2004-10-28 00:00:26.000000000 -0500
@@ -101,7 +101,14 @@
//
function check_email ($email)
{
- return (preg_match ('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,4}$/i', trim ($email)));
+ global $CONF;
+
+ if ($CONF['have_cyrus'] = 'YES') {
+ // Disallow '.'
+ return (preg_match ('/^[-!#$%&\'*+\\/0-9=?A-Z^_{|}~]+' . '@' . '([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,4}$/i', trim ($email)));
+ } else {
+ return (preg_match ('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,4}$/i', trim ($email)));
+ }
}
diff -Naur postfixadmin-2.0.5.orig/imap.inc.php postfixadmin-2.0.5/imap.inc.php
--- postfixadmin-2.0.5.orig/imap.inc.php 1969-12-31 18:00:00.000000000 -0600
+++ postfixadmin-2.0.5/imap.inc.php 2004-10-27 23:47:16.000000000 -0500
@@ -0,0 +1,361 @@
+\n";
+
+ if (!imap_add_user($username)) {
+ return false;
+ }
+
+ list($user, $domain) = explode('@', $username);
+ foreach ($CONF['cyrus_add'] as $folder => $perms) {
+ if ($folder) {
+ $folderpath = 'user.' . $user . '.' . $folder . '@' . $domain;
+ if (!imap_create($folderpath)) {
+ $err = 1;
+ } else {
+ if ($perms) {
+ if (!imap_set_permission($folderpath, $perms)) {
+ $err = 1;
+ }
+ }
+ }
+ }
+ }
+
+ if ($err) {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_open
+// Action: Open the imap connection and authenticate
+// Call: imap_open ()
+//
+function imap_open ()
+{
+ global $CONF, $IMAP_STREAM;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n"
+ . "\n";
+
+ /* open socket connection */
+ $IMAP_STREAM = fsockopen($CONF['cyrus_server'], $CONF['cyrus_port'],
+ $errno, $errstr, 15);
+ if (!$IMAP_STREAM) {
+ $IMAP_DEBUG .= "\n";
+ return false;
+ }
+
+ /* server response */
+ $imap_info = fgets($IMAP_STREAM, 1024);
+ $IMAP_DEBUG .= "\n";
+
+ /* authenticate */
+ $tmp = imap_run_cmd("LOGIN ".$CONF['cyrus_user']." ".$CONF['cyrus_password'],
+ $response, $message);
+ if ($response != 'OK') {
+ $IMAP_DEBUG .= "\n";
+ fclose ($IMAP_STREAM);
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_close
+// Action: Close the imap connection
+// Call: imap_close ()
+//
+function imap_close ()
+{
+ global $CONF, $IMAP_STREAM;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ /* close socket connection */
+ $resonse = imap_run_cmd("LOGOUT", $response, $message);
+ fclose ($IMAP_STREAM);
+ unset ($IMAP_STREAM);
+ $IMAP_DEBUG .= "\n";
+}
+
+//
+// imap_get_quota
+// Action: Get current quota setting for a user
+// Call: imap_get_quota (string username)
+//
+function imap_get_quota ($username)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if (imap_open()) {
+ $result = imap_run_cmd("GETQUOTA user.".$username, $response, $message);
+ imap_close();
+ } else {
+ return array(-1, -1);
+ }
+
+ if ($response != 'OK') {
+ return array(-1, -1);
+ }
+
+ preg_match("/STORAGE ([0-9]*) ([0-9]*)/", $result[0], $match);
+ return array($match[1], $match[2]);
+}
+
+//
+// imap_set_quota
+// Action: Set quota for a user mailbox
+// Call: imap_set_quota (string username, string quota)
+//
+function imap_set_quota ($username, $quota)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if (imap_open()) {
+ $tmp = imap_run_cmd("SETQUOTA user.".$username." (STORAGE ". $quota.")",
+ $response, $message);
+ imap_close();
+ } else {
+ return false;
+ }
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_set_permission
+// Action: Set the ACL for a user mailbox
+// Call: imap_set_permission (string mailbox, string id, string acl)
+function imap_set_permission ($mailbox, $permission)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if (!imap_open()) {
+ return false;
+ }
+ $tmp = imap_run_cmd("SETACL ".$mailbox." ".$permission,
+ $response, $message);
+ imap_close();
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_create
+// Action: Create a mailbox
+// Call: imap_create (string mailbox)
+function imap_create ($mailbox)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if (!imap_open()) {
+ return false;
+ }
+ $tmp = imap_run_cmd("CREATE ".$mailbox, $response, $message);
+ imap_close();
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_delete
+// Action: Delete a mailbox
+// Call imap_delete (string mailbox)
+function imap_delete ($mailbox)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if (!imap_open()) {
+ return false;
+ }
+ $tmp = imap_run_cmd("DELETE ".$mailbox, $response, $message);
+ imapClose();
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_add_user
+// Action: Create user account on the imap server
+// Call: imap_add_user (string username)
+//
+function imap_add_user($username)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if ($username == '') {
+ return false;
+ }
+ if (!imap_open()) {
+ return false;
+ }
+ $tmp = imap_run_cmd("CREATE user.".$username, $response, $message);
+ imap_close();
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_del_user
+// Action: Delete user account on the imap server
+// Call: imap_del_user (string username)
+//
+function imap_del_user ($username)
+{
+ global $CONF;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ if ($username == '') {
+ return false;
+ }
+ if (!imap_open()) {
+ return false;
+ }
+ $tmp = imap_run_cmd("SETACL user.".$username." cyrus lrswipcda",
+ $response, $message);
+ $tmp = imap_run_cmd("DELETE user.".$username,
+ $response, $message);
+ imap_close();
+
+ if ($response != 'OK') {
+ return false;
+ }
+ return true;
+}
+
+//
+// imap_run_cmd
+// Action: Send a command to the imap server and return result
+// Call: imap_run_cmd (string command, string response, string message)
+//
+function imap_run_cmd($command, &$response, &$message)
+{
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ $sid = imap_gen_sid();
+ imap_send_data($sid, $command);
+ return (imap_read_data($sid, $response, $message));
+}
+
+//
+// imap_gen_sid
+// Action: Generate unique serialized sid to comply with RFC
+// Call: imap_gen_sid ()
+//
+function imap_gen_sid ()
+{
+ global $IMAP_SID;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ return (sprintf("A%03d", $IMAP_SID++));
+}
+
+//
+// imap_read_data
+// Action: Read data from imap socket connection
+// Call: imap_read_data (string sid, string response, string message)
+//
+function imap_read_data($sid, &$response, &$message)
+{
+ global $IMAP_STREAM;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+
+ $read = '';
+ $data = array();
+ $result = array();
+
+ /* get data from the server */
+ while (true) {
+ $read = fgets($IMAP_STREAM);
+ $IMAP_DEBUG .= "\n";
+
+ /* the server will send OK, BAD or NO on completion of the command */
+ if (preg_match("/^$sid (OK|BAD|NO)(.*)$/", $read, $result)) {
+ break;
+ }
+
+ /* we're still receiving valid data */
+ $data[] = $read;
+ }
+
+ $response = $result[1];
+ $message = $result[2];
+
+ return $data;
+}
+
+//
+// imap_send_data
+// Action: Send data to imap socket connection
+// Call: imap_send_data (string sid, string command)
+//
+function imap_send_data ($sid, $command)
+{
+ global $IMAP_STREAM;
+ global $IMAP_DEBUG;
+ $IMAP_DEBUG .= "\n";
+ $IMAP_DEBUG .= "\n";
+
+ /* send the data to the socket */
+ fputs($IMAP_STREAM, $sid." ".$command."\r\n");
+}
+?>
diff -Naur postfixadmin-2.0.5.orig/languages/en.lang postfixadmin-2.0.5/languages/en.lang
--- postfixadmin-2.0.5.orig/languages/en.lang 2004-08-20 17:00:00.000000000 -0500
+++ postfixadmin-2.0.5/languages/en.lang 2004-10-27 22:18:36.000000000 -0500
@@ -283,4 +283,22 @@
$PALANG['pUsersVacation_button_back'] = 'Coming Back';
$PALANG['pUsersVacation_result_error'] = '