Hello community,

here is the log from the commit of package postfixadmin for openSUSE:Factory 
checked in at 2017-02-12 00:49:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/postfixadmin (Old)
 and      /work/SRC/openSUSE:Factory/.postfixadmin.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "postfixadmin"

Changes:
--------
--- /work/SRC/openSUSE:Factory/postfixadmin/postfixadmin.changes        
2016-09-12 13:28:09.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.postfixadmin.new/postfixadmin.changes   
2017-02-12 00:49:57.653187522 +0100
@@ -1,0 +2,14 @@
+Wed Feb  8 21:25:52 UTC 2017 - [email protected]
+
+- update to PostfixAdmin 3.0.2:
+  - SECURITY: don't allow to delete protected aliases (CVE-2017-5930, 
boo#1024211)
+  - fix VacationHandler for PostgreSQL
+  - AliasHandler: restrict mailbox subquery to allowed and specified domains
+    to improve performance on setups with lots of mailboxes
+  - allow switching between dovecot:* password schemes while still accepting
+    passwords hashed using the previous dovecot:* scheme
+  - FetchmailHandler: use a valid date as default for 'date'
+  - fix date formatting in non-english languages when using PostgreSQL
+  - various small fixes
+
+-------------------------------------------------------------------

Old:
----
  postfixadmin-3.0.tar.gz

New:
----
  postfixadmin-3.0.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ postfixadmin.spec ++++++
--- /var/tmp/diff_new_pack.4aPnRv/_old  2017-02-12 00:49:59.032991058 +0100
+++ /var/tmp/diff_new_pack.4aPnRv/_new  2017-02-12 00:49:59.036990488 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package postfixadmin
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
 
 
 Name:           postfixadmin
-Version:        3.0
+Version:        3.0.2
 Release:        0
 Url:            http://postfixadmin.sourceforge.net/
 Source0:        
http://sourceforge.net/projects/postfixadmin/files/postfixadmin/%{name}-%{version}/%{name}-%{version}.tar.gz

++++++ postfixadmin-3.0.tar.gz -> postfixadmin-3.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/CHANGELOG.TXT 
new/postfixadmin-3.0.2/CHANGELOG.TXT
--- old/postfixadmin-3.0/CHANGELOG.TXT  2016-09-10 22:02:33.000000000 +0200
+++ new/postfixadmin-3.0.2/CHANGELOG.TXT        2017-02-08 21:46:10.000000000 
+0100
@@ -7,7 +7,27 @@
 # Further details on the project are available at http://postfixadmin.sf.net
 #
 # Last update:
-# $Id: CHANGELOG.TXT 1861 2016-09-10 20:02:33Z christian_boltz $
+# $Id: CHANGELOG.TXT 1895 2017-02-08 20:46:10Z christian_boltz $
+
+Version 3.0.2 - 2017/02/08 - SVN r1895
+-------------------------------------------------
+
+  - SECURITY: don't allow to delete protected aliases (CVE-2017-5930, PR#23)
+  - fix VacationHandler for PostgreSQL
+  - AliasHandler: restrict mailbox subquery to allowed and specified domains
+    to improve performance on setups with lots of mailboxes
+  - allow switching between dovecot:* password schemes while still accepting
+    passwords hashed using the previous dovecot:* scheme
+  - FetchmailHandler: use a valid date as default for 'date'
+  - fix date formatting in non-english languages when using PostgreSQL
+  - debian packaging: improve dependencies, remove old templates_c/ files
+  - various small fixes
+
+Version 3.0.1 - 2016/09/19 - SVN r1870
+-------------------------------------------------
+
+  - add missing Smarty files to Debian package
+    (no changes to PostfixAdmin, therefore only released as Debian packages)
 
 Version 3.0 - 2016/09/11 - SVN r1861
 -------------------------------------------------
@@ -452,8 +472,21 @@
   - postfixadmin.docs: removed redundant changelog file
   - debian/postfixadmin.postrm: Call wwwconfig scripts only if they are 
existing
 
