From 949e7e06be2d02e23c037a446e51aa632890d33f Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Wed, 27 May 2009 09:20:35 -0400
Subject: [PATCH] Merged revisions 1206-1212

---
 install/dist/conf/centos53.conf.php                     |  152 +++++++
 install/tpl/config.inc.php.master                       |    2 
 interface/web/dns/templates/dns_wizard.htm              |  140 +++---
 install/dist/lib/fedora.lib.php                         |    2 
 docs/INSTALL_DEBIAN_5.0.txt                             |  734 +++++++++++++++++-----------------
 install/dist/lib/opensuse.lib.php                       |    2 
 install/update.php                                      |    1 
 interface/web/mail/lib/lang/en_spamfilter_blacklist.lng |    1 
 install/dist/lib/centos53.lib.php                       |   86 ++++
 interface/web/mail/spamfilter_whitelist_edit.php        |    2 
 interface/web/mail/lib/lang/en_spamfilter_whitelist.lng |    1 
 install/sql/ispconfig3.sql                              |    2 
 interface/web/dns/lib/lang/en_dns_wizard.lng            |   13 
 install/lib/install.lib.php                             |    2 
 interface/web/dns/dns_wizard.php                        |   27 
 interface/web/mail/spamfilter_blacklist_edit.php        |    2 
 interface/lib/app.inc.php                               |   32 +
 server/scripts/update_from_tgz.sh                       |    9 
 18 files changed, 757 insertions(+), 453 deletions(-)