+Version 2.3.8 - 2015/10/07 - SVN r1814 (postfixadmin-2.3 branch)
+----------------------------------------------------------------
+
+  - fix query to enable/disable alias in edit-mailbox for PostgreSQL (#311)
+  - don't prefill username in users/ login on failed logins - fixes (probably
+    harmless) XSS
+  - fix show_gen_status() to properly escape mail addresses in query (#356)
+  - fix escaping in create-admin, create-mailbox and fetchmail templates -
+    fixes (harmless) XSS on form validation errors
+  - don't echo the password back to the browser in the fetchmail form
+  - allow MariaDB in Debian package dependencies
+
 Version 2.3.7 - 2014/02/20 - SVN r1651 (postfixadmin-2.3 branch)
 ----------------------------------------------------------------
+
   - SECURITY: fix SQL injection in show_gen_status()
   - lt.lang, da.lang translation update
   - when enabling/disabling a mailbox, also update the corresponding alias
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/INSTALL.TXT 
new/postfixadmin-3.0.2/INSTALL.TXT
--- old/postfixadmin-3.0/INSTALL.TXT    2016-01-12 13:07:25.000000000 +0100
+++ new/postfixadmin-3.0.2/INSTALL.TXT  2016-10-20 23:26:13.000000000 +0200
@@ -22,7 +22,7 @@
 Users check out:
 
   - the PostfixAdmin documentation in the DOCUMENTS/ directory
-  - our wiki at http://sourceforge.net/apps/mediawiki/postfixadmin/
+  - our wiki at https://sourceforge.net/p/postfixadmin/wiki/
 
 There are also lots of HOWTOs around the web. Be warned that many of them 
 (even those listed below) may be outdated or incomplete. 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/VIRTUAL_VACATION/vacation.pl 
new/postfixadmin-3.0.2/VIRTUAL_VACATION/vacation.pl
--- old/postfixadmin-3.0/VIRTUAL_VACATION/vacation.pl   2016-08-25 
20:56:02.000000000 +0200
+++ new/postfixadmin-3.0.2/VIRTUAL_VACATION/vacation.pl 2017-02-08 
21:24:31.000000000 +0100
@@ -1,8 +1,13 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl -X
+# Note  - 2017/02/08 DG :
+# Yes - I know -X (^) is not ideal.
+#       Patches are welcome to remove the dependency on Mail::Sender. 
+#       Until then, we need -X to stop it failing with warnings like 
+#       defined(@array) is deprecated at .../perl5/Mail/Sender.pm line 318. 
 #
-# Virtual Vacation 4.0r1
+# Virtual Vacation 4.0
 #
-# $Revision: 1857 $
+# $Revision: 1893 $
 # Originally by Mischa Peters <mischa at high5 dot net>
 #
 # Copyright (c) 2002 - 2005 High5!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/config.inc.php 
new/postfixadmin-3.0.2/config.inc.php
--- old/postfixadmin-3.0/config.inc.php 2016-04-12 01:54:34.000000000 +0200
+++ new/postfixadmin-3.0.2/config.inc.php       2016-10-20 23:26:13.000000000 
+0200
@@ -8,7 +8,7 @@
  * 
  * Further details on the project are available at http://postfixadmin.sf.net 
  * 
- * @version $Id: config.inc.php 1833 2016-04-11 23:54:34Z christian_boltz $ 
+ * @version $Id: config.inc.php 1876 2016-10-20 21:26:13Z christian_boltz $ 
  * @license GNU GPL v2 or later. 
  * 
  * File: config.inc.php
@@ -137,7 +137,7 @@
 // system = whatever you have set as your PHP system default
 // cleartext = clear text passwords (ouch!)
 // mysql_encrypt = useful for PAM integration
-// authlib = support for courier-authlib style passwords
+// authlib = support for courier-authlib style passwords - also set 
$CONF['authlib_default_flavor']
 // dovecot:CRYPT-METHOD = use dovecotpw -s 'CRYPT-METHOD'. Example: 
dovecot:CRAM-MD5
 //     IMPORTANT:
 //     - don't use dovecot:* methods that include the username in the hash - 
you won't be able to login to PostfixAdmin in this case
@@ -146,6 +146,7 @@
 $CONF['encrypt'] = 'md5crypt';
 
 // In what flavor should courier-authlib style passwords be encrypted?
+// (only used if $CONF['encrypt'] == 'authlib')
 // md5 = {md5} + base64 encoded md5 hash
 // md5raw = {md5raw} + plain encoded md5 hash
 // SHA = {SHA} + base64-encoded sha1 hash
@@ -261,7 +262,7 @@
     PostfixAdmin, but it does not create it in the database. You have to do
     that yourself. 
     Please follow the naming policy for custom database fields and tables on
-    
http://sourceforge.net/apps/mediawiki/postfixadmin/index.php?title=Custom_fields
+    https://sourceforge.net/p/postfixadmin/wiki/Custom_fields/
     to avoid clashes with future versions of PostfixAdmin.
 
     See initStruct() in the *Handler class for the default $struct.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/debian/changelog 
new/postfixadmin-3.0.2/debian/changelog
--- old/postfixadmin-3.0/debian/changelog       2016-09-10 22:02:33.000000000 
+0200
+++ new/postfixadmin-3.0.2/debian/changelog     2017-02-08 20:31:42.000000000 
+0100
@@ -1,3 +1,22 @@
+postfixadmin (3.0.2-1) unstable; urgency=low
+
+  * Security fix (don't delete protected aliases, CVE-2017-5930)
+  * Fix MySQL vacation.cache column (regression fix)
+
+ -- David Goodwin <[email protected]>  Wed, 08 Feb 2017 19:30:00 +0000
+
+postfixadmin (3.0.1-2) unstable; urgency=low
+
+  * Try and make dependencies less strict (and perhaps work for Ubuntu Precise 
as well)
+
+ -- David Goodwin <[email protected]>  Mon, 10 Oct 2016 20:00:00 +0100
+
+postfixadmin (3.0.1-1) unstable; urgency=low
+
+  * Fix packaging issues (missing: smarty/ and configs/)
+
+ -- David Goodwin <[email protected]>  Mon, 19 Sep 2016 10:08:00 +0100
+
 postfixadmin (3.0-1) unstable; urgency=low
 
   * New upstream release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/debian/control 
new/postfixadmin-3.0.2/debian/control
--- old/postfixadmin-3.0/debian/control 2016-05-23 06:49:00.000000000 +0200
+++ new/postfixadmin-3.0.2/debian/control       2016-12-21 22:20:21.000000000 
+0100
@@ -11,8 +11,8 @@
 
 Package: postfixadmin
 Architecture: all
-Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | 
lighttpd | httpd, libapache2-mod-php | php-cgi | php, php-imap, php-mysql | 
php-pgsql | php-mysqlnd | php-sqlite3, mysql-client | postgresql-client, 
${misc:Depends}
-Recommends: postfix-mysql | postfix-pgsql, virtual-mysql-server | postgresql | 
sqlite, zendframework, dovecot-core | courier-authlib-mysql | 
courier-authlib-postgresql, php-cli
+Depends: debconf (>= 0.5), dbconfig-common, wwwconfig-common, apache2 | 
lighttpd | httpd, libapache2-mod-php | libapache2-mod-php5 | php-cgi | php5-cgi 
| php5-fpm | php-fpm | php | php5 , php-imap | php5-imap, php-mysql | 
php5-mysql | php-pgsql | php5-pgsql | php-mysqlnd | php-sqlite3, mysql-client | 
postgresql-client | mariadb-client, ${misc:Depends}
+Recommends: postfix-mysql | postfix-pgsql, virtual-mysql-server | postgresql | 
sqlite (>= 3.12.0), zendframework, dovecot-core | courier-authlib-mysql | 
courier-authlib-postgresql, php-cli
 Description: Virtual mail hosting interface for Postfix
  Postfixadmin is a web interface to manage virtual users and domains
  for a Postfix mail transport agent. It supports Virtual mailboxes,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/debian/postfixadmin.install 
new/postfixadmin-3.0.2/debian/postfixadmin.install
--- old/postfixadmin-3.0/debian/postfixadmin.install    2016-05-22 
21:25:31.000000000 +0200
+++ new/postfixadmin-3.0.2/debian/postfixadmin.install  2016-09-19 
11:08:00.000000000 +0200
@@ -5,4 +5,6 @@
 model          usr/share/postfixadmin
 templates      usr/share/postfixadmin
 users          usr/share/postfixadmin
+smarty         usr/share/postfixadmin
+configs     usr/share/postfixadmin
 debian/lighttpd/90-postfixadmin.conf   etc/lighttpd/conf-available
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/debian/postfixadmin.postinst 
new/postfixadmin-3.0.2/debian/postfixadmin.postinst
--- old/postfixadmin-3.0/debian/postfixadmin.postinst   2016-05-22 
20:50:03.000000000 +0200
+++ new/postfixadmin-3.0.2/debian/postfixadmin.postinst 2016-12-21 
22:32:15.000000000 +0100
@@ -19,6 +19,10 @@
     rm -f /etc/lighttpd/conf-available/postfixadmin
 fi
 
+# See : https://sourceforge.net/p/postfixadmin/bugs/376/ - remove any existing 
templates_c files on upgrade.
+if [ -d /usr/share/postfixadmin/templates_c ]; then
+    find /usr/share/postfixadmin/templates_c -type f -exec rm -r {} \;
+fi
 #DEBHELPER#
 
 exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/functions.inc.php 
new/postfixadmin-3.0.2/functions.inc.php
--- old/postfixadmin-3.0/functions.inc.php      2016-09-10 22:02:33.000000000 
+0200
+++ new/postfixadmin-3.0.2/functions.inc.php    2017-02-08 21:45:26.000000000 
+0100
@@ -8,14 +8,14 @@
  * 
  * Further details on the project are available at http://postfixadmin.sf.net 
  * 
- * @version $Id: functions.inc.php 1861 2016-09-10 20:02:33Z christian_boltz $ 
+ * @version $Id: functions.inc.php 1894 2017-02-08 20:45:26Z christian_boltz $ 
  * @license GNU GPL v2 or later. 
  * 
  * File: functions.inc.php
  * Contains re-usable code.
  */
 
-$version = '3.0';
+$version = '3.0.2';
 $min_db_version = 1835;  # update (at least) before a release with the latest 
function numbrer in upgrade.php
 
 /**
@@ -933,7 +933,9 @@
     
     elseif (preg_match("/^dovecot:/", $CONF['encrypt'])) {
         $split_method = preg_split ('/:/', $CONF['encrypt']);
-        $method       = strtoupper($split_method[1]); # TODO: if $pw_db starts 
with {method}, change $method accordingly
+        $method       = strtoupper($split_method[1]);
+        # If $pw_db starts with {method}, change $method accordingly
+        if (!empty($pw_db) && preg_match('/^\{([A-Z0-9.-]+)\}.+/', $pw_db, 
$method_matches)) { $method = $method_matches[1]; }
         if (! preg_match("/^[A-Z0-9.-]+$/", $method)) { die("invalid dovecot 
encryption method"); }  # TODO: check against a fixed list?
         # if (strtolower($method) == 'md5-crypt') die("\$CONF['encrypt'] = 
'dovecot:md5-crypt' will not work because dovecotpw generates a random salt 
each time. Please use \$CONF['encrypt'] = 'md5crypt' instead."); 
         # $crypt_method = preg_match ("/.*-CRYPT$/", $method);
@@ -1686,11 +1688,13 @@
  * db_where_clause
  * Action: builds and returns a WHERE clause for database queries. All given 
conditions will be AND'ed.
  * Call: db_where_clause (array $conditions, array $struct)
- * param array $conditios: array('field' => 'value', 'field2' => 'value2, ...)
+ * param array $condition: array('field' => 'value', 'field2' => 'value2, ...)
  * param array $struct - field structure, used for automatic bool conversion
  * param string $additional_raw_where - raw sniplet to include in the WHERE 
part - typically needs to start with AND
  * param array $searchmode - operators to use (=, <, > etc.) - defaults to = 
if not specified for a field (see 
  *                           $allowed_operators for available operators)
+ *                           Note: the $searchmode operator will only be used 
if a $condition for that field is set.
+ *                                 This also means you'll need to set a 
(dummy) condition for NULL and NOTNULL.
  */
 function db_where_clause($condition, $struct, $additional_raw_where = '', 
$searchmode = array()) {
     if (!is_array($condition)) {
@@ -1703,7 +1707,7 @@
         die('db_where_cond: parameter $struct is not an array!');
     }
 
-    $allowed_operators = explode(' ', '< > >= <= = != <> CONT LIKE');
+    $allowed_operators = explode(' ', '< > >= <= = != <> CONT LIKE NULL 
NOTNULL');
     $where_parts = array();
     $having_parts = array();
 
@@ -1724,7 +1728,15 @@
                 die('db_where_clause: Invalid searchmode for ' . $field);
             }
         }
-        $querypart = $field . $operator . "'" . escape_string($value) . "'";
+
+        if ($operator == "NULL") {
+            $querypart = $field . ' IS NULL';
+        } elseif ($operator == "NOTNULL") {
+            $querypart = $field . ' IS NOT NULL';
+        } else {
+            $querypart = $field . $operator . "'" . escape_string($value) . 
"'";
+        }
+
         if($struct[$field]['select'] != '') {
             $having_parts[$field] = $querypart;
         } else {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/bg.lang 
new/postfixadmin-3.0.2/languages/bg.lang
--- old/postfixadmin-3.0/languages/bg.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/bg.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: bg.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: bg.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Bulgarian
 // by Plamen Tonev
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'За да създадете catch-all 
използвайте "*" за alias. За пренасочване на домейн към домейн използвайте 
"*@domain.tld" в полето Към.'; # XXX check/beautify - was split in two lines 
before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Редактиране на alias за вашия домейн.'; # 
XXX Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Един запис на ред.'; # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/ca.lang 
new/postfixadmin-3.0.2/languages/ca.lang
--- old/postfixadmin-3.0/languages/ca.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/ca.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: ca.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: ca.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Catalan
 // by Jaume
@@ -124,6 +124,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Per crear un àlies general usi "*" 
com a àlies. Per una redirecció de domini a domini, usi "*@domain.tld" com a 
Destí.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Editi un àlies pel seu domini.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Una entrada per línia.'; # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/cn.lang 
new/postfixadmin-3.0.2/languages/cn.lang
--- old/postfixadmin-3.0/languages/cn.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/cn.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: cn.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: cn.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Simplified Chinese
 // by Matthew <matthew at cnfug dot org>
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = '要将所有的邮件全部转发请使用"*"作为别名. 
域到域的转发请使用"*@domain.tld".'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = '编辑你域名中的别名.'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = '每行一条记录.'; # XXX # XXX Text change to: 'Accepts 
multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/cs.lang 
new/postfixadmin-3.0.2/languages/cs.lang
--- old/postfixadmin-3.0/languages/cs.lang      2016-02-16 20:01:27.000000000 
+0100
+++ new/postfixadmin-3.0.2/languages/cs.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: cs.lang 1828 2016-02-16 19:01:27Z christian_boltz $
+# $Id: cs.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Czech Language Translation of PostfixAdmin
 // by Jakub
@@ -131,6 +131,7 @@
 $PALANG['alias_updated'] = 'Přesměrování %s bylo upraveno!';
 $PALANG['pCreate_alias_catchall_text'] = 'Pro vytvoření doménového koše 
použijte * jako alias. Pro přesměrování doména -> doména použijte *@domain.tld 
jako cíl.';
 $PALANG['mailbox_alias_cant_be_deleted'] = 'Toto přesměrování je svázáno s 
emailem a nemůže být proto vymazáno!';
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Upravit nastavení přesměrování.';
 $PALANG['pEdit_alias_help'] = 'Je možné zadat více cílových adres, jeden 
záznam na řádek.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/da.lang 
new/postfixadmin-3.0.2/languages/da.lang
--- old/postfixadmin-3.0/languages/da.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/da.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: da.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: da.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Danish
 // by Lars
@@ -130,6 +130,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'For at tilføje et stjerne-alias, 
brug en "*" som alias. For domæne til domæne-videresending brug "*@domæne.tld" 
som modtager.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Rediger alias.'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = 'En modtager pr. linje.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/de.lang 
new/postfixadmin-3.0.2/languages/de.lang
--- old/postfixadmin-3.0/languages/de.lang      2016-05-22 17:49:17.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/de.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: de.lang 1844 2016-05-22 15:49:17Z christian_boltz $
+# $Id: de.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file German
 // by Tobias
@@ -127,6 +127,7 @@
 $PALANG['alias_updated'] = 'Der Alias %s wurde geändert.';
 $PALANG['pCreate_alias_catchall_text'] = 'Um alle Adressen abzudecken benutzen 
Sie einen "*" als Alias. Um ganze Domains an andere Domains weiterzuleiten 
benutzen Sie "*@domain.tld" im "An"-Feld.';
 $PALANG['mailbox_alias_cant_be_deleted'] = 'Dieser Alias gehört zu einer 
Mailbox und kann nicht gelöscht werden!';
+$PALANG['protected_alias_cant_be_deleted'] = 'Der Alias %s ist geschützt und 
kann nur von einem Superadmin gelöscht werden.';
 
 $PALANG['pEdit_alias_welcome'] = 'Weiterleitungs-Einstellungen ändern';
 $PALANG['pEdit_alias_help'] = 'Angabe mehrerer Ziele möglich, ein Eintrag pro 
Zeile.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/en.lang 
new/postfixadmin-3.0.2/languages/en.lang
--- old/postfixadmin-3.0/languages/en.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/en.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: en.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: en.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file English
 // by Mischa <mischa at high5 dot net>
@@ -128,6 +128,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!';
 $PALANG['pCreate_alias_catchall_text'] = 'To create a catch-all use an "*" as 
alias.'; # XXX don't propagate usage of *@target-domain.com for domain-aliasing 
any longer
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!';
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin';
 
 $PALANG['pEdit_alias_welcome'] = 'Edit forwarding settings';
 $PALANG['pEdit_alias_help'] = 'Accepts multiple targets, one entry per line.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/es.lang 
new/postfixadmin-3.0.2/languages/es.lang
--- old/postfixadmin-3.0/languages/es.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/es.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: es.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: es.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Spanish 
 // by Alvaro
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Para crear un alias general use "*" 
como alias. Para una redirección de dominio a dominio, use "*@domain.tld" como 
Destino.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Edite un alias para su dominio.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Una entrada por línea.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/et.lang 
new/postfixadmin-3.0.2/languages/et.lang
--- old/postfixadmin-3.0/languages/et.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/et.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: et.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: et.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Estonian
 // by Peeter Partel <peeter at sigma dot ee>
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Loomaks püüa-kõik aadressi kasuta 
aliasena "*". Domeenilt domeenile edasisaatmiseks kasuta kellele väljal 
"*@domeen.xx".'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Muuda aliast.'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Üks kirje rea kohta.'; # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/eu.lang 
new/postfixadmin-3.0.2/languages/eu.lang
--- old/postfixadmin-3.0/languages/eu.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/eu.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: eu.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: eu.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Euskara
 // by Julen
@@ -123,6 +123,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Alias orokor bat sortzeko "*" erabil 
ezazu alias gisa. Domeinuz domeinurako birbideraketa baterako Norako gisa 
"*@domain.tld" erabil ezazu.'; # XXX check/beautify - was split in two lines 
before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Domeinuarentzat aliasa aldatu.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Lerroko sarrera bat.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/fi.lang 
new/postfixadmin-3.0.2/languages/fi.lang
--- old/postfixadmin-3.0/languages/fi.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/fi.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: fi.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: fi.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Finnish
 // by Palo
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Jos haluat luoda catch-all osoitteen 
käytä "*" merkkiä aliaksena. Ohjaus domainista domainiin tapahtuu käyttämällä 
"*@domain.tld" Kenelle: -osoitteena.'; # XXX check/beautify - was split in two 
lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 $PALANG['pEdit_alias_welcome'] = 'Muokkaa aliasta.'; # XXX Text change to: 
'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Yksi kohta per rivi.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
 $PALANG['alias'] = 'Alias';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/fo.lang 
new/postfixadmin-3.0.2/languages/fo.lang
--- old/postfixadmin-3.0/languages/fo.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/fo.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: fo.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: fo.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Faroese
 // by Danial
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Fyri at stovna eitt ið fangar alt, 
brúka eina "*" sum dulnevni. Fyri navnaøki til navnaøki víðarisending brúka 
"*@navnaøki.fo" til hetta.'; # XXX check/beautify - was split in two lines 
before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Broyt eitt dulnevni á tínum navnaøki.'; # 
XXX Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Eina adressu pr. linju.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/fr.lang 
new/postfixadmin-3.0.2/languages/fr.lang
--- old/postfixadmin-3.0/languages/fr.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/fr.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: fr.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: fr.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file French
 // by Kuthz
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'L\'alias %s a été mis à jour!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Pour ajouter un alias global, 
utilisez "*". Pour un transfert de domaine à domaine, utilisez "*@domain.tld" 
dans le champs A.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'Cet alias appartient à un compte 
courriel et ne peut être supprimé!';
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Modifier les paramètres de transfert.';
 $PALANG['pEdit_alias_help'] = 'Cibles multiples acceptées, une entrée par 
ligne.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/hr.lang 
new/postfixadmin-3.0.2/languages/hr.lang
--- old/postfixadmin-3.0/languages/hr.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/hr.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: hr.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: hr.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Croatian
 // by Daniel Radetic <drade at boobah dot info>
@@ -124,6 +124,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Ukoliko želite stvoriti 
"sveprimajući" alias, upotrijebite "*" umjesto aliasa. Za preusmjeravanje iz 
domene na domenu, upotrijebite "*@domena.tld" u "Za" polju.'; # XXX 
check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Uredi alias za domenu.'; # XXX Text change 
to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Jedan unos po liniji.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/hu.lang 
new/postfixadmin-3.0.2/languages/hu.lang
--- old/postfixadmin-3.0/languages/hu.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/hu.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: hu.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: hu.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Hungarian
 // by Christian Hamar <krics at linuxforum dot hu> and Levente Farkas <lfarkas 
at lfarkas dot org>
@@ -127,6 +127,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'A catch-all (*@valami.hu) 
beállításához használj "*" -ot az alias mezõnél. A domain-domain közötti 
átirányításhoz használd a "*@akarmi.hu" címet.'; # XXX check/beautify - was 
split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Alias szerkesztése a domainhez.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Soronként egy.'; # XXX # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/is.lang 
new/postfixadmin-3.0.2/languages/is.lang
--- old/postfixadmin-3.0/languages/is.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/is.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: is.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: is.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Icelandic
 // by Gestur
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Til að útbúa alias fyrir öll netföng 
í léninu, þá geturðu útbúið "*" alias. Til að áframsenda með alias á annað lén 
eða pósthólf, notaðu "*@domain.tld í til.'; # XXX check/beautify - was split in 
two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Breyta alias í léninu.'; # XXX Text change 
to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Ein færsla í einu.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/it.lang 
new/postfixadmin-3.0.2/languages/it.lang
--- old/postfixadmin-3.0/languages/it.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/it.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: it.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: it.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Italian
 // by Massimiliano Stucchi <max at gufi dot org>
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Per creare un account universale, 
usare "*" come alias. Per inoltri da dominio a dominio, usare "*@domain.tld" 
come campo "a".'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Modifica un alias per il tuo dominio.'; # 
XXX Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Un indirizzo per linea.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/ja.lang 
new/postfixadmin-3.0.2/languages/ja.lang
--- old/postfixadmin-3.0/languages/ja.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/ja.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -127,6 +127,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'すべてのメールを受け取るには、転送元に "*" を使います。 
別のドメインにすべて転送するには、転送先に "*.domain.tld" を使います。'; # XXX check/beautify - was split 
in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = '転送先アドレスの編集'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = '1行に1エントリです。'; # XXX # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/lt.lang 
new/postfixadmin-3.0.2/languages/lt.lang
--- old/postfixadmin-3.0/languages/lt.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/lt.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: lt.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: lt.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Lithuanian 
 // by Giedrius <giedrius_balbieris at metalot dot com>
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Jei norite sukurti sinonimą, kuris 
gautų visas žinutes neegzistuojantiems adresatams, naudokite "*".';
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 
 $PALANG['pEdit_alias_welcome'] = 'Keisti persiuntimo nustatymus';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/mk.lang 
new/postfixadmin-3.0.2/languages/mk.lang
--- old/postfixadmin-3.0/languages/mk.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/mk.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: mk.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: mk.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Macedonian
 // by Damjan Georgiev <dame at mol dot com dot mk>
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'За да креираш catch-all користи "*" 
како алијас.  За препраќање од домен на домен користи "*@domain.tld" како ДО.'; 
# XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Едитирање на алијас за вашиот домен.'; # XXX 
Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Еден запис по линија.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/nb.lang 
new/postfixadmin-3.0.2/languages/nb.lang
--- old/postfixadmin-3.0/languages/nb.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/nb.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: nb.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: nb.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Norwegian (bokmål)
 // by Odd Henriksen
@@ -127,6 +127,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'For å opprette et "catch-all"-alias, 
bruk "*" som alias. For domene-til-domene-videresending, bruk "*@domene.tld" i 
Til-feltet.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 $PALANG['pEdit_alias_welcome'] = 'Endre et alias.'; # XXX Text change to: 
'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Én e-postadresse per linje.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
 $PALANG['alias'] = 'Alias';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/nl.lang 
new/postfixadmin-3.0.2/languages/nl.lang
--- old/postfixadmin-3.0/languages/nl.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/nl.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: nl.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: nl.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Dutch
 // by Mourik
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'De alias %s is bijgewerkt!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Om een catch-all te gebruiken, dient 
u een "*" (asteric) in te vullen als alias. Voor domein naar domein forwarding 
gebruik "*@domein.tld" als naar.';
 $PALANG['mailbox_alias_cant_be_deleted'] = 'De alias maakt onderdeel uit van 
mailbox en kan niet worden verwijderd!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Bewerk een alias voor uw domein.';
 $PALANG['pEdit_alias_help'] = 'Meerdere e-mailadressen toegestaan. Slechts één 
alias per regel.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/nn.lang 
new/postfixadmin-3.0.2/languages/nn.lang
--- old/postfixadmin-3.0/languages/nn.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/nn.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: nn.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: nn.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Norwegian - Bokmål
 // by Jon Arve Wålberg
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'For å opprette et alias som "mottar 
alt" bruk "*" som alias. For domene-til-domene videresending bruk 
"*@domene.tld" som mottaker.';  # XXX check/beautify - was split in two lines 
before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 $PALANG['pEdit_alias_welcome'] = 'Endre et alias.'; # XXX Text change to: 
'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'En mottaker per linje.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
 $PALANG['alias'] = 'Alias';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/pl.lang 
new/postfixadmin-3.0.2/languages/pl.lang
--- old/postfixadmin-3.0/languages/pl.lang      2015-10-20 18:08:17.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/pl.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: pl.lang 1821 2015-10-20 16:08:17Z gingerdog $
+# $Id: pl.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Polish
 // by Jarek
@@ -128,6 +128,7 @@
 $PALANG['alias_updated'] = 'Alias %s został zaktualizowany!';
 $PALANG['pCreate_alias_catchall_text'] = 'Aby utworzyć domyślne konto dla 
domeny (catch-all) podaj "*" (gwiazdkę) jako alias. Jeśli chcesz przekazywać 
całość poczty do innej domeny, wpisz jako alias "*@domena.tld".'; # XXX 
check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 $PALANG['pEdit_alias_welcome'] = 'Edytuj alias dla Twojej domeny.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Jeden wpis na linię.'; # XXX # XXX Text change 
to: 'Accepts multiple targets, one entry per line.'
 $PALANG['alias'] = 'Alias';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/pt-br.lang 
new/postfixadmin-3.0.2/languages/pt-br.lang
--- old/postfixadmin-3.0/languages/pt-br.lang   2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/pt-br.lang 2017-02-08 18:53:13.000000000 
+0100
@@ -129,6 +129,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Para criar um alias global, use "*" 
no campo Alias. Para encaminhar de um domínio para outro, use "*@dominio.tld" 
no campo Para.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Edição de alias do domínio.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Uma entrada por linha.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/ro.lang 
new/postfixadmin-3.0.2/languages/ro.lang
--- old/postfixadmin-3.0/languages/ro.lang      2016-09-09 22:08:57.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/ro.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -127,6 +127,7 @@
 $PALANG['alias_updated'] = 'Aliasul %s a fost modificat!';
 $PALANG['pCreate_alias_catchall_text'] = 'Puteti crea un alias pentru adrese 
multiple prin folosirea "*".'; # XXX don't propagate usage of 
*@target-domain.com for domain-aliasing any longer
 $PALANG['mailbox_alias_cant_be_deleted'] = 'Acest alias apartine unei casute 
si nu poate fi sters!';
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Editeaza setarile de redirectionare';
 $PALANG['pEdit_alias_help'] = 'Se accepta inregistrari multiple, cate una pe 
linie.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/ru.lang 
new/postfixadmin-3.0.2/languages/ru.lang
--- old/postfixadmin-3.0/languages/ru.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/ru.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: ru.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: ru.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Russian
 // by Paul
@@ -129,6 +129,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Для создания catch-all почтового 
ящика используйте "*" в качестве имени алиаса.'; # XXX don't propagate usage of 
*@target-domain.com for domain-aliasing any longer
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Редактирование настроек пересылки';
 $PALANG['pEdit_alias_help'] = 'Можно указать несколько целей, одна запись на 
строку.';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/sk.lang 
new/postfixadmin-3.0.2/languages/sk.lang
--- old/postfixadmin-3.0/languages/sk.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/sk.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: sk.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: sk.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Slovak
 // by bajk (eszabo @sf)
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Pre vytvorenie doménového koša 
použite * ako alias. Pre alias doména-doména použite *@domain.tld ako cieľ.'; # 
XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Upraviť aliasy'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Jeden záznam na riadku'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/sl.lang 
new/postfixadmin-3.0.2/languages/sl.lang
--- old/postfixadmin-3.0/languages/sl.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/sl.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: sl.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: sl.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Slovenian
 // by Nejc Skoberne <nejc at skoberne dot net>
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Če želite ustvariti "vseobsegajoči" 
alias, uporabite "*" namesto aliasa. Za posredovanje iz domene na domeno, 
uporabite "*@domena.si" v "Za" polju.'; # XXX check/beautify - was split in two 
lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Uredi alias za določeno domeno.'; # XXX Text 
change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'V posamezni vrstici je lahko samo en naslov.'; 
# XXX # XXX Text change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/sv.lang 
new/postfixadmin-3.0.2/languages/sv.lang
--- old/postfixadmin-3.0/languages/sv.lang      2015-07-14 00:48:01.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/sv.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: sv.lang 1793 2015-07-13 22:48:01Z christian_boltz $
+# $Id: sv.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Swedish
 // by Stefan Jakobsson <stefan at katrinet dot se>
@@ -128,6 +128,7 @@
 $PALANG['alias_updated'] = 'Aliaset %s är uppdaterat!';
 $PALANG['pCreate_alias_catchall_text'] = 'För att skapa en catch-all anges ett 
"*" som alias.';
 $PALANG['mailbox_alias_cant_be_deleted'] = 'Detta alias tillhör en brevlåda 
och kan inte tas bort!';
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'Inställningar för vidarebefordring.'; # XXX 
Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Ett alias per rad.'; # XXX Text change to: 
'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/tr.lang 
new/postfixadmin-3.0.2/languages/tr.lang
--- old/postfixadmin-3.0/languages/tr.lang      2015-04-07 00:44:51.000000000 
+0200
+++ new/postfixadmin-3.0.2/languages/tr.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: tr.lang 1781 2015-04-06 22:44:51Z christian_boltz $
+# $Id: tr.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Türkçe
 // by Onuryalazi
@@ -125,6 +125,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = 'Hepsini-yakala yaratmak için alias 
olarak "*" kullanýn. Domain yönlendirme domaini için kime kýsmýnda 
"*@domain.tld" kullanýn.'; # XXX check/beautify - was split in two lines before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = 'domaniniz için bir domain\'i düzenleyin. '; 
# XXX Text change to: 'Edit forwarding settings'
 $PALANG['pEdit_alias_help'] = 'Satýr baþýna bir giriþ.'; # XXX # XXX Text 
change to: 'Accepts multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/languages/tw.lang 
new/postfixadmin-3.0.2/languages/tw.lang
--- old/postfixadmin-3.0/languages/tw.lang      2016-02-04 23:41:56.000000000 
+0100
+++ new/postfixadmin-3.0.2/languages/tw.lang    2017-02-08 18:53:13.000000000 
+0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: tw.lang 1825 2016-02-04 22:41:56Z christian_boltz $
+# $Id: tw.lang 1889 2017-02-08 17:53:13Z christian_boltz $
 //
 // Language file Traditional Chinese
 // by John Chen (johnpupu @SF)
@@ -126,6 +126,7 @@
 $PALANG['alias_updated'] = 'The alias %s has been updated!'; # XXX
 $PALANG['pCreate_alias_catchall_text'] = '要將所有的郵件全部轉發請使用"*"作為別名. 
網域到網域的轉發請使用"*@domain.tld".'; # XXX check/beautify - was split in two lines 
before
 $PALANG['mailbox_alias_cant_be_deleted'] = 'This alias belongs to a mailbox 
and can\'t be deleted!'; # XXX
+$PALANG['protected_alias_cant_be_deleted'] = 'The alias %s is protected and 
can only be deleted by a superadmin'; # XXX
 
 $PALANG['pEdit_alias_welcome'] = '編輯你網域中的別名.'; # XXX Text change to: 'Edit 
forwarding settings'
 $PALANG['pEdit_alias_help'] = '每行一條記錄.'; # XXX # XXX Text change to: 'Accepts 
multiple targets, one entry per line.'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/list-virtual.php 
new/postfixadmin-3.0.2/list-virtual.php
--- old/postfixadmin-3.0/list-virtual.php       2015-12-07 00:27:45.000000000 
+0100
+++ new/postfixadmin-3.0.2/list-virtual.php     2017-01-26 19:22:55.000000000 
+0100
@@ -8,7 +8,7 @@
  * 
  * Further details on the project are available at http://postfixadmin.sf.net 
  * 
- * @version $Id: list-virtual.php 1822 2015-12-06 23:27:45Z christian_boltz $ 
+ * @version $Id: list-virtual.php 1888 2017-01-26 18:22:55Z christian_boltz $ 
  * @license GNU GPL v2 or later. 
  * 
  * File: list-virtual.php
@@ -136,10 +136,9 @@
 $table_mailbox = table_by_key('mailbox');
 
 if (count($search) == 0 || !isset($search['_'])) {
-    $list_param = "domain='$fDomain'";
+    $search_alias = array('domain' => $fDomain);
 } else {
-    $searchterm = escape_string($search['_']);
-    $list_param = "(address LIKE '%$searchterm%' OR goto LIKE 
'%$searchterm%')";
+    $search_alias = array('_' => $search['_']);
 }
 
 $handler = new AliasHandler(0, $admin_username);
@@ -153,8 +152,8 @@
 $alias_data['struct']['on_vacation']['display_in_list'] = 0;
 $alias_data['msg']['show_simple_search'] = False; # hide search box
 
-$handler->getList($list_param, array(), $page_size, $fDisplay);
-$pagebrowser_alias = $handler->getPagebrowser($list_param, array());
+$handler->getList($search_alias, array(), $page_size, $fDisplay);
+$pagebrowser_alias = $handler->getPagebrowser($search_alias, array());
 $tAlias = $handler->result();
 
 
@@ -451,8 +450,10 @@
 $smarty->assign ('tDisplay_next_show', $tDisplay_next_show);
 $smarty->assign ('tDisplay_next', $tDisplay_next);
 
-$smarty->assign ('tAliasDomains', $tAliasDomains);
-$smarty->assign ('aliasdomain_data', $aliasdomain_data);
+if (Config::bool('alias_domain')) {
+    $smarty->assign ('tAliasDomains', $tAliasDomains);
+    $smarty->assign ('aliasdomain_data', $aliasdomain_data);
+}
 
 $smarty->assign ('tAlias', $tAlias);
 $smarty->assign ('alias_data', $alias_data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/model/AliasHandler.php 
new/postfixadmin-3.0.2/model/AliasHandler.php
--- old/postfixadmin-3.0/model/AliasHandler.php 2015-04-07 00:09:18.000000000 
+0200
+++ new/postfixadmin-3.0.2/model/AliasHandler.php       2017-02-08 
18:53:13.000000000 +0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: AliasHandler.php 1777 2015-04-06 22:09:18Z christian_boltz $ 
+# $Id: AliasHandler.php 1889 2017-02-08 17:53:13Z christian_boltz $ 
 
 /** 
  * Handlers User level alias actions - e.g. add alias, get aliases, update etc.
@@ -42,13 +42,9 @@
                 /*options*/ '',
                 /*not_in_db*/ 0,
                 /*dont_write_to_db*/ 1,
-                /*select*/ 'coalesce(__is_mailbox,0) as is_mailbox, 
__mailbox_username', 
-                           # __mailbox_username is unused, but needed as 
workaround for a MariaDB bug
-                /*extrafrom*/ 'LEFT JOIN ( ' .
-                    ' SELECT 1 as __is_mailbox, username as __mailbox_username 
' .
-                    ' FROM ' . table_by_key('mailbox') .
-                    ' WHERE username IS NOT NULL ' .
-                    ' ) AS __mailbox ON __mailbox_username = address' ),
+                /*select*/ 'coalesce(__is_mailbox,0) as is_mailbox' ),
+                /*extrafrom set via set_is_mailbox_extrafrom() */
+            '__mailbox_username' => pacol( 0,       0,      1,      'vtxt', '' 
                             , ''                                , 0),  # 
filled via is_mailbox
             'goto_mailbox'  => pacol(   $mbgoto,    $mbgoto,$mbgoto,'bool', 
'pEdit_alias_forward_and_store' , ''                                , 0,
                 /*options*/ '',
                 /*not_in_db*/ 1                         ), # 
read_from_db_postprocess() sets the value
@@ -64,8 +60,37 @@
                 array('select' => '1 as _can_delete')  ), # 
read_from_db_postprocess() updates the value
                 # aliases listed in $CONF[default_aliases] are read-only for 
domain admins if $CONF[special_alias_control] is NO.
         );
+
+        $this->set_is_mailbox_extrafrom();
+    }
+
+    /*
+     * set $this->struct['is_mailbox']['extrafrom'] based on the search 
conditions.
+     * If a listing for a specific domain is requested, optimize the subquery 
to only return mailboxes from that domain.
+     * This doesn't change the result of the main query, but improves the 
performance a lot on setups with lots of mailboxes.
+     * When using this function to optimize the is_mailbox extrafrom, don't 
forget to reset it to the default value
+     * (all domains for this admin) afterwards.
+     */
+    private function set_is_mailbox_extrafrom($condition=array(), 
$searchmode=array()) {
+        $extrafrom = 'LEFT JOIN ( ' .
+            ' SELECT 1 as __is_mailbox, username as __mailbox_username ' .
+            ' FROM ' . table_by_key('mailbox') .
+            ' WHERE username IS NOT NULL ';
+
+        if(isset($condition['domain']) && !isset($searchmode['domain']) && 
in_array($condition['domain'], $this->allowed_domains)) {
+            # listing for a specific domain, so restrict subquery to that 
domain
+            $extrafrom .= ' AND ' . db_in_clause($this->domain_field, 
array($condition['domain']));
+        } else {
+            # restrict subquery to all domains accessible to this admin
+            $extrafrom .= ' AND ' . db_in_clause($this->domain_field, 
$this->allowed_domains);
+        }
+
+        $extrafrom .= ' ) AS __mailbox ON __mailbox_username = address';
+
+        $this->struct['is_mailbox']['extrafrom'] = $extrafrom;
     }
 