diff --git a/docs/INSTALL_DEBIAN_5.0.txt b/docs/INSTALL_DEBIAN_5.0.txt
index 8fefe07..137493e 100644
--- a/docs/INSTALL_DEBIAN_5.0.txt
+++ b/docs/INSTALL_DEBIAN_5.0.txt
@@ -1,358 +1,376 @@
-Installation
------------
-
-# It is recommended to use a clean (fresh) Debian lenny install where you just selected "Standard System" as the package selection during
-# setup. Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as texteditor, but you ofcourse
-# you can use whatever you prefer. You should be root for doing all of this.
-
-
-# Check we have Fully Qualified Domain Name
-
-/bin/hostname
-
-# it should return something like "ispconfig.example.com"
-# if not, then we assign a hostname (for example ispconfig):
-
-echo ispconfig.example.com > /etc/hostname
-
-vi /etc/hosts
-
-# and add lines similar but appropriate:
-
-127.0.0.1       localhost.localdomain   localhost
-192.168.0.100   ispconfig.example.com   ispconfig
-
-
-
-# Some optional choices
-
-opt0.1) Optionally install SSH-server to get remote shell
-
-apt-get install ssh openssh-server
-
-opt0.2) Optionally if you are not running in virtual machine you can set server clocksync via NTP. Virtual quests get this from the host.
-
-apt-get install ntp ntpdate
-
-
-
-# Next is the real deal
-
-1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!):
-
-apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils
-
-# Answer the questions from the package manager as follows.
-
-Create directories for web-based administration ? <-- No
-General type of configuration? <-- Internet site
-Mail name? <-- server1.mydomain.tld
- SSL certificate required <-- Ok
-
-# ...use your own domain name of course ;)
-
-
-
-# Edit the file /etc/mysql/my.cnf
-
-vi /etc/mysql/my.cnf
-
-# and comment out the line
-
-bind-address          = 127.0.0.1
-
-# then restart mysql
-
-/etc/init.d/mysql restart
-
-2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
-
-apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
-
-
-
-3) Install apache, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt (1 line!):
-
-apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby
-
-
-# When phpMyAdmin is asking weather to configure itself automatically, select "Apache2"
-
-# Then run the following to enable the Apache modules suexec, rewrite and ssl:
-
-a2enmod suexec rewrite ssl actions include
-
-# Secure phpMyAdmin by deleting setuppassword-file
-# and removing/commenting Setup Authorization from apache.conf
-
-rm /etc/phpmyadmin/htpasswd.setup
-
-vi /etc/phpmyadmin/apache.conf
-
-# delete/comment following lines (between the ----- lines):
-------------------------------------------------------
-        # Authorize for setup
-       <Files setup.php>
-           # For Apache 1.3 and 2.0
-           <IfModule mod_auth.c>
-               AuthType Basic
-               AuthName "phpMyAdmin Setup"
-               AuthUserFile /etc/phpmyadmin/htpasswd.setup
-           </IfModule>
-           # For Apache 2.2
-           <IfModule mod_authn_file.c>
-               AuthType Basic
-               AuthName "phpMyAdmin Setup"
-               AuthUserFile /etc/phpmyadmin/htpasswd.setup
-           </IfModule>
-           Require valid-user
-       </Files>
-------------------------------------------------------
-
-# restart apache before continuing
-
-/etc/init.d/apache2 restart
- 
-
-4) Install pure-ftpd and quota
-
-apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
-
-# Edit the file /etc/default/pure-ftpd-common to change the start mode from "inetd" to "standalone"
-and set VIRTUALCHROOT=true
-
-vi /etc/default/pure-ftpd-common
-
-# Edit the file /etc/inetd.conf to prevent inetd from trying to start ftp.
-# To do this, comment line starting like "ftp   stream  tcp" by adding "#"-sign in front of the line.
-
-vi /etc/inetd.conf
-
-# Then execute:
-
-/etc/init.d/openbsd-inetd restart
-
-
-# Edit /etc/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point /):
-
-vi /etc/fstab
-
-----------------------------------------------------------------------------------------------
-# /etc/fstab: static file system information.
-#
-# <file system> <mount point>   <type>  <options>       <dump>  <pass>
-proc            /proc           proc    defaults        0       0
-/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1
-/dev/sda5       none            swap    sw              0       0
-/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
-/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
-----------------------------------------------------------------------------------------------
-
-# To enable quota, run these commands:
-
-touch /quota.user /quota.group
-chmod 600 /quota.*
-mount -o remount /
-quotacheck -avugm
-quotaon -avug
-
-
-5) Install mydns
-
-apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
-
-cd /tmp
-wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
-tar xvfz mydns-1.2.8.25.tar.gz
-cd mydns-1.2.8
-./configure
-make
-make install
-
-# Now create the start / stop script for mydns:
-
-vi /etc/init.d/mydns
-
-# and enter the following lines (between the ----- lines):
-
-------------------------------------------------------
-#! /bin/sh
-#
-# mydns         Start the MyDNS server
-#
-# Author:       Philipp Kern <phil@philkern.de>.
-#               Based upon skeleton 1.9.4 by Miquel van Smoorenburg
-#               <miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>.
-#
-
-set -e
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-DAEMON=/usr/local/sbin/mydns
-NAME=mydns
-DESC="DNS server"
-
-SCRIPTNAME=/etc/init.d/$NAME
-
-# Gracefully exit if the package has been removed.
-test -x $DAEMON || exit 0
-
-case "$1" in
-  start)
-        echo -n "Starting $DESC: $NAME"
-        start-stop-daemon --start --quiet \
-                --exec $DAEMON -- -b
-        echo "."
-        ;;
-  stop)
-        echo -n "Stopping $DESC: $NAME"
-        start-stop-daemon --stop --oknodo --quiet \
-                --exec $DAEMON
-        echo "."
-        ;;
-  reload|force-reload)
-        echo -n "Reloading $DESC configuration..."
-        start-stop-daemon --stop --signal HUP --quiet \
-                --exec $DAEMON
-        echo "done."
-        ;;
-  restart)
-        echo -n "Restarting $DESC: $NAME"
-        start-stop-daemon --stop --quiet --oknodo \
-                --exec $DAEMON
-        sleep 1
-        start-stop-daemon --start --quiet \
-                --exec $DAEMON -- -b
-        echo "."
-        ;;
-  *)
-        echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
-        exit 1
-        ;;
-esac
-
-exit 0
----------------------------------------------------------------------------
-
-# now execute:
-
-chmod +x /etc/init.d/mydns
-update-rc.d mydns defaults
-
-6) Install vlogger and webalizer
-
-apt-get install vlogger webalizer
-
-7) Install Jailkit (optional, only needed if you want to use chrroting for SSH users)
-
-apt-get install build-essential autoconf automake1.9 libtool flex bison
-cd /tmp
-wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
-tar xvfz jailkit-2.5.tar.gz
-cd jailkit-2.5
-./configure
-make
-make install
-cd ..
-rm -rf jailkit-2.5*
-
-8) Install fail2ban (optional but recomended, because the monitor tries to show the log)
-More info at: http://www.howtoforge.com/fail2ban_debian_etch
-
-apt-get install fail2ban
-
-9) Install ISPConfig 3
-
-# There are two possile scenarios, but not both:
-9.1) Install the latest released version 
-9.2) Install directly from SVN
-
-9.1) Installation of last version from tar.gz
-
-  cd /tmp
-  wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
-  tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
-  cd ispconfig3_install/install/
-
-9.2) Installation from SVN
-
-  apt-get install subversion
-  cd /tmp
-  svn export svn://svn.ispconfig.org/ispconfig3/trunk/
-  cd trunk/install
-
-
-9.1+9.2) Now proceed with the ISPConfig installation.
-
-# Now start the installation process by executing:
-
-php -q install.php
-
-# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not nescessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
-
-http://192.168.0.100:8080/
-
-# the default login is:
-
-user: admin
-password: admin
-
-# In case you get a permission denied error from apache, please restart the apache webserver process.
-
-
-
-----------------------------------------------------------------------------------------------------------
-Optional:
-
-Install a webbased Email Client
-
-apt-get install squirrelmail
-ln -s /usr/share/squirrelmail/ /var/www/webmail
-
-Access squirrelmail:
-
-http://192.168.0.100/webmail
-
-
-To configure squirrelmail, run:
-
-/usr/sbin/squirrelmail-configure
-
-----------------------------------------------------------------------------------------------------------
-
-Hints:
-
-debian 5.0 under openvz:
-
-VPSID=101
-for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
-do
-  vzctl set $VPSID --capability ${CAP}:on --save
-done
-
-----------------------------------------------------------------------------------------------------------
-
-
-Optional recommended packages:
-
-denyhosts - a utility to help sys admins thwart ssh crackers
-rsync - fast remote file copy program (for backup)
-
------------------------------------------------------------------------------------------------------------
-
-Possible errors and their solutions
-------------------------------------
-
-pureftpd login does not work. Take a look at the syslog, if you find an error message like this:
-Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given
-
-then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands:
-
-echo 'yes' > /etc/pure-ftpd/conf/DontResolve
-/etc/init.d/pure-ftpd-mysql restart
-
-
-
-
-
-
+Installation
+-----------
+
+# It is recommended to use a clean (fresh) Debian lenny install where you just selected "Standard System" as the package selection during
+# setup. Then follow the steps below to setup your server with ISPConfig 3. In this guide "vi" is used as texteditor, but you ofcourse
+# you can use whatever you prefer. You should be root for doing all of this.
+
+
+# Check we have Fully Qualified Domain Name
+
+/bin/hostname
+
+# it should return something like "ispconfig.example.com"
+# if not, then we assign a hostname (for example ispconfig):
+
+echo ispconfig.example.com > /etc/hostname
+
+vi /etc/hosts
+
+# and add lines similar but appropriate:
+
+127.0.0.1       localhost.localdomain   localhost
+192.168.0.100   ispconfig.example.com   ispconfig
+
+
+
+# Some optional choices
+
+opt0.1) Optionally install SSH-server to get remote shell
+
+apt-get install ssh openssh-server
+
+opt0.2) Optionally if you are not running in virtual machine you can set server clocksync via NTP. Virtual quests get this from the host.
+
+apt-get install ntp ntpdate
+
+
+
+# Next is the real deal
+
+1) Install Postfix, Courier, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils with the following command line (on one line!):
+
+apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier-imap courier-imap-ssl libsasl2-2 libsasl2-modules libsasl2-modules-sql sasl2-bin libpam-mysql openssl courier-maildrop getmail4 rkhunter binutils
+
+# Answer the questions from the package manager as follows.
+
+Create directories for web-based administration ? <-- No
+General type of configuration? <-- Internet site
+Mail name? <-- server1.mydomain.tld
+ SSL certificate required <-- Ok
+
+# ...use your own domain name of course ;)
+
+
+
+# Edit the file /etc/mysql/my.cnf
+
+vi /etc/mysql/my.cnf
+
+# and comment out the line
+
+bind-address          = 127.0.0.1
+
+# then restart mysql
+
+/etc/init.d/mysql restart
+
+2) Install Amavisd-new, Spamassassin and Clamav (1 line!):
+
+apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl
+
+
+
+3) Install apache, PHP5, phpmyadmin, better fastCGI, suexec, Pear and mcrypt (1 line!):
+
+apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libapache2-mod-suphp libopenssl-ruby
+
+
+# When phpMyAdmin is asking weather to configure itself automatically, select "Apache2"
+
+# Then run the following to enable the Apache modules suexec, rewrite and ssl:
+
+a2enmod suexec rewrite ssl actions include
+
+# Secure phpMyAdmin by deleting setuppassword-file
+# and removing/commenting Setup Authorization from apache.conf
+
+rm /etc/phpmyadmin/htpasswd.setup
+
+vi /etc/phpmyadmin/apache.conf
+
+# delete/comment following lines (between the ----- lines):
+------------------------------------------------------
+        # Authorize for setup
+       <Files setup.php>
+           # For Apache 1.3 and 2.0
+           <IfModule mod_auth.c>
+               AuthType Basic
+               AuthName "phpMyAdmin Setup"
+               AuthUserFile /etc/phpmyadmin/htpasswd.setup
+           </IfModule>
+           # For Apache 2.2
+           <IfModule mod_authn_file.c>
+               AuthType Basic
+               AuthName "phpMyAdmin Setup"
+               AuthUserFile /etc/phpmyadmin/htpasswd.setup
+           </IfModule>
+           Require valid-user
+       </Files>
+------------------------------------------------------
+
+# restart apache before continuing
+
+/etc/init.d/apache2 restart
+ 
+
+4) Install pure-ftpd and quota
+
+apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool
+
+# Edit the file /etc/default/pure-ftpd-common to change the start mode from "inetd" to "standalone"
+and set VIRTUALCHROOT=true
+
+vi /etc/default/pure-ftpd-common
+
+# Edit the file /etc/inetd.conf to prevent inetd from trying to start ftp.
+# To do this, comment line starting like "ftp   stream  tcp" by adding "#"-sign in front of the line.
+
+vi /etc/inetd.conf
+
+# Then execute:
+
+/etc/init.d/openbsd-inetd restart
+
+# Some additional settings for pureftpd
+
+echo 'yes' > /etc/pure-ftpd/conf/DontResolve
+
+# Enable TLS in pureftpd
+echo 1 > /etc/pure-ftpd/conf/TLS
+mkdir -p /etc/ssl/private/
+openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem  -out /etc/ssl/private/pure-ftpd.pem
+chmod 600 /etc/ssl/private/pure-ftpd.pem 
+
+
+# Edit /etc/fstab. Mine looks like this (I added ,usrquota,grpquota to the partition with the mount point /):
+
+vi /etc/fstab
+
+----------------------------------------------------------------------------------------------
+# /etc/fstab: static file system information.
+#
+# <file system> <mount point>   <type>  <options>       <dump>  <pass>
+proc            /proc           proc    defaults        0       0
+/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1
+/dev/sda5       none            swap    sw              0       0
+/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0
+/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
+----------------------------------------------------------------------------------------------
+
+# To enable quota, run these commands:
+
+touch /quota.user /quota.group
+chmod 600 /quota.*
+mount -o remount /
+quotacheck -avugm
+quotaon -avug
+
+
+5) Install mydns
+
+apt-get install g++ libc6 gcc gawk make texinfo libmysqlclient15-dev
+
+cd /tmp
+wget http://heanet.dl.sourceforge.net/sourceforge/mydns-ng/mydns-1.2.8.25.tar.gz
+tar xvfz mydns-1.2.8.25.tar.gz
+cd mydns-1.2.8
+./configure
+make
+make install
+
+# Now create the start / stop script for mydns:
+
+vi /etc/init.d/mydns
+
+# and enter the following lines (between the ----- lines):
+
+------------------------------------------------------
+#! /bin/sh
+#
+# mydns         Start the MyDNS server
+#
+# Author:       Philipp Kern <phil@philkern.de>.
+#               Based upon skeleton 1.9.4 by Miquel van Smoorenburg
+#               <miquels@cistron.nl> and Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+
+set -e
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/local/sbin/mydns
+NAME=mydns
+DESC="DNS server"
+
+SCRIPTNAME=/etc/init.d/$NAME
+
+# Gracefully exit if the package has been removed.
+test -x $DAEMON || exit 0
+
+case "$1" in
+  start)
+        echo -n "Starting $DESC: $NAME"
+        start-stop-daemon --start --quiet \
+                --exec $DAEMON -- -b
+        echo "."
+        ;;
+  stop)
+        echo -n "Stopping $DESC: $NAME"
+        start-stop-daemon --stop --oknodo --quiet \
+                --exec $DAEMON
+        echo "."
+        ;;
+  reload|force-reload)
+        echo -n "Reloading $DESC configuration..."
+        start-stop-daemon --stop --signal HUP --quiet \
+                --exec $DAEMON
+        echo "done."
+        ;;
+  restart)
+        echo -n "Restarting $DESC: $NAME"
+        start-stop-daemon --stop --quiet --oknodo \
+                --exec $DAEMON
+        sleep 1
+        start-stop-daemon --start --quiet \
+                --exec $DAEMON -- -b
+        echo "."
+        ;;
+  *)
+        echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
+        exit 1
+        ;;
+esac
+
+exit 0
+---------------------------------------------------------------------------
+
+# now execute:
+
+chmod +x /etc/init.d/mydns
+update-rc.d mydns defaults
+
+6) Install vlogger and webalizer
+
+apt-get install vlogger webalizer
+
+Change the following line in /etc/webalizer.conf from
+
+#Incremental    no
+
+to
+
+Incremental    yes 
+
+7) Install Jailkit (optional, only needed if you want to use chrroting for SSH users)
+
+apt-get install build-essential autoconf automake1.9 libtool flex bison
+cd /tmp
+wget http://olivier.sessink.nl/jailkit/jailkit-2.5.tar.gz
+tar xvfz jailkit-2.5.tar.gz
+cd jailkit-2.5
+./configure
+make
+make install
+cd ..
+rm -rf jailkit-2.5*
+
+8) Install fail2ban (optional but recomended, because the monitor tries to show the log)
+More info at: http://www.howtoforge.com/fail2ban_debian_etch
+
+apt-get install fail2ban
+
+9) Install ISPConfig 3
+
+# There are two possile scenarios, but not both:
+9.1) Install the latest released version 
+9.2) Install directly from SVN
+
+9.1) Installation of last version from tar.gz
+
+  cd /tmp
+  wget http://www.ispconfig.org/downloads/ISPConfig-3.0.0.9-rc2.tar.gz
+  tar xvfz ISPConfig-3.0.0.9-rc2.tar.gz
+  cd ispconfig3_install/install/
+
+9.2) Installation from SVN
+
+  apt-get install subversion
+  cd /tmp
+  svn export svn://svn.ispconfig.org/ispconfig3/trunk/
+  cd trunk/install
+
+
+9.1+9.2) Now proceed with the ISPConfig installation.
+
+# Now start the installation process by executing:
+
+php -q install.php
+
+# The installer will configure all services like postfix, sasl, courier, etc. for you. A manual setup as required for ISPConfig 2 (perfect setup guides) is not nescessary. To login to the ISPConfig controlpanel, open the following URL in your browser (replace the IP to match your settings!):
+
+http://192.168.0.100:8080/
+
+# the default login is:
+
+user: admin
+password: admin
+
+# In case you get a permission denied error from apache, please restart the apache webserver process.
+
+
+
+----------------------------------------------------------------------------------------------------------
+Optional:
+
+Install a webbased Email Client
+
+apt-get install squirrelmail
+ln -s /usr/share/squirrelmail/ /var/www/webmail
+
+Access squirrelmail:
+
+http://192.168.0.100/webmail
+
+
+To configure squirrelmail, run:
+
+/usr/sbin/squirrelmail-configure
+
+----------------------------------------------------------------------------------------------------------
+
+Hints:
+
+debian 5.0 under openvz:
+
+VPSID=101
+for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
+do
+  vzctl set $VPSID --capability ${CAP}:on --save
+done
+
+----------------------------------------------------------------------------------------------------------
+
+
+Optional recommended packages:
+
+denyhosts - a utility to help sys admins thwart ssh crackers
+rsync - fast remote file copy program (for backup)
+
+-----------------------------------------------------------------------------------------------------------
+
+Possible errors and their solutions
+------------------------------------
+
+pureftpd login does not work. Take a look at the syslog, if you find an error message like this:
+Mar 24 16:26:28 ispconfig pure-ftpd: (?@?) [ERROR] Sorry, invalid address given
+
+then pureftpd is not able to resolve the hostname. Name resolving can be disabled with these commands:
+
+echo 'yes' > /etc/pure-ftpd/conf/DontResolve
+/etc/init.d/pure-ftpd-mysql restart
+
+
+
+
+
+
diff --git a/install/dist/conf/centos53.conf.php b/install/dist/conf/centos53.conf.php
new file mode 100644
index 0000000..d0f35f5
--- /dev/null
+++ b/install/dist/conf/centos53.conf.php
@@ -0,0 +1,152 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+//***  Fedora 9 default settings
+
+//* Main
+$conf['language'] = 'en';
+$conf['distname'] = 'centos52';
+$conf['hostname'] = 'server1.domain.tld'; // Full hostname
+$conf['ispconfig_install_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_config_dir'] = '/usr/local/ispconfig';
+$conf['ispconfig_log_priority'] = 2;  // 0 = Debug, 1 = Warning, 2 = Error
+$conf['server_id'] = 1;
+$conf['init_scripts'] = '/etc/init.d';
+$conf['runlevel'] = '/etc';
+$conf['shells'] = '/etc/shells';
+$conf['cron_tab'] = '/var/spool/cron/root';
+$conf['pam'] = '/etc/pam.d';
+
+//* Services provided by this server, this selection will be overridden by the expert mode
+$conf['services']['mail'] = true;
+$conf['services']['web'] = true;
+$conf['services']['dns'] = true;
+$conf['services']['file'] = true;
+$conf['services']['db'] = true;
+$conf['services']['vserver'] = true;
+
+//* MySQL
+$conf['mysql']['installed'] = false; // will be detected automatically during installation
+$conf['mysql']['init_script'] = 'mysqld';
+$conf['mysql']['host'] = 'localhost';
+$conf['mysql']['ip'] = '127.0.0.1';
+$conf['mysql']['port'] = '3306';
+$conf['mysql']['database'] = 'dbispconfig';
+$conf['mysql']['admin_user'] = 'root';
+$conf['mysql']['admin_password'] = '';
+$conf['mysql']['charset'] = 'utf8';
+$conf['mysql']['ispconfig_user'] = 'ispconfig';
+$conf['mysql']['ispconfig_password'] = md5 (uniqid (rand()));
+$conf['mysql']['master_slave_setup'] = 'n';
+$conf['mysql']['master_host'] = '';
+$conf['mysql']['master_database'] = 'dbispconfig';
+$conf['mysql']['master_admin_user'] = 'root';
+$conf['mysql']['master_admin_password'] = '';
+$conf['mysql']['master_ispconfig_user'] = '';
+$conf['mysql']['master_ispconfig_password'] = md5 (uniqid (rand()));
+
+//* Apache
+$conf['apache']['installed'] = false; // will be detected automatically during installation
+$conf['apache']['user'] = 'apache';
+$conf['apache']['group'] = 'apache';
+$conf['apache']['init_script'] = 'httpd';
+$conf['apache']['version'] = '2.2';
+$conf['apache']['vhost_conf_dir'] = '/etc/httpd/conf/sites-available';
+$conf['apache']['vhost_conf_enabled_dir'] = '/etc/httpd/conf/sites-enabled';
+$conf['apache']['vhost_port'] = '8080';
+
+//* Website base settings
+$conf['web']['website_basedir'] = '/var/www';
+$conf['web']['website_path'] = '/var/www/clients/client[client_id]/web[website_id]';
+$conf['web']['website_symlinks'] = '/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/';
+
+//* Fastcgi
+$conf['fastcgi']['fastcgi_phpini_path'] = '/etc/';
+$conf['fastcgi']['fastcgi_starter_path'] = '/var/www/php-fcgi-scripts/[system_user]/';
+
+//* Postfix
+$conf['postfix']['installed'] = false; // will be detected automatically during installation
+$conf['postfix']['config_dir'] = '/etc/postfix';
+$conf['postfix']['init_script'] = 'postfix';
+$conf['postfix']['user'] = 'postfix';
+$conf['postfix']['group'] = 'postfix';
+$conf['postfix']['vmail_userid'] = '5000';
+$conf['postfix']['vmail_username'] = 'vmail';
+$conf['postfix']['vmail_groupid'] = '5000';
+$conf['postfix']['vmail_groupname'] = 'vmail';
+$conf['postfix']['vmail_mailbox_base'] = '/var/vmail';
+
+//* Getmail
+$conf['getmail']['installed'] = false; // will be detected automatically during installation
+$conf['getmail']['config_dir'] = '/etc/getmail';
+$conf['getmail']['program'] = '/usr/bin/getmail';
+
+//* Courier
+$conf['courier']['installed'] = false; // will be detected automatically during installation
+$conf['courier']['config_dir'] = '/etc/authlib';
+$conf['courier']['courier-authdaemon'] = 'courier-authlib';
+$conf['courier']['courier-imap'] = 'courier-imap';
+$conf['courier']['courier-imap-ssl'] = '';
+$conf['courier']['courier-pop'] = '';
+$conf['courier']['courier-pop-ssl'] = '';
+
+//* SASL
+$conf['saslauthd']['installed'] = false; // will be detected automatically during installation
+$conf['saslauthd']['config'] = '/etc/sysconfig/saslauthd';
+$conf['saslauthd']['init_script'] = 'saslauthd';
+
+//* Amavisd
+$conf['amavis']['installed'] = false; // will be detected automatically during installation
+$conf['amavis']['config_dir'] = '/etc';
+$conf['amavis']['init_script'] = 'amavisd';
+
+//* ClamAV
+$conf['clamav']['installed'] = false; // will be detected automatically during installation
+$conf['clamav']['init_script'] = 'clamd';
+
+//* Pureftpd
+$conf['pureftpd']['installed'] = false; // will be detected automatically during installation
+$conf['pureftpd']['config_dir'] = '/etc/pure-ftpd';
+$conf['pureftpd']['init_script'] = 'pure-ftpd';
+
+//* MyDNS
+$conf['mydns']['installed'] = false; // will be detected automatically during installation
+$conf['mydns']['config_dir'] = '/etc';
+$conf['mydns']['init_script'] = 'mydns';
+
+//* Jailkit
+$conf['jailkit']['installed'] = false; // will be detected automatically during installation
+$conf['jailkit']['config_dir'] = '/etc/jailkit';
+$conf['jailkit']['jk_init'] = 'jk_init.ini';
+$conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini';
+$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /bin/basename /usr/bin/dirname /usr/bin/nano';
+
+
+?>
\ No newline at end of file
diff --git a/install/dist/lib/centos53.lib.php b/install/dist/lib/centos53.lib.php
new file mode 100644
index 0000000..17293fc
--- /dev/null
+++ b/install/dist/lib/centos53.lib.php
@@ -0,0 +1,86 @@
+<?php
+
+/*
+Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+class installer extends installer_dist {
+
+	public function configure_amavis() {
+		global $conf;
+		
+		// amavisd user config file
+		$configfile = 'fedora_amavisd_conf';
+		if(is_file($conf["amavis"]["config_dir"].'/amavisd.conf')) copy($conf["amavis"]["config_dir"].'/amavisd.conf',$conf["courier"]["config_dir"].'/amavisd.conf~');
+		if(is_file($conf["amavis"]["config_dir"].'/amavisd.conf~')) exec('chmod 400 '.$conf["amavis"]["config_dir"].'/amavisd.conf~');
+		$content = rf("tpl/".$configfile.".master");
+		$content = str_replace('{mysql_server_ispconfig_user}',$conf['mysql']['ispconfig_user'],$content);
+		$content = str_replace('{mysql_server_ispconfig_password}',$conf['mysql']['ispconfig_password'], $content);
+		$content = str_replace('{mysql_server_database}',$conf['mysql']['database'],$content);
+		$content = str_replace('{mysql_server_port}',$conf["mysql"]["port"],$content);
+		$content = str_replace('{mysql_server_ip}',$conf['mysql']['ip'],$content);
+		$content = str_replace('{hostname}',$conf['hostname'],$content);
+		$content = str_replace('/var/spool/amavisd/clamd.sock','/var/run/clamav/clamd.sock',$content);
+		wf($conf["amavis"]["config_dir"].'/amavisd.conf',$content);
+		
+		
+		// Adding the amavisd commands to the postfix configuration
+		$postconf_commands = array (
+			'content_filter = amavis:[127.0.0.1]:10024',
+			'receive_override_options = no_address_mappings'
+		);
+		
+		// Make a backup copy of the main.cf file
+		copy($conf["postfix"]["config_dir"].'/main.cf',$conf["postfix"]["config_dir"].'/main.cf~2');
+		
+		// Executing the postconf commands
+		foreach($postconf_commands as $cmd) {
+			$command = "postconf -e '$cmd'";
+			caselog($command." &> /dev/null", __FILE__, __LINE__, "EXECUTED: $command", "Failed to execute the command $command");
+		}
+		
+		// Append the configuration for amavisd to the master.cf file
+		if(is_file($conf["postfix"]["config_dir"].'/master.cf')) copy($conf["postfix"]["config_dir"].'/master.cf',$conf["postfix"]["config_dir"].'/master.cf~');
+		$content = rf($conf["postfix"]["config_dir"].'/master.cf');
+		// Only add the content if we had not addded it before
+		if(!stristr($content,"127.0.0.1:10025")) {
+			unset($content);
+			$content = rf("tpl/master_cf_amavis.master");
+			af($conf["postfix"]["config_dir"].'/master.cf',$content);
+		}
+		unset($content);
+		
+		removeLine('/etc/sysconfig/freshclam','FRESHCLAM_DELAY=disabled-warn   # REMOVE ME',1);
+		replaceLine('/etc/freshclam.conf','Example','# Example',1);
+		
+		
+	}
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 52a50a2..ede93e3 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -208,6 +208,8 @@
 		$configfile = 'tpl/fedora_saslauthd_smtpd_conf.master';
 		$content = rf($configfile);
 		wf('/usr/lib/sasl2/smtpd.conf',$content);
+		if(is_dir('/usr/lib64')) wf('/usr/lib64/sasl/smtpd.conf',$content);
+		if(is_dir('/usr/lib64')) wf('/usr/lib64/sasl2/smtpd.conf',$content);
 		
 	}
 	
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index a2fe5a6..9479c9a 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -599,6 +599,8 @@
 		
 		$content = str_replace('{server_id}', $conf['server_id'], $content);
 		$content = str_replace('{ispconfig_log_priority}', $conf['ispconfig_log_priority'], $content);
+		$content = str_replace('{language}', $conf['language'], $content);
+		
 		wf("$install_dir/server/lib/$configfile", $content);
 		
 		
diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php
index e51d643..93e1cc6 100644
--- a/install/lib/install.lib.php
+++ b/install/lib/install.lib.php
@@ -149,7 +149,7 @@
 		} elseif(stristr($content,'CentOS release 5.3 (Final)')) {
 			$distname = 'CentOS';
 			$distver = '5.3';
-			$distid = 'centos52';
+			$distid = 'centos53';
 			$distbaseid = 'fedora';
 			swriteln("Operating System: CentOS 5.3 or compatible\n");
 		} else {
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 42f349a..e6f9dc8 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1148,7 +1148,7 @@
 -- Dumping data for table `sys_config`
 --
 
-INSERT INTO sys_config VALUES ('1','db','db_version','3.0.1.2');
+INSERT INTO sys_config VALUES ('1','db','db_version','3.0.1.3');
 
 -- --------------------------------------------------------
 
diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master
index 0ed8765..9ba9799 100644
--- a/install/tpl/config.inc.php.master
+++ b/install/tpl/config.inc.php.master
@@ -57,7 +57,7 @@
 
 //** Application
 define('ISPC_APP_TITLE', 'ISPConfig');
-define('ISPC_APP_VERSION', '3.0.1.2');
+define('ISPC_APP_VERSION', '3.0.1.3');
 
 
 //** Database
diff --git a/install/update.php b/install/update.php
index ca74da8..b309509 100644
--- a/install/update.php
+++ b/install/update.php
@@ -89,6 +89,7 @@
 $conf["mysql"]["ispconfig_user"] = $conf_old["db_user"];
 $conf["mysql"]["ispconfig_password"] = $conf_old["db_password"];
 $conf['language'] = $conf_old['language'];
+if($conf['language'] == '{language}') $conf['language'] = 'en';
 
 if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
 if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index f1ecdbc..6dcb171 100644
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -1,7 +1,7 @@
 <?php
 
 /*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+Copyright (c) 2007 - 2009, Till Brehm, projektfarm Gmbh
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -147,19 +147,21 @@
 		}
 	}
 
-    /** Loads language */
+    /** Translates strings in current language */
     public function lng($text)
     {
 		if($this->_language_inc != 1) {
 			//* loading global and module Wordbook
             // TODO: this need to be made clearer somehow - pedro
-			@include_once(ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng');
+			//@include_once(ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng');
+			$this->load_language_file('/lib/lang/'.$_SESSION['s']['language'].'.lng');
 			if(isset($_SESSION['s']['module']['name']) && isset($_SESSION['s']['language'])) {
-				$lng_file = ISPC_ROOT_PATH.'/web/'.$_SESSION['s']['module']['name'].'/lib/lang/'.$_SESSION['s']['language'].'.lng';
-				if(!file_exists($lng_file)) $lng_file = ISPC_ROOT_PATH.'/web/'.$_SESSION['s']['module']['name'].'/lib/lang/en.lng';
-				@include_once($lng_file);
+				$lng_file = '/web/'.$_SESSION['s']['module']['name'].'/lib/lang/'.$_SESSION['s']['language'].'.lng';
+				if(!file_exists($lng_file)) $lng_file = '/web/'.$_SESSION['s']['module']['name'].'/lib/lang/en.lng';
+				//@include_once($lng_file);
+				$this->load_language_file($lng_file);
 			}
-			if(isset($wb)) $this->_wb = $wb;
+			//if(isset($wb)) $this->_wb = $wb;
 			$this->_language_inc = 1;
 		}		
 		if(!empty($this->_wb[$text])) {
@@ -167,6 +169,22 @@
 		}
 		return $text;
 	}
+	
+	//** Helper function to load the language files.
+	public function load_language_file($filename) {
+		$filename = ISPC_ROOT_PATH.'/'.$filename;
+		if(substr($filename,-4) != '.lng') $this->error('Language file has wrong extension.');
+		if(file_exists($filename)) {
+			@include_once($filename);
+			if(is_array($wb)) {
+				if(is_array($this->_wb)) {
+					$this->_wb = array_merge($wb,$this->_wb);
+				} else {
+					$this->_wb = $wb;
+				}
+			}
+		}
+	}
 
     public function tpl_defaults()
     {	
diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
index 64a5736..e01c207 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -39,6 +39,7 @@
 $app->uses('tpl,validate_dns');
 $app->tpl->newTemplate("form.tpl.htm");
 $app->tpl->setInclude('content_tpl','templates/dns_wizard.htm');
+$app->load_language_file('/web/dns/lib/lang/'.$_SESSION['s']['language'].'_dns_wizard.lng');
 
 // import variables
 $template_id = (isset($_POST['template_id']))?intval($_POST['template_id']):0;
@@ -109,11 +110,11 @@
 	
 	$error = '';
 	
-	if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty');
-	if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty');
-	if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty');
-	if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty');
-	if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty');
+	if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty').'<br />';
+	if(isset($_POST['ip']) && $_POST['ip'] == '') $error .= $app->lng('error_ip_empty').'<br />';
+	if(isset($_POST['ns1']) && $_POST['ns1'] == '') $error .= $app->lng('error_ns1_empty').'<br />';
+	if(isset($_POST['ns2']) && $_POST['ns2'] == '') $error .= $app->lng('error_ns2_empty').'<br />';
+	if(isset($_POST['email']) && $_POST['email'] == '') $error .= $app->lng('error_email_empty').'<br />';
 	
 	
 	// replace template placeholders
@@ -164,14 +165,14 @@
 		
 	} // end foreach
 	
-	if($vars['origin'] == '') $error .= $app->lng('error_origin_empty');
-	if($vars['ns'] == '') $error .= $app->lng('error_ns_empty');
-	if($vars['mbox'] == '') $error .= $app->lng('error_mbox_empty');
-	if($vars['refresh'] == '') $error .= $app->lng('error_refresh_empty');
-	if($vars['retry'] == '') $error .= $app->lng('error_retry_empty');
-	if($vars['expire'] == '') $error .= $app->lng('error_expire_empty');
-	if($vars['minimum'] == '') $error .= $app->lng('error_minimum_empty');
-	if($vars['ttl'] == '') $error .= $app->lng('error_ttl_empty');
+	if($vars['origin'] == '') $error .= $app->lng('error_origin_empty').'<br />';
+	if($vars['ns'] == '') $error .= $app->lng('error_ns_empty').'<br />';
+	if($vars['mbox'] == '') $error .= $app->lng('error_mbox_empty').'<br />';
+	if($vars['refresh'] == '') $error .= $app->lng('error_refresh_empty').'<br />';
+	if($vars['retry'] == '') $error .= $app->lng('error_retry_empty').'<br />';
+	if($vars['expire'] == '') $error .= $app->lng('error_expire_empty').'<br />';
+	if($vars['minimum'] == '') $error .= $app->lng('error_minimum_empty').'<br />';
+	if($vars['ttl'] == '') $error .= $app->lng('error_ttl_empty').'<br />';
 	
 	if($error == '') {
 		// Insert the soa record
diff --git a/interface/web/dns/lib/lang/en_dns_wizard.lng b/interface/web/dns/lib/lang/en_dns_wizard.lng
index 251f850..e8351cb 100644
--- a/interface/web/dns/lib/lang/en_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/en_dns_wizard.lng
@@ -10,7 +10,18 @@
 $wb['ns1_txt'] = 'NS 1';
 $wb['ns2_txt'] = 'NS 2';
 $wb['ip_txt'] = 'IP Address';
-
 $wb['error_origin_empty'] = 'Origin empty.';
+$wb['error_ns_empty'] = 'NS empty.';
+$wb['error_mbox_empty'] = 'Mbox empty.';
+$wb['error_refresh_empty'] = 'Refresh empty.';
+$wb['error_retry_empty'] = 'Retry empty.';
+$wb['error_expire_empty'] = 'Expire empty.';
+$wb['error_minimum_empty'] = 'Minimum empty.';
+$wb['error_ttl_empty'] = 'TTL empty.';
+$wb['error_domain_empty'] = 'Domain empty';
+$wb['error_ip_empty'] = 'IP empty.';
+$wb['error_ns1_empty'] = 'NS1 empty.';
+$wb['error_ns2_empty'] = 'NS2 empty.';
+$wb['error_email_empty'] = 'EMail empty.';
 
 ?>
\ No newline at end of file
diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm
index 5433aa0..4f926ba 100644
--- a/interface/web/dns/templates/dns_wizard.htm
+++ b/interface/web/dns/templates/dns_wizard.htm
@@ -1,68 +1,72 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_dns_wizard">
-
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels"><legend>DNS Zone</legend>
-      <div class="ctrlHolder">
-      	<label for="template_id">{tmpl_var name='template_id_txt'}</label>
-        <select name="template_id" id="template_id" class="selectInput" onChange="submitForm('pageForm','dns/dns_wizard.php')">
-					{tmpl_var name='template_id_option'}
-				</select>
-      </div>
-      <tmpl_if name="is_admin">
-      <div class="ctrlHolder">
-      	<label for="server_id">{tmpl_var name='server_id_txt'}</label>
-        <select name="server_id" id="server_id" class="selectInput">
-					{tmpl_var name='server_id'}
-				</select>
-      </div>
-      <div class="ctrlHolder">
-      	<label for="client_group_id">{tmpl_var name='client_txt'}</label>
-        <select name="client_group_id" id="client_group_id" class="selectInput">
-					{tmpl_var name='client_group_id'}
-				</select>
-      </div>
-      </tmpl_if>
-		  <tmpl_if name="DOMAIN_VISIBLE">
-	      <div class="ctrlHolder">
-	      	<label for="domain">{tmpl_var name='domain_txt'}</label>
-	        <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
-				</div>
-		  </tmpl_if>
-		  <tmpl_if name="IP_VISIBLE">
-	      <div class="ctrlHolder">
-	      	<label for="ip">{tmpl_var name='ip_txt'}</label>
-	        <input name="ip" id="ip" value="{tmpl_var name='ip'}" size="30" maxlength="255" type="text" class="textInput" />
-				</div>
-		  </tmpl_if>
-		  <tmpl_if name="NS1_VISIBLE">
-	      <div class="ctrlHolder">
-	      	<label for="ns1">{tmpl_var name='ns1_txt'}</label>
-	        <input name="ns1" id="ns1" value="{tmpl_var name='ns1'}" size="30" maxlength="255" type="text" class="textInput" />
-				</div>
-		  </tmpl_if>
-		  <tmpl_if name="NS2_VISIBLE">
-	      <div class="ctrlHolder">
-	      	<label for="ns2">{tmpl_var name='ns2_txt'}</label>
-	        <input name="ns2" id="ns2" value="{tmpl_var name='ns2'}" size="30" maxlength="255" type="text" class="textInput" />
-				</div>
-		  </tmpl_if>
-		  <tmpl_if name="EMAIL_VISIBLE">
-	      <div class="ctrlHolder">
-	      	<label for="email">{tmpl_var name='email_txt'}</label>
-	        <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
-				</div>
-		  </tmpl_if>
-    </fieldset>
-
-	  <input type="hidden" name="create" value="0" />
-    
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" name="btn_create" onClick="document.pageForm.create.value=1; submitForm('pageForm','dns/dns_wizard.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_wizard.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-    </div>
-  </div>
-  
-</div>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<tmpl_if name="error">
+	<div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
+</tmpl_if>
+
+<div class="panel panel_dns_wizard">
+
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>DNS Zone</legend>
+      <div class="ctrlHolder">
+      	<label for="template_id">{tmpl_var name='template_id_txt'}</label>
+        <select name="template_id" id="template_id" class="selectInput" onChange="submitForm('pageForm','dns/dns_wizard.php')">
+					{tmpl_var name='template_id_option'}
+				</select>
+      </div>
+      <tmpl_if name="is_admin">
+      <div class="ctrlHolder">
+      	<label for="server_id">{tmpl_var name='server_id_txt'}</label>
+        <select name="server_id" id="server_id" class="selectInput">
+					{tmpl_var name='server_id'}
+				</select>
+      </div>
+      <div class="ctrlHolder">
+      	<label for="client_group_id">{tmpl_var name='client_txt'}</label>
+        <select name="client_group_id" id="client_group_id" class="selectInput">
+					{tmpl_var name='client_group_id'}
+				</select>
+      </div>
+      </tmpl_if>
+		  <tmpl_if name="DOMAIN_VISIBLE">
+	      <div class="ctrlHolder">
+	      	<label for="domain">{tmpl_var name='domain_txt'}</label>
+	        <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
+				</div>
+		  </tmpl_if>
+		  <tmpl_if name="IP_VISIBLE">
+	      <div class="ctrlHolder">
+	      	<label for="ip">{tmpl_var name='ip_txt'}</label>
+	        <input name="ip" id="ip" value="{tmpl_var name='ip'}" size="30" maxlength="255" type="text" class="textInput" />
+				</div>
+		  </tmpl_if>
+		  <tmpl_if name="NS1_VISIBLE">
+	      <div class="ctrlHolder">
+	      	<label for="ns1">{tmpl_var name='ns1_txt'}</label>
+	        <input name="ns1" id="ns1" value="{tmpl_var name='ns1'}" size="30" maxlength="255" type="text" class="textInput" />
+				</div>
+		  </tmpl_if>
+		  <tmpl_if name="NS2_VISIBLE">
+	      <div class="ctrlHolder">
+	      	<label for="ns2">{tmpl_var name='ns2_txt'}</label>
+	        <input name="ns2" id="ns2" value="{tmpl_var name='ns2'}" size="30" maxlength="255" type="text" class="textInput" />
+				</div>
+		  </tmpl_if>
+		  <tmpl_if name="EMAIL_VISIBLE">
+	      <div class="ctrlHolder">
+	      	<label for="email">{tmpl_var name='email_txt'}</label>
+	        <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+				</div>
+		  </tmpl_if>
+    </fieldset>
+
+	  <input type="hidden" name="create" value="0" />
+    
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" name="btn_create" onClick="document.pageForm.create.value=1; submitForm('pageForm','dns/dns_wizard.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('dns/dns_wizard.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+  
+</div>
diff --git a/interface/web/mail/lib/lang/en_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/en_spamfilter_blacklist.lng
index 877e38a..6478b1f 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_blacklist.lng
@@ -5,4 +5,5 @@
 $wb["email_txt"] = 'Email';
 $wb["priority_txt"] = 'Priority';
 $wb["active_txt"] = 'Active';
+$wb["limit_spamfilter_wblist_txt"] = 'The max. number of White- or Blacklist records for your account is reached.';
 ?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/en_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/en_spamfilter_whitelist.lng
index 877e38a..6478b1f 100644
--- a/interface/web/mail/lib/lang/en_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/en_spamfilter_whitelist.lng
@@ -5,4 +5,5 @@
 $wb["email_txt"] = 'Email';
 $wb["priority_txt"] = 'Priority';
 $wb["active_txt"] = 'Active';
+$wb["limit_spamfilter_wblist_txt"] = 'The max. number of White- or Blacklist records for your account is reached.';
 ?>
\ No newline at end of file
diff --git a/interface/web/mail/spamfilter_blacklist_edit.php b/interface/web/mail/spamfilter_blacklist_edit.php
index 141e6a7..a75af75 100644
--- a/interface/web/mail/spamfilter_blacklist_edit.php
+++ b/interface/web/mail/spamfilter_blacklist_edit.php
@@ -63,7 +63,7 @@
 			if($client["limit_spamfilter_wblist"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(wblist_id) as number FROM spamfilter_wblist WHERE sys_groupid = $client_group_id");
 				if($tmp["number"] >= $client["limit_spamfilter_wblist"]) {
-					$app->error($app->tform->wordbook["limit_spamfilter_wblist_txt"]);
+					$app->error($app->tform->lng("limit_spamfilter_wblist_txt"));
 				}
 			}
 		}
diff --git a/interface/web/mail/spamfilter_whitelist_edit.php b/interface/web/mail/spamfilter_whitelist_edit.php
index bf1db41..b6762af 100644
--- a/interface/web/mail/spamfilter_whitelist_edit.php
+++ b/interface/web/mail/spamfilter_whitelist_edit.php
@@ -63,7 +63,7 @@
 			if($client["limit_spamfilter_wblist"] >= 0) {
 				$tmp = $app->db->queryOneRecord("SELECT count(wblist_id) as number FROM spamfilter_wblist WHERE sys_groupid = $client_group_id");
 				if($tmp["number"] >= $client["limit_spamfilter_wblist"]) {
-					$app->error($app->tform->wordbook["limit_spamfilter_wblist_txt"]);
+					$app->error($app->tform->lng("limit_spamfilter_wblist_txt"));
 				}
 			}
 		}
diff --git a/server/scripts/update_from_tgz.sh b/server/scripts/update_from_tgz.sh
index 09db417..424a390 100644
--- a/server/scripts/update_from_tgz.sh
+++ b/server/scripts/update_from_tgz.sh
@@ -1,8 +1,15 @@
 #!/bin/bash
 
 cd /tmp
+
+if [ -f ISPConfig-3-stable.tar.gz ]
+then
+rm -f ISPConfig-3-stable.tar.gz
+fi
+
 wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
 tar xvfz ISPConfig-3-stable.tar.gz
 cd ispconfig3_install/install/
 php -q update.php
-rm -rf /tmp/ispconfig3_install/install
\ No newline at end of file
+rm -rf /tmp/ispconfig3_install/install
+rm -f ISPConfig-3-stable.tar.gz
\ No newline at end of file

--
Gitblit v1.9.1