+
     protected function initMsg() {
         $this->msg['error_already_exists'] = 'email_address_already_exists';
         $this->msg['error_does_not_exist'] = 'alias_does_not_exist';
@@ -303,22 +328,34 @@
         return $db_result;
     }
 
-    public function getList($condition, $searchmode = array(), $limit=-1, 
$offset=-1) {
+    private function condition_ignore_mailboxes($condition, $searchmode) {
         # only list aliases that do not belong to mailboxes
-        # TODO: breaks if $condition is an array
-        if ($condition != '') {
-            $condition = "  AND ( $condition ) ";
+        if (is_array($condition)) {
+            $condition['__mailbox_username'] = 1;
+            $searchmode['__mailbox_username'] = 'NULL';
+        } else {
+            if ($condition != '') {
+               $condition = " ( $condition ) AND ";
+            }
+            $condition = " $condition __mailbox_username IS NULL ";
         }
-        return parent::getList( "__mailbox_username IS NULL $condition", 
$searchmode, $limit, $offset);
+        return array($condition, $searchmode);
+    }
+
+    public function getList($condition, $searchmode = array(), $limit=-1, 
$offset=-1) {
+        list($condition, $searchmode) = 
$this->condition_ignore_mailboxes($condition, $searchmode);
+        $this->set_is_mailbox_extrafrom($condition, $searchmode);
+        $result = parent::getList($condition, $searchmode, $limit, $offset);
+        $this->set_is_mailbox_extrafrom(); # reset to default
+        return $result;
     }
 
     public function getPagebrowser($condition, $searchmode = array()) {
-        # only list aliases that do not belong to mailboxes
-        # TODO: breaks if $condition is an array
-        if ($condition != '') {
-            $condition = "  AND ( $condition ) ";
-        }
-        return parent::getPagebrowser( "__mailbox_username IS NULL 
$condition", $searchmode);
+        list($condition, $searchmode) = 
$this->condition_ignore_mailboxes($condition, $searchmode);
+        $this->set_is_mailbox_extrafrom($condition, $searchmode);
+        $result = parent::getPagebrowser($condition, $searchmode);
+        $this->set_is_mailbox_extrafrom(); # reset to default
+        return $result;
     }
 
 
@@ -404,6 +441,11 @@
             return false;
         }
 
+        if (!$this->can_delete) {
+            $this->errormsg[] = 
Config::Lang_f('protected_alias_cant_be_deleted', $this->id);
+            return false;
+        }
+
         db_delete('alias', 'address', $this->id);
 
         list(/*NULL*/,$domain) = explode('@', $this->id);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/model/FetchmailHandler.php 
new/postfixadmin-3.0.2/model/FetchmailHandler.php
--- old/postfixadmin-3.0/model/FetchmailHandler.php     2016-02-04 
23:30:06.000000000 +0100
+++ new/postfixadmin-3.0.2/model/FetchmailHandler.php   2016-09-30 
23:12:15.000000000 +0200
@@ -1,5 +1,5 @@
 <?php
-# $Id: FetchmailHandler.php 1824 2016-02-04 22:30:06Z christian_boltz $
+# $Id: FetchmailHandler.php 1873 2016-09-30 21:12:15Z christian_boltz $
 
 /**
  * Handler for fetchmail jobs
@@ -39,7 +39,7 @@
             'sslfingerprint'=> pacol(   $extra,     $extra, $extra, 'text', 
'pFetchmail_field_sslfingerprint',''                                ),
             'extra_options' => pacol(   $extra,     $extra, $extra, 'text', 
'pFetchmail_field_extra_options', 'pFetchmail_desc_extra_options'   ),
             'mda'           => pacol(   $extra,     $extra, $extra, 'text', 
'pFetchmail_field_mda'          , 'pFetchmail_desc_mda'             ),
-            'date'          => pacol(   0,          0,      1,      'text', 
'pFetchmail_field_date'         , 'pFetchmail_desc_date'            , 1 ),
+            'date'          => pacol(   0,          0,      1,      'text', 
'pFetchmail_field_date'         , 'pFetchmail_desc_date'            , 
'2000-01-01' ),
             'returned_text' => pacol(   0,          0,      1,      'text', 
'pFetchmail_field_returned_text', 'pFetchmail_desc_returned_text'   ),
             'active'        => pacol(   1,          1,      1,      'bool', 
'active'                        , ''                                , 1 ),
             'created'       => pacol(   0,          0,      0,      'ts',   
'created'                       , ''                                ),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/model/PFAHandler.php 
new/postfixadmin-3.0.2/model/PFAHandler.php
--- old/postfixadmin-3.0/model/PFAHandler.php   2016-05-22 19:44:17.000000000 
+0200
+++ new/postfixadmin-3.0.2/model/PFAHandler.php 2016-12-21 11:25:58.000000000 
+0100
@@ -565,7 +565,7 @@
         $no  = escape_string(Config::lang('NO'));
 
         if (db_pgsql()) {
-            $formatted_date = "TO_DATE(text(###KEY###), '" . 
escape_string(Config::Lang('dateformat_pgsql')) . "')";
+            $formatted_date = "TO_CHAR(###KEY###, '" . 
escape_string(Config::Lang('dateformat_pgsql')) . "')";
             # $base64_decode = "DECODE(###KEY###, 'base64')";
         } elseif (db_sqlite()) {
             $formatted_date = "strftime(###KEY###, '" . 
escape_string(Config::Lang('dateformat_mysql')) . "')";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/model/VacationHandler.php 
new/postfixadmin-3.0.2/model/VacationHandler.php
--- old/postfixadmin-3.0/model/VacationHandler.php      2016-05-22 
18:17:46.000000000 +0200
+++ new/postfixadmin-3.0.2/model/VacationHandler.php    2017-02-08 
19:05:45.000000000 +0100
@@ -1,5 +1,5 @@
 <?php
-# $Id: VacationHandler.php 1845 2016-05-22 16:17:46Z christian_boltz $ 
+# $Id: VacationHandler.php 1890 2017-02-08 18:05:45Z christian_boltz $ 
 
 class VacationHandler extends PFAHandler {
 
@@ -21,12 +21,16 @@
             'body'          => pacol(   1,          1,      0,      'text', 
'pUsersVacation_body'           , ''                                , '' ),
             'activefrom'    => pacol(   1,          1,      1,      'text', 
'pUsersVacation_activefrom'     , ''                                , '' ),
             'activeuntil'   => pacol(   1,          1,      1,      'text', 
'pUsersVacation_activeuntil'    , ''                                , '' ),
-            'cache'         => pacol(   0,          0,      0,      'text', '' 
                             , ''                                , '' ), # 
leftover from 2.2
             'active'        => pacol(   1,          1,      1,      'bool', 
'active'                        , ''                                 , 1 ),
             'created'       => pacol(   0,          0,      1,      'ts',   
'created'                       , ''                                 ),
             'modified'      => pacol(   0,          0,      1,      'ts',   
'last_modified'                 , ''                                 ),
             # TODO: add virtual 'notified' column and allow to display who 
received a vacation response?
         );
+
+        if ( ! db_pgsql() ) {
+            $this->struct['cache'] = pacol( 0,      0,      0,      'text', '' 
                             , ''                                , '' );  # 
leftover from 2.2
+        }
+
     }
 
     protected function initMsg() {
@@ -180,9 +184,12 @@
             'active' => db_get_boolean(true),
             'activefrom' => $activeFrom,
             'activeuntil' => $activeUntil,
-            'cache' => '',
         );
 
+        if ( ! db_pgsql() ) {
+            $vacation_data['cache'] = '';  # leftover from 2.2
+        }
+
         // is there an entry in the vacaton table for the user, or do we need 
to insert?
         $table_vacation = table_by_key('vacation');
         $result = db_query("SELECT * FROM $table_vacation WHERE email = 
'$E_username'");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/smarty.inc.php 
new/postfixadmin-3.0.2/smarty.inc.php
--- old/postfixadmin-3.0/smarty.inc.php 2016-05-20 22:27:29.000000000 +0200
+++ new/postfixadmin-3.0.2/smarty.inc.php       2016-12-21 22:26:02.000000000 
+0100
@@ -14,7 +14,13 @@
         //$this->template->debugging = true;
         $incpath = dirname(__FILE__);
         $this->template->setTemplateDir(dirname(__FILE__) . '/templates');
-        $this->template->setCompileDir(dirname(__FILE__) . '/templates_c');
+
+        // if it's not present or writeable, smarty should just not cache.
+        $templates_c = dirname(__FILE__) . '/templates_c';
+        if(is_dir($templates_c) && is_writeable($templates_c)) {
+            $this->template->setCompileDir($templates_c);
+        }
+
         $this->template->setConfigDir(dirname(__FILE__) . '/configs');
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/templates/list-virtual.tpl 
new/postfixadmin-3.0.2/templates/list-virtual.tpl
--- old/postfixadmin-3.0/templates/list-virtual.tpl     2015-12-07 
00:27:45.000000000 +0100
+++ new/postfixadmin-3.0.2/templates/list-virtual.tpl   2016-11-01 
20:31:41.000000000 +0100
@@ -64,6 +64,7 @@
        {if $tCanAddMailbox}
                <br /><a 
href="{#url_create_mailbox#}&amp;domain={$fDomain|escape:"url"}" 
class="button">{$PALANG.add_mailbox}</a><br />
        {/if}
+       <br /><br /><a 
href="list.php?table=mailbox&amp;output=csv">{$PALANG.download_csv}</a>
 {/if}
 {if $CONF.show_status===YES && $CONF.show_status_key===YES}
        <br/><br/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/postfixadmin-3.0/upgrade.php 
new/postfixadmin-3.0.2/upgrade.php
--- old/postfixadmin-3.0/upgrade.php    2016-05-22 21:58:54.000000000 +0200
+++ new/postfixadmin-3.0.2/upgrade.php  2016-11-01 21:31:52.000000000 +0100
@@ -4,7 +4,7 @@
 }
 
 /* vim: set expandtab softtabstop=4 tabstop=4 shiftwidth=4: */
-# @version $Id: upgrade.php 1853 2016-05-22 19:58:54Z christian_boltz $ 
+# @version $Id: upgrade.php 1881 2016-11-01 20:31:52Z christian_boltz $ 
 
 # Note: run with upgrade.php?debug=1 to see all SQL error messages
 
@@ -139,7 +139,7 @@
 
     $target_version = 0;
     // Rather than being bound to an svn revision number, just look for the 
largest function name that matches upgrade_\d+...
-    // $target_version = preg_replace('/[^0-9]/', '', '$Revision: 1853 $');
+    // $target_version = preg_replace('/[^0-9]/', '', '$Revision: 1881 $');
     $funclist = get_defined_functions();
     $our_upgrade_functions = array_filter($funclist['user'], 
'_upgrade_filter_function');
     foreach($our_upgrade_functions as $function_name) {
@@ -1619,14 +1619,14 @@
 function upgrade_1835_mysql() {
     # change default values for existing datetime fields with a 0000-00-00 
default to {DATETIME}
 
-    foreach (array('admin', 'alias', 'alias_domain', 'domain', 'mailbox', 
'domain_admins', 'vacation') as $table_to_change) {
+    foreach (array('domain_admins', 'vacation') as $table_to_change) {
         $table = table_by_key($table_to_change);
         db_query_parsed("ALTER TABLE `$table` CHANGE `created` `created` 
{DATETIME}");
     }
 
     foreach (array('admin', 'alias', 'alias_domain', 'domain', 'mailbox') as 
$table_to_change) {
         $table = table_by_key($table_to_change);
-        db_query_parsed("ALTER TABLE `$table` CHANGE `modified` `modified` 
{DATETIME}");
+        db_query_parsed("ALTER TABLE `$table` CHANGE `created` `created` 
{DATETIME}, CHANGE `modified` `modified` {DATETIME}");
     }
 
     $table = table_by_key('log');


Reply via email to