summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMischa Peters <mpeters@high5.nl>2015-08-18 15:38:31 +0200
committerMischa Peters <mpeters@high5.nl>2015-08-18 15:38:31 +0200
commit5495f1b071e0ac62a7d72b00440498f02a6d07e2 (patch)
treecc358a519e50d1e4fe09a043c01af3512deb6cae
Last release created by Mischa
-rw-r--r--ADDITIONS/README.TXT39
-rw-r--r--ADDITIONS/cleanupdirs.pl103
-rw-r--r--ADDITIONS/mailbox_remover.pl66
-rw-r--r--ADDITIONS/mkeveryone.pl167
-rw-r--r--ADDITIONS/pfa_maildir_cleanup.pl111
-rw-r--r--ADDITIONS/postfixadmin-0.3-1.4.tar.gzbin0 -> 11032 bytes
-rw-r--r--ADDITIONS/virtualmaildel.php185
-rw-r--r--BACKUP_MX.TXT49
-rw-r--r--CHANGELOG.TXT240
-rw-r--r--DATABASE_MYSQL.TXT139
-rw-r--r--DATABASE_PGSQL.TXT142
-rw-r--r--INSTALL.TXT87
-rw-r--r--LANGUAGE.TXT46
-rw-r--r--LICENSE.TXT118
-rw-r--r--README.md1
-rw-r--r--TABLE_BACKUP_MX.TXT19
-rw-r--r--TABLE_CHANGES.TXT104
-rw-r--r--UPGRADE.TXT79
-rw-r--r--VIRTUAL_VACATION/FILTER_README512
-rw-r--r--VIRTUAL_VACATION/INSTALL.TXT147
-rw-r--r--VIRTUAL_VACATION/index.php22
-rwxr-xr-xVIRTUAL_VACATION/mail-filter17
-rwxr-xr-xVIRTUAL_VACATION/vacation.pl219
-rw-r--r--admin/.htaccess8
-rw-r--r--admin/.htpasswd1
-rw-r--r--admin/backup.php88
-rw-r--r--admin/create-admin.php106
-rw-r--r--admin/create-alias.php122
-rw-r--r--admin/create-domain.php115
-rw-r--r--admin/create-mailbox.php239
-rw-r--r--admin/delete.php130
-rw-r--r--admin/edit-active-admin.php55
-rw-r--r--admin/edit-active-domain.php55
-rw-r--r--admin/edit-active.php61
-rw-r--r--admin/edit-admin.php121
-rw-r--r--admin/edit-alias.php105
-rw-r--r--admin/edit-domain.php93
-rw-r--r--admin/edit-mailbox.php141
-rw-r--r--admin/index.php22
-rw-r--r--admin/list-admin.php49
-rw-r--r--admin/list-domain.php76
-rw-r--r--admin/list-virtual.php157
-rw-r--r--admin/search.php104
-rw-r--r--admin/viewlog.php66
-rw-r--r--config.inc.php.sample145
-rw-r--r--create-alias.php132
-rw-r--r--create-mailbox.php249
-rw-r--r--delete.php88
-rw-r--r--edit-active.php71
-rw-r--r--edit-alias.php117
-rw-r--r--edit-mailbox.php155
-rw-r--r--functions.inc.php1049
-rw-r--r--images/arrow-l.pngbin0 -> 363 bytes
-rw-r--r--images/arrow-r.pngbin0 -> 407 bytes
-rw-r--r--images/arrow-u.pngbin0 -> 365 bytes
-rw-r--r--images/index.php17
-rw-r--r--images/postbox.pngbin0 -> 4361 bytes
-rw-r--r--images/postfixadmin.pngbin0 -> 6052 bytes
-rw-r--r--images/postfixadmin2.pngbin0 -> 1949 bytes
-rw-r--r--images/postfixadmin2.xcfbin0 -> 4764 bytes
-rw-r--r--index.php55
-rw-r--r--languages/bg.lang295
-rw-r--r--languages/ca.lang295
-rw-r--r--languages/cn.lang296
-rw-r--r--languages/cs.lang295
-rw-r--r--languages/da.lang295
-rw-r--r--languages/de.lang296
-rw-r--r--languages/en.lang295
-rw-r--r--languages/es.lang295
-rw-r--r--languages/et.lang298
-rw-r--r--languages/eu.lang294
-rw-r--r--languages/fi.lang294
-rw-r--r--languages/fo.lang300
-rw-r--r--languages/fr.lang295
-rw-r--r--languages/hu.lang298
-rw-r--r--languages/index.php22
-rw-r--r--languages/is.lang294
-rw-r--r--languages/it.lang295
-rw-r--r--languages/mk.lang298
-rw-r--r--languages/nl.lang295
-rw-r--r--languages/nn.lang295
-rw-r--r--languages/pl.lang297
-rw-r--r--languages/pt-br.lang295
-rw-r--r--languages/ru.lang295
-rw-r--r--languages/sl.lang297
-rw-r--r--languages/sv.lang296
-rw-r--r--languages/tr.lang295
-rw-r--r--languages/tw.lang295
-rw-r--r--login.php73
-rw-r--r--logout.php30
-rw-r--r--main.php41
-rw-r--r--motd-admin.txt23
-rw-r--r--motd-users.txt7
-rw-r--r--motd.txt7
-rw-r--r--overview.php172
-rw-r--r--password.php89
-rw-r--r--search.php118
-rw-r--r--sendmail.php87
-rw-r--r--setup.php220
-rw-r--r--stylesheet.css236
-rw-r--r--templates/admin_create-admin.tpl51
-rw-r--r--templates/admin_create-domain.tpl62
-rw-r--r--templates/admin_edit-admin.tpl53
-rw-r--r--templates/admin_edit-domain.tpl60
-rw-r--r--templates/admin_list-admin.tpl31
-rw-r--r--templates/admin_list-domain.tpl69
-rw-r--r--templates/admin_list-virtual.tpl107
-rw-r--r--templates/admin_menu.tpl24
-rw-r--r--templates/admin_search.tpl72
-rw-r--r--templates/create-alias.tpl44
-rw-r--r--templates/create-mailbox.tpl69
-rw-r--r--templates/edit-alias.tpl36
-rw-r--r--templates/edit-mailbox.tpl47
-rw-r--r--templates/footer.tpl15
-rw-r--r--templates/footer.tpl.orig3
-rw-r--r--templates/header.tpl38
-rw-r--r--templates/index.php22
-rw-r--r--templates/login.tpl26
-rw-r--r--templates/main.tpl32
-rw-r--r--templates/menu.tpl22
-rw-r--r--templates/menu.tpl.orig24
-rw-r--r--templates/message.tpl1
-rw-r--r--templates/overview-get.tpl59
-rw-r--r--templates/overview.tpl139
-rw-r--r--templates/password.tpl35
-rw-r--r--templates/search.tpl72
-rw-r--r--templates/sendmail.tpl37
-rw-r--r--templates/users_edit-alias.tpl43
-rw-r--r--templates/users_login.tpl23
-rw-r--r--templates/users_main.tpl26
-rw-r--r--templates/users_menu.tpl19
-rw-r--r--templates/users_password.tpl35
-rw-r--r--templates/users_vacation-get.tpl9
-rw-r--r--templates/users_vacation.tpl29
-rw-r--r--templates/viewlog.tpl58
-rw-r--r--users/edit-alias.php114
-rw-r--r--users/index.php22
-rw-r--r--users/login.php73
-rw-r--r--users/logout.php30
-rw-r--r--users/main.php41
-rw-r--r--users/password.php92
-rw-r--r--users/vacation.php137
-rw-r--r--variables.inc.php89
-rw-r--r--viewlog.php84
144 files changed, 17591 insertions, 0 deletions
diff --git a/ADDITIONS/README.TXT b/ADDITIONS/README.TXT
new file mode 100644
index 0000000..d3f4c94
--- /dev/null
+++ b/ADDITIONS/README.TXT
@@ -0,0 +1,39 @@
+#
+# Postfix Admin ADDITIONS
+#
+
+BEFORE YOU START
+----------------
+
+**** ALL THESE SCRIPTS ARE CREATED BY THIRD PARTIES ****
+ **** THEY ARE AS IS, USE AT YOUR OWN RISK! ****
+
+ADDITIONS
+---------
+
+In this directory you will find additional scripts that are build by others.
+
+- cleanupdirs.pl
+by jared bell <jared at beol dot net>
+Displays a list of mailboxes that need to be deleted
+
+- mailbox_remover.pl
+by Petr Znojemsky
+Deletes all unused mailboxes
+
+- mkeveryone.pl
+by Joshua Preston
+Generate an 'everybody' alias for a domain.
+
+- pfa_maildir_cleanup.pl
+by Stephen Fulton <sfulton at esoteric dot ca>
+Deletes all unused mailboxes
+
+- postfixadmin-0.3-1.4.tar.gz
+by Florian Kimmerl <info at spacekoeln dot de>
+The Postfixadmin SquirrelMail plugin let users change their virtual alias,
+vacation status/message and password.
+
+- virtualmaildel.php
+by George Vieira <george at citadelcomputer dot com dot au>
+Deletes all unused mailboxes
diff --git a/ADDITIONS/cleanupdirs.pl b/ADDITIONS/cleanupdirs.pl
new file mode 100644
index 0000000..1bd16c5
--- /dev/null
+++ b/ADDITIONS/cleanupdirs.pl
@@ -0,0 +1,103 @@
+#!/usr/bin/perl -w
+
+################################################################################
+#
+# cleanupdirs 1.2 by jared bell <jared@beol.net>
+#
+# display/remove maildir & domains directory tree's not listed in the postfix
+# mysql database. currently setup for use with postfixadmin, but can be
+# adapted. edit settings where it says 'change settings as needed.' by default
+# this program will display a list of directories which need deleted, nothing
+# is actually deleted. to change this behavior, look into the command line
+# arguments.
+#
+# command line arguments:
+# --delete
+# force automatic deletion of directories. instead of displaying a list
+# of deleted directories, they will be logged in the specified logfile.
+# --print
+# display deleted directories as well as log them. only valid when
+# '--delete' has been specified.
+#
+# settings:
+# $root_path = "/home/vmail";
+# if maildir is '/home/vmail/domain.tld/user' then '/home/vmail' is the
+# $root_path. if your maildirs are '/home/vmail/user@domain.tld' then
+# this program will need to be modified in order to work right.
+# $logfile = "/var/log/removed_maildirs.log";
+# the logfile to use when $delete_old_dirs is set to 1
+# $db_* = "*";
+# sets the host, port, database, user and pass to your mysql server
+#
+# version history:
+# 1.2 - removed uneeded settings. added '--print' command line argument
+# 1.1 - added '--delete' command line argument
+# 1.0 - initial release
+#
+################################################################################
+
+use strict;
+use DBI;
+use File::Path;
+use Getopt::Long;
+
+### change settings as needed, see notes above #################################
+my $root_path = "/home/vmail";
+my $logfile = "/var/log/removed_maildirs.log";
+my $db_hostname = "localhost";
+my $db_port = "3306";
+my $db_database = "postfix";
+my $db_username = "someuser";
+my $db_password = "somepass";
+################################################################################
+
+### begin program ##############################################################
+my(@dirs_to_delete, $logfile_open);
+my $delete_old_dirs = 0; # do not delete by default, use cmdline to change this
+my $print_also = 0; # also print items when deleting, use cmdline to change this
+GetOptions ('delete' => \$delete_old_dirs, 'print' => \$print_also);
+my $conn_info = "DBI:mysql:database=$db_database;hostname=$db_hostname;port=$db_port";
+my $dbh = DBI->connect($conn_info, $db_username, $db_password)
+ or die $DBI::errstr;
+opendir DOMAINDIR, $root_path
+ or die "Unable to access directory '$root_path' ($!)";
+foreach my $domain_dir (sort readdir DOMAINDIR) {
+ next if $domain_dir =~ /^\./; # skip dotted dirs
+ my $full_domain_dir = "$root_path/$domain_dir";
+ opendir USERDIR, $full_domain_dir
+ or die "Unable to access directory '$full_domain_dir' ($!)";
+ foreach my $user_dir (sort readdir USERDIR) {
+ next if $user_dir =~ /^\./; # skip dotted dirs
+ push @dirs_to_delete, "$full_domain_dir/$user_dir"
+ if &check_dir("SELECT maildir FROM mailbox WHERE maildir = ?",
+ "$domain_dir/$user_dir/"); # end slash needed for checkdir
+ }
+ push @dirs_to_delete, $full_domain_dir
+ if &check_dir("SELECT domain FROM domain WHERE domain = ?", $domain_dir);
+}
+closedir USERDIR;
+closedir DOMAINDIR;
+$dbh->disconnect;
+if (@dirs_to_delete) {
+ foreach my $to_delete (@dirs_to_delete) {
+ if ($delete_old_dirs == 1) {
+ $logfile_open = open LOGFILE, ">> $logfile"
+ or die "Unable to append logfile '$logfile' ($!)"
+ unless $logfile_open;
+ rmtree $to_delete;
+ print LOGFILE localtime() . " Deleting directory '$to_delete'\n";
+ print localtime() . " Deleting directory '$to_delete'\n"
+ if $print_also;
+ } else {
+ print localtime() . " Need to delete directory '$to_delete'\n";
+ }
+ }
+}
+close LOGFILE if $logfile_open;
+sub check_dir {
+ my($query, $dir) = @_;
+ my $sth = $dbh->prepare($query);
+ my $num_rows = $sth->execute($dir);
+ $sth->finish;
+ ($num_rows eq "0E0") ? 1 : 0;
+}
diff --git a/ADDITIONS/mailbox_remover.pl b/ADDITIONS/mailbox_remover.pl
new file mode 100644
index 0000000..9e6047b
--- /dev/null
+++ b/ADDITIONS/mailbox_remover.pl
@@ -0,0 +1,66 @@
+#!/usr/bin/perl
+#
+# by Petr Znojemsky (c) 2004
+# Mailbox remover 0.1a 23/10/2004 - the very first version for MySQL
+# removes maildirs from disk when they are not found in a database
+# Run program and read the $logfile before uncommenting the "rmtree" line!
+# All your maildirs or other directories could be accidentally removed.
+# Use it at own risk. No warranties!
+
+use DBI;
+use File::Path;
+
+##########
+# Set these variables according to your configuration
+$maildir_path="/var/mail/virtual/";
+$logfile="/var/log/mail/removed_maildirs";
+
+# database information
+$host="localhost";
+$port="3306";
+$userid="postfix";
+$passwd="postfix";
+$db="postfix";
+############
+
+$connectionInfo="DBI:mysql:database=$db;$host:$port";
+# make connection to database
+$dbh = DBI->connect($connectionInfo,$userid,$passwd);
+# prepare and execute query
+$query = "SELECT username FROM mailbox";
+$sth = $dbh->prepare($query);
+$sth->execute();
+# assign fields to variables
+$sth->bind_columns(\$username);
+# output computer list to the browser
+while($sth->fetch()) {
+push(@usernames, $username);
+}
+$sth->finish();
+# disconnect from database
+$dbh->disconnect;
+
+# store maildir list to @directories
+opendir(DIRHANDLE, $maildir_path) || die "Cannot open dir $maildir_path: $!";
+foreach $name (sort readdir(DIRHANDLE))
+{
+ push (@directories, $name);
+}
+closedir(DIRHANDLE);
+# eliminate "." and ".." from the maildir list
+($dot, $doubledot, @directories) = @directories;
+
+
+# compare two arrays and erase maildirs not found in database
+foreach $maildir (@directories)
+{
+ if ((grep { $_ eq $maildir} @usernames)==0)
+ {
+ # username not found, delete maildir.
+ # Please read $logfile before uncommenting following line!
+ # rmtree($maildir_path.$maildir);
+ open(INFO, ">>$logfile") || die "Cannot write to the logfile: $logfile.";
+ print INFO localtime()." Maildir ".$maildir_path.$maildir." has been deleted.\n";
+ close(INFO);
+ }
+}
diff --git a/ADDITIONS/mkeveryone.pl b/ADDITIONS/mkeveryone.pl
new file mode 100644
index 0000000..0f522e2
--- /dev/null
+++ b/ADDITIONS/mkeveryone.pl
@@ -0,0 +1,167 @@
+#!/usr/bin/perl
+#
+# Generate an 'everybody' alias for a domain.
+#
+# Create the file /etc/mkeveryone.conf
+# chmod 640 /etc/mkeveryone.conf
+# Example of mkeveryone.conf
+#
+# userid=postfix
+# passwd=postfix
+# db=postfix
+# host=localhost
+# port=3306
+# domain=domain.tld
+# target=everybody@domain.tld
+# ignore=vacation@domain.tld
+# ignore=spam@domain.tld
+# ignore=newsletter@domain.tld
+# ignore=root@domain.tld
+#
+# Save this file in, for example, /usr/local/sbin/mkeveryone.pl
+# chmod 750 /usr/local/sbin/mkeveryone.pl
+#
+# Run the script!
+#
+use DBI;
+use Time::Local;
+use POSIX qw(EAGAIN);
+use Fcntl;
+use IO;
+use IO::File;
+
+my $timeNow=time();
+
+my $DATFILE = "/etc/mkeveryone.conf";
+my $FILEHANDLE = "";
+
+# database information
+my $db="postfix";
+my $host="localhost";
+my $port="3306";
+my $userid="postfix";
+my $passwd="postfix";
+my $domain="domain.tld";
+my $target="everyone@$domain";
+my @ignore;
+my @dest;
+
+open (FILEHANDLE, $DATFILE);
+
+while ( $LINE = <FILEHANDLE> ) {
+
+ if ( length $LINE > 0 ) {
+ chomp $LINE;
+
+ $RETURNCODE = 0;
+
+ SWITCH: {
+
+ $LINE =~ /^ignore/i and do {
+ $LINE =~ s/^ignore// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ @ignore = (@ignore,$LINE);
+ };
+
+ $LINE =~ /^userid/i and do {
+ # Userid found.";
+ $LINE =~ s/^userid// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $userid = $LINE;
+ };
+
+ $LINE =~ /^passwd/i and do {
+ # Passwd found.";
+ $LINE =~ s/^passwd// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $passwd = $LINE;
+ };
+
+ $LINE =~ /^db/i and do {
+ # Database found.";
+ $LINE =~ s/^db// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $db = $LINE;
+ };
+
+ $LINE =~ /^host/i and do {
+ # Database host found.";
+ $LINE =~ s/^host// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $host = $LINE;
+ };
+
+ $LINE =~ /^port/i and do {
+ # Database host found.";
+ $LINE =~ s/^port// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $port = $LINE;
+ };
+
+ $LINE =~ /^target/i and do {
+ # Database host found.";
+ $LINE =~ s/^target// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $target = $LINE;
+ };
+
+ $LINE =~ /^domain/i and do {
+ # Database host found.";
+ $LINE =~ s/^domain// && $LINE =~ s/=// && $LINE =~ s/^ //g;
+ $domain = $LINE;
+ };
+ }
+ }
+}
+
+print "Connecting to database $db on $host:$port...\n\r";
+
+print "Target email address is $target...\n\r";
+
+my $connectionInfo="DBI:mysql:database=$db;$host:$port";
+
+# make connection to database
+$dbh = DBI->connect($connectionInfo,$userid,$passwd);
+
+# Delete the old message...prepare and execute query
+$query = "SELECT username FROM mailbox WHERE domain='$domain';";
+$sth = $dbh->prepare($query);
+$sth->execute();
+
+# assign fields to variables
+$sth->bind_columns(\$username);
+
+my $ign="false";
+while($sth->fetch()) {
+ $ign = "false";
+
+ foreach $ignored ( @ignore ) {
+ if ( $username eq $ignored ){
+ $ign = "true";
+ }
+ }
+
+ if ( $ign eq "false" ) {
+ @dest = (@dest,$username);
+ }
+}
+
+# Delete the old aliases...prepare and execute query
+$query = "DELETE FROM alias WHERE address='$target';";
+$sth = $dbh->prepare($query);
+$sth->execute();
+
+print "Record deleted from the database.\r\n";
+
+$sth->finish();
+
+$goto = join(",",@dest);
+print "$goto\n\r\n\r";
+
+
+# Insert the new message...prepare and execute query
+$query = "INSERT INTO alias (address,goto,domain,created,modified) VALUES ('$target','$goto','$domain',now(),now());";
+
+$sth = $dbh->prepare($query);
+$sth->execute();
+
+print "Record added to the database.\r\n";
+
+$sth->finish();
+
+# disconnect from databse
+$dbh->disconnect;
+
diff --git a/ADDITIONS/pfa_maildir_cleanup.pl b/ADDITIONS/pfa_maildir_cleanup.pl
new file mode 100644
index 0000000..45d12a1
--- /dev/null
+++ b/ADDITIONS/pfa_maildir_cleanup.pl
@@ -0,0 +1,111 @@
+#!/usr/bin/perl
+#
+##
+## pfa_maildir_cleanup.pl
+##
+## (c) 2004 by Stephen Fulton (sfulton@esoteric.ca)
+##
+## based on a script by Petr Znojemsky (thanks!)
+##
+## Simple script to remove maildirs/domains not listed in a MySQL database.
+## Set up for use with those using PostfixAdmin, but can be adapted.
+##
+## Edit the variables between the ##EDIT## to match your setup.
+##
+## USE AT YOUR OWN RISK. I ASSUME NO RESPONSIBILITY.
+##
+
+use DBI;
+use File::Path;
+
+##EDIT##
+
+$root_path = "/home/mail";
+$logfile = "/var/log/removed_maildirs.log";
+
+$db_host = "localhost";
+$db_database = "database";
+$db_user = "username";
+$db_password = 'password';
+
+##END EDIT##
+
+
+$connectionInfo = "DBI:mysql:database=$db_database;$db_host:3306";
+
+## Read a list of domain directories in the root path /remote/mail1
+
+opendir(DIRHANDLE, $root_path) || die "Cannot access directory $maildir_path: $!";
+
+my @directories = ();
+
+foreach $directory (sort readdir(DIRHANDLE)) {
+ push (@directories, $directory);
+}
+
+closedir(DIRHANDLE);
+
+## Strip the "." and ".." from the directories array
+
+($dot, $doubledot, @directories) = @directories;
+
+## For each of the domain directories..
+
+foreach $domain_dir (@directories) {
+ $complete_domain_path = "$root_path/$domain_dir";
+
+ ## Get a list of user directories within each domain directory...
+
+ opendir(DOMAINHANDLE, $complete_domain_path) || die "Cannot access directory $complete_domain_path: $!";
+
+ my @user_directories = ();
+
+ foreach $dir (sort readdir(DOMAINHANDLE)) {
+ push(@user_directories, $dir);
+ }
+ close(DOMAINHANDLE);
+
+ ## Now remove any "." or ".." directory entries and construct a domain/maildir variable
+ ## valid for one iteration of loop.
+
+ foreach $user_directory (@user_directories) {
+ if( not($user_directory eq '..') && not($user_directory eq '.') ) {
+ $short_user_dir = "$domain_dir/$user_directory/";
+
+ ## Here is where the $short_user_dir is compared against the DB entry.
+
+ $dbh = DBI->connect($connectionInfo,$db_user,$db_password);
+ $user_query = "SELECT maildir FROM mailbox WHERE maildir = '$short_user_dir'";
+ $sth = $dbh->prepare($user_query);
+ $rows = $sth->execute();
+
+ ## If there are no rows that match, then directory is orphaned and can
+ ## be deleted.
+
+ if($rows == 0) {
+ $maildir_path = "$root_path/$short_user_dir";
+ open(INFO, ">>$logfile") || die "Cannot write to the logfile: $logfile.";
+ rmtree($maildir_path);
+ print INFO localtime()." Maildir ".$maildir_path." has been deleted.\n";
+ (INFO);
+ }
+ $sth->finish;
+ $dbh->disconnect;
+ }
+ }
+
+ $dbh2 = DBI->connect($connectionInfo,$db_user,$db_password);
+ $domain_query = "SELECT domain FROM domain WHERE domain = '$domain_dir'";
+ $sth2 = $dbh2->prepare($domain_query);
+ $domain_rows = $sth2->execute();
+
+ if($domain_rows == 0) {
+ open(INFO, ">>$logfile") || die "Cannot write to the logfile: $logfile.";
+ rmtree($complete_domain_path);
+ print INFO localtime()." Domain directory ".$complete_domain_path." has been deleted.\n";
+ close(INFO);
+ }
+
+$sth2->finish;
+$dbh2->disconnect;
+}
diff --git a/ADDITIONS/postfixadmin-0.3-1.4.tar.gz b/ADDITIONS/postfixadmin-0.3-1.4.tar.gz
new file mode 100644
index 0000000..c40a840
--- /dev/null
+++ b/ADDITIONS/postfixadmin-0.3-1.4.tar.gz
Binary files differ
diff --git a/ADDITIONS/virtualmaildel.php b/ADDITIONS/virtualmaildel.php
new file mode 100644
index 0000000..ef84010
--- /dev/null
+++ b/ADDITIONS/virtualmaildel.php
@@ -0,0 +1,185 @@
+<?php
+//
+// Virtual Mail Delete
+// by George Vieira <george at citadelcomputer dot com dot au>
+//
+// You can run this from your crontab with something like
+//
+// 0 4 * * * * vmail php -q virtualmaildel.php >/dev/null
+
+ //
+ // Setup location of postfixadmin config files. Needed to login to mysql
+ //
+ $conf = '/home/httpd/mail/admin/config.inc.php';
+
+ //
+ // Where's the homedir accounts stored. (GET THIS RIGHT OTHERWISE IT THINK NONE EXIST AND DELETES ALL)
+ //
+ $homedir = '/home/virtual';
+
+ //
+ // Make sure everything is everything before continuing
+ //
+ if ( ! file_exists( $conf ) )
+ die( "Cannot find config file $conf\n" );
+
+ if ( ! is_dir( $homedir ) )
+ die( "Cannot find home directory for virtual mailboxes in $homedir\n" );
+
+ //
+ // Load mysql authentication from postfixadmin
+ //
+ include( $conf );
+
+ //
+ // Recursive Delete Function
+ //
+ function deldir($dir)
+ {
+ $current_dir = opendir($dir);
+ while($entryname = readdir($current_dir))
+ {
+ if(is_dir("$dir/$entryname") and ($entryname != "." and $entryname!=".."))
+ {
+ deldir("${dir}/${entryname}");
+ }
+ elseif($entryname != "." and $entryname!="..")
+ {
+ unlink("${dir}/${entryname}");
+ }
+ }
+ closedir($current_dir);
+ @rmdir(${dir});
+ }
+
+// --- Main Start ---
+
+ //
+ // Get list of directories
+ //
+ $fr = opendir( $homedir );
+ while ( ($domain = readdir($fr)) !== false)
+ {
+ //
+ // Check if it's a dir
+ //
+ if ( $domain != "." and $domain != ".." and filetype($homedir .'/'. $domain) == "dir" )
+ {
+ //
+ // Open the (assumed) DOMAIN directory
+ //
+ $ff = opendir( $homedir .'/'. $domain );
+ while ( ($user = readdir($ff)) !== false)
+ {
+ //
+ // Check for directories assuming it's a user account
+ //
+ if ( $user!="." and $user!=".." and filetype($homedir .'/'. $domain .'/'. $user) == "dir" )
+ {
+ //
+ // if the dir 'new' exists inside then it's an account
+ //
+ if ( file_exists($homedir .'/'. $domain .'/'. $user .'/'. "new") )
+ {
+ $dir[$domain][$user] = "";
+ }
+ else
+ {
+ //
+ // Alert that the dir doesn't have a 'new' dir, possibly not an account. Leave it.
+ //
+ echo "UNKNOWN : " . $homedir ."/". $domain ."/". $user ."/new NOT FOUND. Possibly not an account. Leaving untouched\n";
+ }
+ }
+ }
+ }
+ }
+ //
+ // OK, got an array of accounts from the dir, Now connect to the DB and check them
+ //
+ $conx = mysql_connect( $CONF['database_host'],$CONF['database_user'],$CONF['database_password'] );
+ //
+ // Is there a problem connecting?
+ //
+ if ( $conx != false )
+ {
+ //
+ // Select the database
+ //
+ mysql_select_db( $CONF['database_name'] , $conx) or die ("Can't access database postfix : " . mysql_error());
+
+ //
+ // Select all mailboxes to verify against dirs listed in array
+ //
+ $query = "SELECT * FROM mailbox";
+ $result = mysql_query( $query );
+
+ //
+ // Query the mailbox table
+ //
+ if ( $result != false )
+ {
+ //
+ // Fetch the list of results
+ //
+ while ( $row = mysql_fetch_assoc( $result ) )
+ {
+ //
+ // Pull apart the maildir field, needed to figure out the directory structure to compare
+ //
+ $strip = explode("/",$row['maildir']);
+ //
+ // Unset the array if it exists. This stops it being erased later.
+ //
+ unset( $dir[ $strip[0] ][ $strip[1] ] );
+ }
+ //
+ // If there are results. unset the domain too.
+ //
+ if ( count($dir[$strip[0]])==0 and mysql_num_rows($result)>0 )
+ unset( $dir[$strip[0]] );
+ }
+ else
+ die( "Failed SELECT in mailboxes\n" );
+ }
+ else
+ die( 'Cannot connect to the database!\n' );
+
+ //
+ // OK, time to clean up. All known users/domains have been removed from the list.
+ //
+
+ //
+ // If the array still exists (incase nothing there)
+ //
+ if ( is_array($dir) )
+ {
+ //
+ // Go through each dir
+ //
+ foreach ( $dir as $key => $value )
+ {
+ //
+ // Is this a user array?
+ //
+ if ( is_array( $value) )
+ {
+ //
+ // Go through and nuke the folders
+ //
+ foreach ( $value as $user => $value2 )
+ {
+ //
+ // Nuke.. need any more explanations?
+ //
+ echo "REMOVING : " . $homedir."/".$key."/".$user."\n" ;
+ deldir( $homedir."/".$key."/".$user ) ;
+ }
+ }
+ }
+ }
+ //
+ // And we are outta here....
+ //
+ echo "Cleanup process completed\n";
+?>
diff --git a/BACKUP_MX.TXT b/BACKUP_MX.TXT
new file mode 100644
index 0000000..a36ed12
--- /dev/null
+++ b/BACKUP_MX.TXT
@@ -0,0 +1,49 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+REQUIRED!!
+----------
+- You are using Postfix 2.0 or higher.
+- You are using Apache 1.3.27 or higher.
+- You are using PHP 4.1 or higher.
+- You are using MySQL 3.23 or higher.
+
+
+READ THIS FIRST!
+----------------
+When this is an upgrade from Postfix Admin 1.5.4 please read UPGRADE.TXT!!
+
+When you are upgrading from 2.0.x please read TABLE_BACKUP_MX.TXT
+
+More information is available on http://high5.net/howto/
+
+
+1. Modify main.cf
+-----------------
+In order for Postfix to use MySQL for relay_domains add the following
+to your main.cf
+
+relay_domains = proxy:mysql:/usr/local/etc/postfix/mysql_relay_domains_maps.cf
+
+
+2. mysql_relay_domains_maps.cf
+------------------------------
+You will need to put this into a text file for postfix to pickup.
+
+user = postfix
+password = postfix
+hosts = localhost
+dbname = postfix
+table = domain
+select_field = domain
+where_field = domain
+additional_conditions = and backupmx = '1'
+
+
+3. Restart Postfix
+-------------------
+When you are done make sure to restart Postfix so the changes take effect.
diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT
new file mode 100644
index 0000000..35fb300
--- /dev/null
+++ b/CHANGELOG.TXT
@@ -0,0 +1,240 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+Version 2.1.0 -- 2005/01/07
+---------------------------
+ - Added: Traditional Chinese language. (Thanx Bruce)
+ - Added: Traditional Bulgarian language. (Thanx Plamen)
+ - Added: Macedonian language. (Thanx Damjan)
+ - Added: Estonian language. (Thanx Peeter)
+ - Added: Slovenian language. (Thanx Nejc)
+ - Added: Check for update link in footer.
+ - Added: Additional language strings. Check LANGUAGE.TXT
+ - Added: Transport support. (read postfix transport for more information)
+ - Added: Additional language string for transport support.
+ - Added: MySQL 4.1 support.
+ - Added: PostgreSQL support. (Big Thanx WhiteFox!)
+ - Added: Setup Checker script. (Thanx Fenrir)
+ - Added: Database prefix. (Thanx Decramy)
+ - Added: Template tags. (Thanx Nelson)
+ - Added: admin/domain/alias/mailbox in delete dialog box.
+ - Added: $CONF['postfix_admin_url'] variable.
+ - Added: $CONF['postfix_admin_path'] variable.
+ - Added: $CONF['vacation_domain'] variable.
+ - Added: $CONF['welcome_text'] variable.
+ - Added: $CONF['special_alias_control'] variable. (Thanx Mihau)
+ - Added: Virtual Vacation 3.1 (Thanx David)
+ - Added: ADDITIONS directory with third party scripts and plugins.
+ - Added: Search function for aliases and mailboxes.
+ - Changed: Postfix Admin has now it's own license.
+ - Changed: New menu and color scheme. (Thanx Nelson)
+ - Changed: Disable number and unlimited number for aliases/mailboxes/quota.
+ - Changed: Virtual Vacation to have it's own transport. (Big Thanx Npaufler!)
+ - Changed: Removed the welcome text for a new mailbox from the language files.
+ - Changed: backup.php to be a more secure. (Thanx John)
+ - Fixed: Cleaned up stylesheet.
+ - Fixed: Default quota multiplier.
+ - Fixed: All POST/GET strings are escaped.
+ - Fixed: Corrected smtp_mail() to wait for result. (Thanx Patrice)
+ - Fixed: Pagination with alias_control switched on.
+ - Fixed: Swedish language. (Thanx Bjorne)
+ - Fixed: Polish language. (Thanx Piotr)
+ - Fixed: Minor Virtual Vacation bugs. (Thanx David)
+ - Fixed: check_quota().
+ - Fixed: Minor encode_header() issue. (Thanx Matthew)
+ - Fixed: edit-alias.php when running with magic_quotes_gpc = off
+
+
+Version 2.0.5 -- 2004/08/21
+---------------------------
+ - Added: Chinese language. (Thanx Matthew)
+ - Added: Catalan language. (Thanx Jaume)
+ - Added: Czech language. (Thanx Jakub)
+ - Added: Dynamic language detection.
+ - Added: Header in header.tpl to set charset header from language file.
+ - Added: More subroutines and alias checking for Vacation. (Thanx David)
+ - Added: Domain pass-through with certain pages.
+ - Added: Backup MX option for domain.
+ - Added: Log contains IP address of admin.
+ - Added: Pagination for alias/mailbox listing.
+ - Added: 2 additional language strings to support Backup MX.
+ - Added: Support for motd.txt (Domain Admins only).
+ - Added: Support for motd-admin.txt (Site Admins only).
+ - Added: Support for motd-users.txt (Users only).
+ - Added: Optional hostname for vacation.
+ - Added: generate_password() to generating random passwords for mailboxes.
+ - Changed: dk -> da, se -> sv, no-nn -> nn
+ - Changed: All email addresses are now converted to lowercase, strtolower().
+ - Changed: Moved onMouseOver to the CSS stylesheet.
+ - Changed: Moved font color to the CSS styleheet.
+ - Changed: PHP mail() is replaced by an internal function, smtp_mail().
+ - Changed: mysql_fetch_array() replaced with internal function db_array().
+ - Changed: mysql_fetch_assoc() replaced with internal function db_assoc().
+ - Changed: mysql_fetch_row() replaced with internal function db_row().
+ - Changed: Quota multiplier is now a configuration option.
+ - Fixed: Login didn't check for active flag.
+ - Fixed: Minor html table errors.
+ - Fixed: Row count by using COUNT(*).
+ - Fixed: Locked down subdirectories.
+ - Fixed: Create admin properly populates the domain_admins table.
+ - Fixed: Cleaned up stylesheet.css.
+ - Fixed: Delete mailbox properly removes vacation entries.
+
+
+Version 2.0.4 -- 2004/02/26
+----------------------------
+ - Added: Euskara language. (Thanx Julen)
+ - Added: Hungarian language. (Thanx Christian)
+ - Added: Icelandic language. (Thanx Gestur)
+ - Added: Italian language. (Thanx Stucchi)
+ - Added: Norwegian - Nynorsk language. (Thanx Paul)
+ - Added: Polish language. (Thanx Jarek)
+ - Added: Portuguese - Brazil language. (Thanx Roberto)
+ - Added: Rusian language. (Thanx Paul)
+ - Added: Turkish language (Thanx Onuryalazi)
+ - Added: Encode a string according to RFC 1522 for use in headers if it
+ contains 8-bit characters. (Thanx Evgeniy)
+ - Added: One click active change of mailbox/domain/admin. (Thanx Marcin)
+ - Changed: Header in header.tpl to read charset header from language file.
+ - Fixed: Some form values are now parsed through htmlspecialchars().
+ (Thanx Marcin)
+ - Fixed: admin/delete.php ignored $CONF['vacation'].
+ - Fixed: More minor fixes to Virtual Vacation.
+
+
+Version 2.0.3 -- 2004/01/14
+----------------------------
+ - Added: Site Admin email address.
+ - Added: Danish language. (Thanx Lars)
+ - Added: Dutch language. (Thanx Mourik)
+ - Added: Faroese language. (Thanx Danial)
+ - Added: Finnish language. (Thanx Palo)
+ - Added: French language. (Thanx Kuthz)
+ - Added: Swedish language. (Thanx Slite)
+ - Added: Ignoring of MAILER-DAEMON type emails for Vacation.
+ - Fixed: Minor issues regarding mail().
+ - Fixed: Minor issues regarding crypt().
+ - Fixed: Strip issue of email address for Vacation.
+
+
+Version 2.0.2 -- 2004/01/06
+----------------------------
+ - Added: German language. (Thanx Tobias)
+ - Added: Spanish language. (Thanx Alvaro)
+ - Fixed: The body was not included using sendmail.php.
+ - Fixed: Undefined variables.
+ - Fixed: Minor HTML cleanup.
+
+
+Version 2.0.1 -- 2004/01/04
+----------------------------
+ - Fixed: The language variable caused a problem on some systems.
+
+
+Version 2.0.0 -- 2004/01/03
+----------------------------
+ - Added: The ability for one domain admin to maintain multiple domains.
+ - Added: Domain to domain forwarding.
+ - Added: Mailboxes can now be activated or deactivated.
+ - Added: Configurable welcome message for new mailboxes.
+ - Added: Optional sending of welcome message.
+ - Added: Create alias "To" defaults to current domain.
+ - Added: Logging of admin / user actions.
+ - Added: Limit for aliases and/or mailboxes per domain.
+ - Added: Disable aliases and/or mailboxes per domain.
+ - Added: Max quota per mailbox per domain.
+ - Added: Multi-Language support.
+ - Added: Statistics overview for all domains.
+ - Added: User .forwarding for mailbox users.
+ - Added: Logo for Postfix Admin (Thanx Andrew).
+ - Added: Extra MySQL debugging capabilities.
+ - Added: Clear text password support.
+ - Added: PHP crypt() support.
+ - Changed: Separated logic and SQL from content.
+ - Changed: config.inc.php doesn't point to example.com anymore.
+ - Changed: Virtual Vacation no longer requires procmail.
+ - Changed: Complete re-write.
+
+
+Version 1.5.4 -- 2003/06/16
+----------------------------
+ - Added: Option for "Back to".
+ - Added: Option for Vacation module.
+ - Added: Table declaration for the use of Quota in the INSTALL.TXT.
+ This requires an additional local delivery agent.
+ Quotas are not supported by Postfix!
+ - Changed: The word "View" to "List".
+
+
+Version 1.5.3 -- 2003/06/06
+----------------------------
+ - Fixed: Even more minor bugs in regards to declaration of variables.
+ (Thanx Aquilante and Kyle_m)
+
+
+Version 1.5.2 -- 2003/06/05
+----------------------------
+ - Fixed: Minor bugs in regards to declaration of variables.
+
+
+Version 1.5.1 -- 2003/06/04
+----------------------------
+ - Added: Optional mailbox per domain directory structure. (Thanx Jim)
+ - Added: Option to completely control the stored aliases. (Thanx Alex)
+ - Changed: config.inc.php is renamed to config.inc.php.sample. (Thanx Alex)
+ - Fixed: $PHP_SELF in config.inc.php and my_lib.php. (Thanx Jim)
+
+
+Version 1.5.0 -- 2003/05/28
+----------------------------
+ - Added: Support for "Back to Main Site"
+ - Added: config.inc.php as the main configuration file.
+ - Added: Drop down box for domain selection when adding a new admin.
+ - Added: Resend of test email to newly created mailbox.
+ - Added: Mailbox and Aliases count for domainview.
+ - Added: Change description of domain without deleting the complete
+ domain.
+ - Added: Change name of mailbox user without deleting the mailbox.
+ - Added: Expire headers for unnecessary reloads. (Thanx Alex)
+ - Fixed: Code clean up.
+ - Fixed: Minor bugs and cosmetic fixes.
+ - Fixed: Modified check_string() to check numbers and returns false if not
+ matched. (Thanx btaber)
+ - Fixed: Correct session handling in login.php (Thanx Yen-Wei Liu)
+ - Fixed: Correct deletion of RFC822 email addresses. (Thanx Yen-Wei Liu)
+ - Removed: Completely removed the site_lib.php.
+ - Removed: my_lib.php from the admin directory.
+ - Removed: Symlink to index.php.
+
+
+Version 1.4.0 -- 2003/04/07
+----------------------------
+ - Added: When deleting a domain, all aliases and mailboxes for that domain
+ are also deleted from the database.
+ - Added: Add standard aliases for every domain that is created.
+ These aliases can point to the main "local" administrator.
+ The aliases are configured in the config.php in the admin directory.
+ - Changed: The layout of my_lib.php and site_lib.php have been changed.
+ - Changed: Modifying an alias is now done with TEXTAREA for more
+ flexibility.
+ - Fixed: Minor bugs and cosmetic fixes.
+
+
+Version 1.3.8a -- 2003/03/31
+----------------------------
+ - Fixed: After deletion of a domain it would not return to the correct page.
+
+
+Version 1.3.8 -- 2003/03/25
+----------------------------
+ - Added: Admin password change. No longer needed to delete and re-enter
+ the admin user for a specific domain.
+
+
+Version 1.3.7 -- 2002/12/24
+----------------------------
+ - Initial public release of Postfix Admin.
diff --git a/DATABASE_MYSQL.TXT b/DATABASE_MYSQL.TXT
new file mode 100644
index 0000000..a97f65f
--- /dev/null
+++ b/DATABASE_MYSQL.TXT
@@ -0,0 +1,139 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+# This is the complete MySQL database structure for Postfix Admin.
+# If you are installing from scratch you can use this file otherwise you
+# need to use the TABLE_CHANGES.TXT or TABLE_BACKUP_MX.TXT that comes with Postfix Admin.
+#
+# There are 2 entries for a database user in the file.
+# One you can use for Postfix and one for Postfix Admin.
+#
+# If you run this file twice (2x) you will get an error on the user creation in MySQL.
+# To go around this you can either comment the lines below "USE MySQL" until "USE postfix".
+# Or you can remove the users from the database and run it again.
+#
+# You can create the database from the shell with:
+#
+# mysql -u root [-p] < DATABASE_MYSQL.TXT
+
+#
+# Postfix / MySQL
+#
+USE mysql;
+# Postfix user & password
+INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('postfix'));
+INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
+# Postfix Admin user & password
+INSERT INTO user (Host, User, Password) VALUES ('localhost','postfixadmin',password('postfixadmin'));
+INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y', 'Y');
+FLUSH PRIVILEGES;
+GRANT USAGE ON postfix.* TO postfix@localhost;
+GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfix@localhost;
+GRANT USAGE ON postfix.* TO postfixadmin@localhost;
+GRANT SELECT, INSERT, DELETE, UPDATE ON postfix.* TO postfixadmin@localhost;
+CREATE DATABASE postfix;
+USE postfix;
+
+#
+# Table structure for table admin
+#
+CREATE TABLE admin (
+ username varchar(255) NOT NULL default '',
+ password varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ modified datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (username),
+ KEY username (username)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Admins';
+
+#
+# Table structure for table alias
+#
+CREATE TABLE alias (
+ address varchar(255) NOT NULL default '',
+ goto text NOT NULL,
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ modified datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (address),
+ KEY address (address)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
+
+#
+# Table structure for table domain
+#
+CREATE TABLE domain (
+ domain varchar(255) NOT NULL default '',
+ description varchar(255) NOT NULL default '',
+ aliases int(10) NOT NULL default '0',
+ mailboxes int(10) NOT NULL default '0',
+ maxquota int(10) NOT NULL default '0',
+ transport varchar(255) default NULL,
+ backupmx tinyint(1) NOT NULL default '0',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ modified datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (domain),
+ KEY domain (domain)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Domains';
+
+#
+# Table structure for table domain_admins
+#
+CREATE TABLE domain_admins (
+ username varchar(255) NOT NULL default '',
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ KEY username (username)
+) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';
+
+#
+# Table structure for table log
+#
+CREATE TABLE log (
+ timestamp datetime NOT NULL default '0000-00-00 00:00:00',
+ username varchar(255) NOT NULL default '',
+ domain varchar(255) NOT NULL default '',
+ action varchar(255) NOT NULL default '',
+ data varchar(255) NOT NULL default '',
+ KEY timestamp (timestamp)
+) TYPE=MyISAM COMMENT='Postfix Admin - Log';
+
+#
+# Table structure for table mailbox
+#
+CREATE TABLE mailbox (
+ username varchar(255) NOT NULL default '',
+ password varchar(255) NOT NULL default '',
+ name varchar(255) NOT NULL default '',
+ maildir varchar(255) NOT NULL default '',
+ quota int(10) NOT NULL default '0',
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ modified datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (username),
+ KEY username (username)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Mailboxes';
+
+#
+# Table structure for table vacation
+#
+CREATE TABLE vacation (
+ email varchar(255) NOT NULL default '',
+ subject varchar(255) NOT NULL default '',
+ body text NOT NULL,
+ cache text NOT NULL,
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (email),
+ KEY email (email)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
diff --git a/DATABASE_PGSQL.TXT b/DATABASE_PGSQL.TXT
new file mode 100644
index 0000000..665c3f3
--- /dev/null
+++ b/DATABASE_PGSQL.TXT
@@ -0,0 +1,142 @@
+-- Postfix Admin Release 2.x --
+----------------------------------------------------------
+--
+-- Copyright (c) 2002 - 2005 High5!
+-- Created by: Mischa Peters <mischa at high5 dot net>
+--
+-- This is the complete database structure for Postfix Admin.
+-- If you are installing from scratch you can use this file otherwise you
+-- need to use the TABLE_CHANGES.TXT or TABLE_BACKUP_MX.TXT that comes with Postfix Admin.
+--
+-- There are 2 entries for a database user in the file.
+-- One you can use for Postfix and one for Postfix Admin.
+--
+-- If you run this file twice (2x) you will get an error on the user creation in MySQL.
+-- To go around this you can either comment the lines below "USE MySQL" until "USE postfix".
+-- Or you can remove the users from the database and run it again.
+--
+-- You can create the database from the shell with:
+-- creatuser -P postfix
+-- creatuser -P postfixadmin
+-- createdb postfix
+-- psql postfix
+-- postfix=# \i postfix.sql
+-- postfix=# \q
+-- exit
+--
+-- Postfix / PgSQL
+
+--
+-- DROP TABLE admin,alias,domain,domain_admins,log,mailbox,vacation;
+--
+
+--
+-- Table structure for table admin
+--
+CREATE TABLE "admin" (
+ "username" character varying(255) NOT NULL default '',
+ "password" character varying(255) NOT NULL default '',
+ "created" timestamp with time zone default now(),
+ "modified" timestamp with time zone default now(),
+ "active" boolean NOT NULL default true,
+ Constraint "admin_key" Primary Key ("username")
+);
+COMMENT ON TABLE admin IS 'Postfix Admin - Virtual Admins';
+--
+-- Table structure for table alias
+--
+CREATE TABLE alias (
+ address character varying(255) NOT NULL default '',
+ goto text NOT NULL,
+ domain character varying(255) NOT NULL default '',
+ created timestamp with time zone default now(),
+ modified timestamp with time zone default now(),
+ active boolean NOT NULL default true,
+-- PRIMARY KEY ("address"),
+-- KEY address ("address"),
+ Constraint "alias_key" Primary Key ("address")
+);
+COMMENT ON TABLE alias IS 'Postfix Admin - Virtual Aliases';
+
+--
+-- Table structure for table domain
+--
+CREATE TABLE domain (
+ domain character varying(255) NOT NULL default '',
+ description character varying(255) NOT NULL default '',
+ aliases integer NOT NULL default 0,
+ mailboxes integer NOT NULL default 0,
+ maxquota integer NOT NULL default 0,
+ transport character varying(255) default NULL,
+ backupmx boolean NOT NULL default false,
+ created timestamp with time zone default now(),
+ modified timestamp with time zone default now(),
+ active boolean NOT NULL default true,
+-- PRIMARY KEY ("domain"),
+-- KEY domain ("domain"),
+ Constraint "domain_key" Primary Key ("domain")
+);
+COMMENT ON TABLE domain IS 'Postfix Admin - Virtual Domains';
+
+--
+-- Table structure for table domain_admins
+--
+CREATE TABLE domain_admins (
+ username character varying(255) NOT NULL default '',
+ domain character varying(255) NOT NULL default '',
+ created timestamp with time zone default now(),
+ active boolean NOT NULL default true
+-- KEY username ("username")
+);
+COMMENT ON TABLE domain_admins IS 'Postfix Admin - Domain Admins';
+
+--
+-- Table structure for table log
+--
+CREATE TABLE log (
+ timestamp timestamp with time zone default now(),
+ username character varying(255) NOT NULL default '',
+ domain character varying(255) NOT NULL default '',
+ action character varying(255) NOT NULL default '',
+ data character varying(255) NOT NULL default ''
+-- KEY timestamp ("timestamp")
+);
+COMMENT ON TABLE log IS 'Postfix Admin - Log';
+
+--
+-- Table structure for table mailbox
+--
+CREATE TABLE mailbox (
+ username character varying(255) NOT NULL default '',
+ password character varying(255) NOT NULL default '',
+ name character varying(255) NOT NULL default '',
+ maildir character varying(255) NOT NULL default '',
+ quota integer NOT NULL default 0,
+ domain character varying(255) NOT NULL default '',
+ created timestamp with time zone default now(),
+ modified timestamp with time zone default now(),
+ active boolean NOT NULL default true,
+-- PRIMARY KEY ("username"),
+-- KEY username ("username"),
+ Constraint "mailbox_key" Primary Key ("username")
+);
+COMMENT ON TABLE mailbox IS 'Postfix Admin - Virtual Mailboxes';
+
+--
+-- Table structure for table vacation
+--
+CREATE TABLE vacation (
+ email character varying(255) NOT NULL default '',
+ subject character varying(255) NOT NULL default '',
+ body text NOT NULL,
+ cache text NOT NULL,
+ domain character varying(255) NOT NULL default '',
+ created timestamp with time zone default now(),
+ active boolean NOT NULL default true,
+-- PRIMARY KEY ("email"),
+-- KEY email ("email")
+ Constraint "vacation_key" Primary Key ("email")
+);
+COMMENT ON TABLE vacation IS 'Postfix Admin - Virtual Vacation';
+
+GRANT SELECT,INSERT,UPDATE,DELETE ON admin,alias,domain,domain_admins,log,mailbox,vacation TO postfixadmin_user;
diff --git a/INSTALL.TXT b/INSTALL.TXT
new file mode 100644
index 0000000..ecf7d94
--- /dev/null
+++ b/INSTALL.TXT
@@ -0,0 +1,87 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+REQUIRED!!
+----------
+- You are using Postfix 2.0 or higher.
+- You are using Apache 1.3.27 or higher.
+- You are using PHP 4.1 or higher.
+- You are using MySQL 3.23 or higher.
+
+
+READ THIS FIRST!
+----------------
+When this is an upgrade from Postfix Admin 1.5.4 please read UPGRADE.TXT!!
+
+If you need to setup Postfix to be able to handle Virtual Domains and Virtual
+Users check out http://high5.net/howto/
+
+
+1. Unarchive new Postfix Admin
+------------------------------
+Make sure that you are in your WWW directory and then unarchive the
+Postfix Admin archive (whatever the filename is):
+
+ $ tar -zxvf postfixadmin-2.0.0.tgz
+
+
+2. Change permissions
+----------------------
+Since the database password is stored in the config.inc.php it's a good idea
+to have change the permissions for Postfix Admin.
+
+ $ cd /usr/local/www/postfixadmin
+ $ chmod 640 *.php *.css
+ $ cd /usr/local/www/postfixadmin/admin/
+ $ chmod 640 *.php .ht*
+ $ cd /usr/local/www/postfixadmin/images/
+ $ chmod 640 *.gif *.png
+ $ cd /usr/local/www/postfixadmin/languages/
+ $ chmod 640 *.lang
+ $ cd /usr/local/www/postfixadmin/templates/
+ $ chmod 640 *.tpl
+ $ cd /usr/local/www/postfixadmin/users/
+ $ chmod 640 *.php
+
+
+3. Create the Database Tables
+--------------------------
+In DATABASE_MYSQL.TXT you can find the table structure for MySQL that you need
+in order to configure Postfix Admin and Postfix in general to work with
+Virtual Domains and Users.
+
+In DATABASE_PGSQL.TXT you can find the table structure for PostgreSQL.
+
+
+4. Configure
+------------
+Check the config.inc.php file. There you can specify settings that are
+relevant to your setup.
+
+Postfix Admin contains 3 views of administration.
+There is the Site Admin view, located at http://domain.tld/postfixadmin/admin/.
+There is the Domain Admin view, located at http://domain.tld/postfixadmin/.
+And there is the User Admin View, located at http://domain.tld/postfixadmin/users/.
+
+In order to do the initial configuration you have to go to the Site Admin view.
+
+The default password for the Site Admin view of Postfix Admin is admin/admin.
+
+This is specified in the .htpasswd file in the /admin directory. Make sure
+that the location of the .htpasswd file matches your path.
+
+
+5. Done
+-------
+This is all that is needed. Fire up your browser and go to the site that you
+specified to host Postfix Admin.
+
+
+6. More information
+-------------------
+For more information you can go to the Postfix Admin forums.
+http://forums.high5.net/index.php?showforum=22
diff --git a/LANGUAGE.TXT b/LANGUAGE.TXT
new file mode 100644
index 0000000..7ff22a9
--- /dev/null
+++ b/LANGUAGE.TXT
@@ -0,0 +1,46 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+READ THIS FIRST!
+----------------
+*** Unlimited and disable value have been changed ***
+If you are using any other language then english, please make sure that:
+ -1 means disable
+ 0 means unlimited
+
+
+Additional Language Strings for Postfix Admin 2.1.0
+---------------------------------------------------
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
diff --git a/LICENSE.TXT b/LICENSE.TXT
new file mode 100644
index 0000000..38669c6
--- /dev/null
+++ b/LICENSE.TXT
@@ -0,0 +1,118 @@
+Postfix Admin User License Agreement
+Version 1.0
+Copyright (c) 2004 High5!
+
+High5!
+Postfix Admin Software
+End User License Agreement
+
+
+It is highly recommended that you read all sections of this license agreement. It
+contains information on what you can and cannot do with the Software along with
+how our support services operate. Many questions are answered in the body of this
+document, please read it carefully.
+
+
+1. PRICING
+Postfix admin (the software) can be used for free unless it is used in violation with
+the rules mentioned in 3.1 in the End User License Agreement. If you want to use
+the software outside the limitations set by 3.1 a commercial license is required. This
+license can be obtained by contacting the publisher mentioned in point 9 of this
+contract.
+
+
+2. LICENSE
+High5! (the company) grants you a non-exclusive license to use the Software on an
+unlimited installations subject to the provisions in all sections of this Agreement.
+
+The Company, at its discretion, offers a free download of Postfix Admin available on
+its web site. Use of this free download is also provided under the terms of this
+Agreement with the additional notice that no technical support or service for the free
+download will be provided by the Company. Use for sale or re-sale of the Software
+requires purchasing the license.
+
+
+3. SCOPE OF GRANT
+
+3.1 You are allowed to:
+a) customize the Software's design and operation to suit the internal needs of
+your web site and/or product
+b) produce and distribute the Software with additional modification. The
+modifications you personally create are not owned by High5! as long as they
+contain no proprietary coding from High5!
+c) create applications which interface with the operation of the Software
+provided said application is an original work.
+
+3.2 You are not allowed to:
+
+a) permit other individuals to use the Software except under the terms listed
+above
+b) reverse engineer, disassemble, or create derivative works based on the
+Software for distribution or usage outside your web site and/or product
+excluding those applications described above
+c) modify and/or remove any copyright notices or labels on the Software on
+each page (unless full license is purchased) and in the header of each script
+source file
+d) distribute the Software for sale or re-sale (unless full license purchased)
+except under the terms listed above
+e) distribute individual copies of files (unless full license purchased), libraries, or
+other programming material in the Software package except under the terms
+listed above.
+
+
+4. DISCLAIMER OF WARRANTY
+The Software is provided on an "AS IS" basis, without warranty of any kind, including
+without limitation the warranties of merchantability, fitness for a particular purpose
+and non-infringement. The entire risk as to the quality and performance of the
+Software is borne by you. Should the Software prove defective, you and not High5!
+assume the entire cost of any service and repair. In addition, the security
+mechanisms implemented by High5! Software have inherent limitations, and you
+must determine that the Software sufficiently meets your requirements. This
+disclaimer of warranty constitutes an essential part of the agreement.
+
+
+5. TITLE
+Title, ownership rights, and intellectual property rights in the Software shall remain
+with High5!. The Software is protected by copyright laws and treaties. Title and
+related rights in the content generated through the Software is the property of the
+applicable content owner and may be protected by applicable law. This License gives
+High5! no rights to such content.
+
+
+6. TERMINATION
+This Agreement will terminate automatically upon failure to comply with the
+limitations described herein or on written notice from an authorized representative of
+High5!. On termination, you must destroy all copies of the Software within 48 hours.
+Termination of the license due to noncompliance will not result in any refunds of
+license fees.
+
+
+7. MISCELLANEOUS
+High5! reserves the right to publish a selected list of users of the Software. High5!
+reserves the right to change the terms of this Agreement at any time however those
+changes are not retroactive to past releases. Changes to the Agreement will be
+announced via email using the High5! email notification list. Failure to receive
+notification of a change does not make those changes invalid. A current copy of this
+Agreement will be available upon request.
+
+Technical support will not be provided for third-party modifications to the Software
+including modifications to code, CSS, and Languages to any license holder. If the
+Software is modified using a third-party modification or otherwise, technical support
+may be refused to any license holder.
+
+
+8. GOVERNING LAW
+This Agreement shall be governed by the Laws of the Netherlands. Any action in
+regard to this Agreement or arising out of its terms and conditions shall be instituted
+and litigated in the court of Amsterdam. Each of the parties consents to jurisdiction
+in such Court and agrees that service of process as provided by the states and rules
+of civil procedures of the Netherlands shall be sufficient.
+
+
+9. MANUFACTURER
+High5!, Rooseveltlaan 80-2, 1078 NM, Amsterdam. For questions, write to the above
+address, email info@postfixadmin.com, or call +31 6 2181 8161.
+
+
+Postfix Admin End User Agreement, version 1.0 revised September 2004
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a2eea62
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+# PostfixAdmin
diff --git a/TABLE_BACKUP_MX.TXT b/TABLE_BACKUP_MX.TXT
new file mode 100644
index 0000000..9a9f938
--- /dev/null
+++ b/TABLE_BACKUP_MX.TXT
@@ -0,0 +1,19 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+# mysql -u root [-p] < TABLE_BACKUP_MX.TXT
+
+#
+# Table structure for table domain_admins
+#
+USE postfix;
+
+#
+# Modify table structure for table domain
+#
+ALTER TABLE domain ADD transport VARCHAR(255) AFTER maxquota;
+ALTER TABLE domain ADD backupmx TINYINT(1) DEFAULT '0' NOT NULL AFTER transport;
diff --git a/TABLE_CHANGES.TXT b/TABLE_CHANGES.TXT
new file mode 100644
index 0000000..dcb7b8f
--- /dev/null
+++ b/TABLE_CHANGES.TXT
@@ -0,0 +1,104 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+# mysql -u root [-p] < TABLE_CHANGES.TXT
+
+#
+# Table structure for table domain_admins
+#
+USE postfix;
+CREATE TABLE IF NOT EXISTS domain_admins (
+ username varchar(255) NOT NULL default '',
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ KEY username (username)
+) TYPE=MyISAM COMMENT='Postfix Admin - Domain Admins';
+
+#
+# Table structure for table log
+#
+CREATE TABLE IF NOT EXISTS log (
+ timestamp datetime NOT NULL default '0000-00-00 00:00:00',
+ username varchar(255) NOT NULL default '',
+ domain varchar(255) NOT NULL default '',
+ action varchar(255) NOT NULL default '',
+ data varchar(255) NOT NULL default '',
+ KEY timestamp (timestamp)
+) TYPE=MyISAM COMMENT='Postfix Admin - Log';
+
+#
+# Table structure for table vacation
+#
+CREATE TABLE IF NOT EXISTS vacation (
+ email varchar(255) NOT NULL default '',
+ subject varchar(255) NOT NULL default '',
+ body text NOT NULL,
+ cache text NOT NULL,
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(1) NOT NULL default '1',
+ PRIMARY KEY (email),
+ KEY email (email)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
+
+#
+# Modify table structure for table admin
+#
+ALTER TABLE admin CHANGE create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE admin CHANGE change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE admin ADD INDEX (username);
+
+#
+# Modify table structure for table alias
+#
+ALTER TABLE alias CHANGE create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE alias CHANGE change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE alias ADD INDEX (address);
+
+#
+# Modify table structure for table domain
+#
+ALTER TABLE domain CHANGE create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE domain CHANGE change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE domain ADD aliases INT(10) DEFAULT '-1' NOT NULL AFTER description;
+ALTER TABLE domain ADD mailboxes INT(10) DEFAULT '-1' NOT NULL AFTER aliases;
+ALTER TABLE domain ADD maxquota INT(10) DEFAULT '-1' NOT NULL AFTER mailboxes;
+ALTER TABLE domain ADD transport VARCHAR(255) AFTER maxquota;
+ALTER TABLE domain ADD backupmx TINYINT(1) DEFAULT '0' NOT NULL AFTER transport;
+ALTER TABLE domain ADD INDEX (domain);
+
+#
+# Modify table structure for table mailbox
+#
+ALTER TABLE mailbox CHANGE create_date created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE mailbox CHANGE change_date modified DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL;
+ALTER TABLE mailbox ADD quota INT(10) DEFAULT '-1' NOT NULL AFTER maildir;
+ALTER TABLE mailbox ADD INDEX (username);
+
+#
+# Modify table structure for table vacation
+#
+ALTER TABLE vacation ADD domain VARCHAR(255) DEFAULT '' NOT NULL AFTER cache;
+ALTER TABLE vacation ADD created DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL AFTER domain;
+ALTER TABLE vacation ADD active TINYINT(1) DEFAULT '1' NOT NULL AFTER created;
+ALTER TABLE vacation DROP PRIMARY KEY, ADD PRIMARY KEY(email);
+
+#
+# Dumping data for table domain_admins
+#
+INSERT INTO domain_admins (username,domain,created) SELECT admin.username,admin.domain,domain.created FROM admin LEFT JOIN domain ON domain.domain=admin.domain;
+
+#
+# Modify data for table vacation
+#
+UPDATE vacation SET domain=SUBSTRING_INDEX(email, '@', -1) WHERE email=email;
+
+#
+# Modify table structure for table domain
+#
+ALTER TABLE admin DROP domain;
diff --git a/UPGRADE.TXT b/UPGRADE.TXT
new file mode 100644
index 0000000..610158f
--- /dev/null
+++ b/UPGRADE.TXT
@@ -0,0 +1,79 @@
+#
+# Postfix Admin
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+
+REQUIRED!!
+----------
+- You are using Postfix 2.0 or higher.
+- You are using Apache 1.3.27 or higher.
+- You are using PHP 4.1 or higher.
+- You are using MySQL 3.23 or higher.
+
+
+READ THIS FIRST!
+----------------
+It's recommened that you install Postfix Admin in a new folder and not
+on-top of the old install!!
+
+When you are upgrading from Postfix Admin 1.5x (or older), make sure you
+backup your database before you run the TABLE_CHANGES.TXT on your database.
+
+When you are upgrading from Postfix Admin 2.0.x, please read the BACKUP_MX.TXT.
+
+
+1. Backup the Database
+----------------------
+When you install from a previous version make sure you backup your database
+first. There are a lot of changes in the database structure since Postfix Admin
+1.5.4.
+
+ $ mysqldump -a -u root -p > /tmp/postfixadmin-backup.sql
+
+
+2. Unarchive new Postfix Admin
+------------------------------
+Make sure that you are in your WWW directory and then unarchive the
+Postfix Admin archive (whatever the filename is):
+
+ $ tar -zxvf postfixadmin-2.0.0.tgz
+
+
+3. Change permissions
+----------------------
+Since the database password is stored in the config.inc.php it's a good idea
+to have change the permissions for Postfix Admin.
+
+ $ cd /usr/local/www/postfixadmin-2.0.0
+ $ chmod 640 *.php *.css
+ $ cd /usr/local/www/postfixadmin-2.0.0/admin/
+ $ chmod 640 *.php .ht*
+ $ cd /usr/local/www/postfixadmin-2.0.0/images/
+ $ chmod 640 *.gif *.png
+ $ cd /usr/local/www/postfixadmin-2.0.0/languages/
+ $ chmod 640 *.lang
+ $ cd /usr/local/www/postfixadmin-2.0.0/templates/
+ $ chmod 640 *.tpl
+ $ cd /usr/local/www/postfixadmin-2.0.0/users/
+ $ chmod 640 *.php
+
+
+4. Modify the MySQL Tables
+--------------------------
+In TABLE_CHANGES.TXT or TABLE_BACKUP_MX.TXT you can find the table structure that you need in order
+to configure Postfix Admin 2.0.0 and Postfix in general to work with Virtual
+Domains and Users
+
+
+5. Configure
+------------
+Check the config.inc.php file. There you can specify settings that are
+relevant to your setup.
+
+
+6. Done
+-------
+This is all that is needed. Fire up your browser and go to the site that you
+specified to host Postfix Admin.
diff --git a/VIRTUAL_VACATION/FILTER_README b/VIRTUAL_VACATION/FILTER_README
new file mode 100644
index 0000000..e403b52
--- /dev/null
+++ b/VIRTUAL_VACATION/FILTER_README
@@ -0,0 +1,512 @@
+Introduction
+============
+
+This is a very first implementation of Postfix content filtering.
+A Postfix content filter receives unfiltered mail from Postfix and
+does one of the following:
+
+- re-injects the mail back into Postfix, perhaps after changing content
+- rejects the mail (by sending a suitable status code back to
+ Postfix) so that it is returned to sender.
+- sends the mail somewhere else
+
+This document describes two approaches to content filtering: simple
+and advanced. Both filter all the mail by default.
+
+At the end are examples that show how to filter only mail from
+users, about using different filters for different domains that
+you provide MX service for, and about selective filtering on the
+basis of message envelope and/or header/body patterns.
+
+Simple content filtering example
+================================
+
+The first example is simple to set up. It uses a shell script that
+receives unfiltered mail from the Postfix pipe delivery agent, and
+that feeds filtered mail back into the Postfix sendmail command.
+
+Only mail arriving via SMTP will be content filtered.
+
+ ..................................
+ : Postfix :
+Unfiltered mail----->smtpd \ /local---->Filtered mail
+ : -cleanup->queue- :
+ ---->pickup / \smtp----->Filtered mail
+ ^ : | :
+ | : \pipe-----+
+ | .................................. |
+ | |
+ | |
+ +-Postfix sendmail<----filter script<--+
+
+Mail is filtered by a /some/where/filter program. This can be a
+simple shell script like this:
+
+ #!/bin/sh
+
+ # Localize these.
+ INSPECT_DIR=/var/spool/filter
+ SENDMAIL="/usr/sbin/sendmail -i"
+
+ # Exit codes from <sysexits.h>
+ EX_TEMPFAIL=75
+ EX_UNAVAILABLE=69
+
+ # Clean up when done or when aborting.
+ trap "rm -f in.$$" 0 1 2 3 15
+
+ # Start processing.
+ cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; }
+
+ cat >in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
+
+ # filter <in.$$ || { echo Message content rejected; exit $EX_UNAVAILABLE; }
+
+ $SENDMAIL "$@" <in.$$
+
+ exit $?
+
+The idea is to first capture the message to file and then run the
+content through a third-party content filter program.
+
+- If the mail cannot be captured to file, mail delivery is deferred
+ by terminating with exit status 75 (EX_TEMPFAIL). Postfix will
+ try again after some delay.
+
+- If the content filter program finds a problem, the mail is bounced
+ by terminating with exit status 69 (EX_UNAVAILABLE). Postfix
+ will return the message to the sender as undeliverable.
+
+- If the content is OK, it is given as input to the Postfix sendmail
+ command, and the exit status of the filter command is whatever
+ exit status the Postfix sendmail command produces. Postfix will
+ deliver the message as usual.
+
+I suggest that you run this script by hand until you are satisfied
+with the results. Run it with a real message (headers+body) as
+input:
+
+ % /some/where/filter -f sender recipient... <message-file
+
+Once you're satisfied with the content filtering script:
+
+1 - Create a dedicated local user account called "filter". This
+ user handles all potentially dangerous mail content - that is
+ why it should be a separate account. Do not use "nobody", and
+ most certainly do not use "root" or "postfix". The user will
+ never log in, and can be given a "*" password and non-existent
+ shell and home directory.
+
+2 - Create a directory /var/spool/filter that is accessible only
+ to the "filter" user. This is where the content filtering script
+ is supposed to store its temporary files.
+
+3 - Define the content filter in the Postfix master file:
+
+ /etc/postfix/master.cf:
+ filter unix - n n - - pipe
+ flags=Rq user=filter argv=/somewhere/filter -f ${sender} -- ${recipient}
+
+To turn on content filtering for mail arriving via SMTP only, append
+"-o content_filter=filter:dummy" to the master.cf entry that defines
+the Postfix SMTP server:
+
+ /etc/postfix/master.cf:
+ smtp inet ...stuff... smtpd
+ -o content_filter=filter:dummy
+
+The content_filter configuration parameter accepts the same syntax
+as the right-hand side in a Postfix transport table. Execute
+"postfix reload" to complete the change.
+
+To turn off content filtering, edit the master.cf file, remove the
+"-o content_filter=filter:dummy" text from the entry that defines
+the Postfix SMTP server, and execute another "postfix reload".
+
+With the shell script as shown above you will lose a factor of four
+in Postfix performance for transit mail that arrives and leaves
+via SMTP. You will lose another factor in transit performance for
+each additional temporary file that is created and deleted in the
+process of content filtering. The performance impact is less for
+mail that is submitted or delivered locally, because such deliveries
+are already slower than SMTP transit mail.
+
+Simple content filter limitations
+=================================
+
+The problem with content filters like the one above is that they
+are not very robust. The reason is that the software does not talk
+a well-defined protocol with Postfix. If the filter shell script
+aborts because the shell runs into some memory allocation problem,
+the script will not produce a nice exit status as defined in the
+file /usr/include/sysexits.h. Instead of going to the deferred
+queue, mail will bounce. The same lack of robustness can happen
+when the content filtering software itself runs into a resource
+problem.
+
+Advanced content filtering example
+===================================
+
+The second example is more complex, but can give much better
+performance, and is less likely to bounce mail when the machine
+runs into a resource problem. This approach uses content filtering
+software that can receive and deliver mail via SMTP.
+
+Some Anti-virus software is built to receive and deliver mail via
+SMTP and is ready to use as an advanced Postfix content filter.
+For non-SMTP capable content filtering software, Bennett Todd's
+SMTP proxy implements a nice PERL/SMTP content filtering framework.
+See: http://bent.latency.net/smtpprox/
+
+The example given here filters all mail, including mail that arrives
+via SMTP and mail that is locally submitted via the Postfix sendmail
+command.
+
+You can expect to lose about a factor of two in Postfix performance
+for transit mail that arrives and leaves via SMTP, provided that
+the content filter creates no temporary files. Each temporary file
+created by the content filter adds another factor to the performance
+loss.
+
+We will set up a content filtering program that receives SMTP mail
+via localhost port 10025, and that submits SMTP mail back into
+Postfix via localhost port 10026.
+
+ ..................................
+ : Postfix :
+ ----->smtpd \ /local---->
+ : -cleanup->queue- :
+ ---->pickup / ^ | \smtp----->
+ : | v :
+ : smtpd smtp :
+ : 10026 | :
+ ......................|...........
+ ^ |
+ | v
+ ....|............
+ : | 10025 :
+ : filter :
+ : :
+ .................
+
+To enable content filtering in this manner, specify in main.cf a
+new parameter:
+
+ /etc/postfix/main.cf:
+ content_filter = scan:localhost:10025
+
+This causes Postfix to add one extra content filtering record to
+each incoming mail message, with content scan:localhost:10025.
+The content filtering records are added by the smtpd and pickup
+servers.
+
+When a queue file has content filtering information, the queue
+manager will deliver the mail to the specified content filter
+regardless of its final destination.
+
+In this example, "scan" is an instance of the Postfix SMTP client
+with slightly different configuration parameters. This is how
+one would set up the service in the Postfix master.cf file:
+
+ /etc/postfix/master.cf:
+ scan unix - - n - 10 smtp
+
+Instead of a limit of 10 concurrent processes, use whatever process
+limit is feasible for your machine. Content inspection software
+can gobble up a lot of system resources, so you don't want to have
+too much of it running at the same time.
+
+The content filter can be set up with the Postfix spawn service,
+which is the Postfix equivalent of inetd. For example, to instantiate
+up to 10 content filtering processes on demand:
+
+ /etc/postfix/master.cf:
+ localhost:10025 inet n n n - 10 spawn
+ user=filter argv=/some/where/filter localhost 10026
+
+"filter" is a dedicated local user account. The user will never
+log in, and can be given a "*" password and non-existent shell and
+home directory. This user handles all potentially dangerous mail
+content - that is why it should be a separate account.
+
+In the above example, Postfix listens on port localhost:10025. If
+you want to have your filter listening on port localhost:10025
+instead of Postfix, then you must run your filter as a stand-alone
+program.
+
+Note: the localhost port 10025 SMTP server filter should announce
+itself as "220 localhost...". Postfix aborts delivery when it
+connects to an SMTP server that uses the same hostname as Postfix
+("host <servername> greeted me with my own hostname"), because that
+normally means you have a mail delivery loop problem.
+
+The example here assumes that the /some/where/filter command is a
+PERL script. PERL has modules that make talking SMTP easy. The
+command-line specifies that mail should be sent back into Postfix
+via localhost port 10026.
+
+The simplest content filter just copies SMTP commands and data
+between its inputs and outputs. If it has a problem, all it has to
+do is to reply to an input of `.' with `550 content rejected', and
+to disconnect without sending `.' on the connection that injects
+mail back into Postfix.
+
+The job of the content filter is to either bounce mail with a
+suitable diagnostic, or to feed the mail back into Postfix through
+a dedicated listener on port localhost 10026:
+
+ /etc/postfix/master.cf:
+ localhost:10026 inet n - n - 10 smtpd
+ -o content_filter=
+ -o local_recipient_maps=
+ -o relay_recipient_maps=
+ -o myhostname=localhost.domain.tld
+ -o smtpd_helo_restrictions=
+ -o smtpd_client_restrictions=
+ -o smtpd_sender_restrictions=
+ -o smtpd_recipient_restrictions=permit_mynetworks,reject
+ -o mynetworks=127.0.0.0/8
+
+Warning for Postfix version 2 users: in this SMTP server after the
+content filter, do not override main.cf settings for virtual_alias_maps
+or virtual_alias_domains. That would cause mail to be rejected with
+"User unknown".
+
+This SMTP server has the same process limit as the "filter" master.cf
+entry.
+
+The "-o content_filter=" requests no content filtering for incoming
+mail.
+
+The "-o local_recipient_maps=" and "-o relay_recipient_maps=" avoid
+unnecessary table lookups.
+
+The "-o myhostname=localhost.domain.tld" avoids false alarms ("host
+<servername> greeted me with my own hostname") if your content
+filter is based on a proxy that simply relays SMTP commands.
+
+The "-o smtpd_xxx_restrictions" and "-o mynetworks=127.0.0.0/8"
+turn off UCE controls that would only waste time here.
+
+Squeezing out more performance
+==============================
+
+Many refinements are possible, such as running a specially-configured
+smtp delivery agent for feeding mail into the content filter, and
+turning off address rewriting before content filtering.
+
+As the example below shows, things quickly become very complex,
+because a lot of main.cf like information gets listed in the
+master.cf file. This makes the system hard to understand.
+
+Even worse, details change as Postfix evolves and different
+configuration parameters are implemented by different programs.
+
+If you need to squeeze out more performance, it is probably simpler
+to run multiple Postfix instances, one before and one after the
+content filter. That way, each instance can have simple main.cf
+and master.cf files, each instance can have its own mail queue,
+and the system will be easier to understand.
+
+As before, we will set up a content filtering program that receives
+SMTP mail via localhost port 10025, and that submits SMTP mail back
+into Postfix via localhost port 10026.
+
+ .......................................
+ : Postfix :
+ ----->smtpd \ :
+ : -pre-cleanup-\ /local---->
+ ---->pickup / -queue- :
+ : -cleanup-/ | \smtp----->
+ : bounces/ ^ v :
+ : and locally | v :
+ : forwarded smtpd scan :
+ : messages 10026 | :
+ ...........................|...........
+ ^ |
+ | v
+ ....|.............
+ : | 10025 :
+ : filter :
+ : :
+ ..................
+
+To enable content filtering in this manner, specify in main.cf a
+new parameter:
+
+/etc/postfix/main.cf:
+ content_filter = scan:localhost:10025
+
+/etc/postfix/master.cf:
+#
+# These are the usual input "smtpd" and local "pickup" servers already
+# present in master.cf. We add an option to select a non-default
+# cleanup service (defined further below).
+#
+smtp inet n - n - - smtpd
+ -o cleanup_service_name=pre-cleanup
+pickup fifo n - n 60 1 pickup
+ -o cleanup_service_name=pre-cleanup
+#
+# ------------------------------------------------------------------
+#
+# This is the cleanup daemon that handles messages in front of
+# the content filter. It does header_checks and body_checks (if
+# any), but does no virtual alias or canonical address mapping,
+# so that mail passes through your content filter with the original
+# recipient addresses mostly intact.
+#
+# Virtual alias or canonical address mapping happens in the second
+# cleanup phase after the content filter. This gives the content_filter
+# access to *largely* unmodified addresses for maximum flexibility.
+#
+# Some sites may specifically want to perform canonical or virtual
+# address mapping in front of the content_filter. In that case you
+# still have to enable address rewriting in the after-filter cleanup
+# instance, in order to correctly process forwarded mail or bounced
+# mail.
+#
+pre-cleanup unix n - n - 0 cleanup
+ -o canonical_maps=
+ -o sender_canonical_maps=
+ -o recipient_canonical_maps=
+ -o masquerade_domains=
+ -o virtual_alias_maps=
+#
+# ------------------------------------------------------------------
+#
+# This is the delivery agent that injects mail into the content
+# filter. It is tuned for low concurrency, because most content
+# filters burn CPU and use lots of memory. The process limit of 10
+# re-enforces the effect of $default_destination_concurrency_limit.
+# Even without an explicit process limit, the concurrency is bounded
+# because all messages heading into the content filter have the same
+# destination.
+#
+scan unix - - n - 10 smtp
+#
+# ------------------------------------------------------------------
+#
+# This is the SMTP listener that receives filtered messages from
+# the content filter. It *MUST* clear the content_filter
+# parameter to avoid loops, and use a different hostname to avoid
+# triggering the Postfix SMTP loop detection code.
+#
+# This "smtpd" uses the normal cleanup service which is also used
+# for bounces and for internally forwarded mail.
+#
+# The parameters from mynetworks onward disable all access
+# control other than insisting on connections from one of the IP
+# addresses of the host. This is typically overkill, but can
+# reduce resource usage, if the default restrictions use lots of
+# tables.
+#
+localhost:10026 inet n - n - - smtpd
+ -o content_filter=
+ -o myhostname=localhost.domain.tld
+ -o local_recipient_maps=
+ -o relay_recipient_maps=
+ -o mynetworks=127.0.0.0/8
+ -o mynetworks_style=host
+ -o smtpd_restriction_classes=
+ -o smtpd_client_restrictions=
+ -o smtpd_helo_restrictions=
+ -o smtpd_sender_restrictions=
+ -o smtpd_recipient_restrictions=permit_mynetworks,reject
+#
+# Do not override main.cf settings here for virtual_alias_maps or
+# virtual_mailbox_maps. This causes mail to be rejected with "User
+# unknown in virtual (alias|mailbox) recipient table".
+#
+# ------------------------------------------------------------------
+#
+# This is the normal cleanup daemon for use after content filtering.
+# No header or body checks, because those have already been taken
+# care of by the pre-cleanup service before the content filter.
+#
+# The normal cleanup instance does all the virtual alias and canonical
+# address mapping that was disabled in the pre-cleanup instance before
+# the content filter. This rewriting must be done even when you didn't
+# disable address rewriting in the pre-cleanup instance, in order to
+# correctly process bounces and locally forwarded mail.
+#
+cleanup unix n - n - 0 cleanup
+ -o header_checks=
+ -o mime_header_checks=
+ -o nested_header_checks=
+ -o body_checks=
+#
+# ------------------------------------------------------------------
+#
+# The normal "smtp" delivery agent for contrast with "scan".
+#
+smtp unix - - n - - smtp
+
+The above example causes Postfix to add one content filtering record
+to each incoming mail message, with content scan:localhost:10025.
+You can use the same syntax as in the right-hand side of a Postfix
+transport table. The content filtering records are added by the
+smtpd and pickup servers.
+
+The "scan" transport is a dedicated instance of the "smtp" delivery
+agent for injecting messages into the SMTP content filter. Using
+a dedicated "smtp" transport allows one to tune it for the specific
+task of delivering mail to a local content filter (low latency,
+low concurrency, throughput dependent on predictably low latency).
+
+See the previous example for setting up the content filter with
+the Postfix spawn service; you can of course use any server that
+can be run stand-alone outside the Postfix environment.
+
+Filtering mail from outside users only
+======================================
+
+The easiest approach is to configure ONE Postfix instance with TWO
+SMTP server addresses in master.cf:
+
+- One SMTP server address for inside users only that never invokes
+ content filtering.
+
+- One SMTP server address for outside users that always invokes
+ content filtering.
+
+/etc/postfix.master.cf:
+ # SMTP service for internal users only, no content filtering.
+ 1.2.3.4:smtp inet n - n - - smtpd
+ -o smtpd_client_restrictions=permit_mynetworks,reject
+ 127.0.0.1:smtp inet n - n - - smtpd
+ -o smtpd_client_restrictions=permit_mynetworks,reject
+
+ # SMTP service for external users, with content filtering.
+ 1.2.3.5:smtp inet n - n - - smtpd
+ -o content_filter=foo:bar
+
+Getting really nasty
+====================
+
+The above filtering configurations are static. Mail that follows
+a given path is either always filtered or it is never filtered. As
+of Postfix 2.0 you can also turn on content filtering on the fly.
+The Postfix UCE features allow you to specify a filtering action
+on the fly:
+
+ FILTER foo:bar
+
+You can do this in smtpd access maps as well as the cleanup server's
+header/body_checks. This feature must be used with great care:
+you must disable all the UCE features in the after-filter smtpd
+and cleanup daemons or else you will have a content filtering loop.
+
+Limitations:
+
+- There can be only one content filter action per message.
+
+- FILTER actions from smtpd access maps and header/body_checks take
+ precedence over filters specified with the main.cf content_filter
+ parameter.
+
+- Only the last FILTER action from smtpd access maps or from
+ header/body_checks takes effect.
+
+- The same content filter is applied to all the recipients of a
+ given message.
diff --git a/VIRTUAL_VACATION/INSTALL.TXT b/VIRTUAL_VACATION/INSTALL.TXT
new file mode 100644
index 0000000..c4f4a76
--- /dev/null
+++ b/VIRTUAL_VACATION/INSTALL.TXT
@@ -0,0 +1,147 @@
+##################################################
+# Virtual Vacation for Postfix Admin Release 2.x #
+##################################################
+#
+# Postfix Admin (Virtual Vacation)
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+# Modified by: Nicholas Paufler <npaufler at incentre dot net> (12/06/2004)
+#
+
+REQUIRED!
+---------
+You need to have the following installed to be able to use Virtual Vacation.
+- Perl5
+- Perl DBI
+- Perl DBD::mysql
+
+About Virtual Vacation
+----------------------
+Virual Vacation is today done with a local shell account that can receive
+email. The email is then handled by a Perl script which sends the Vacation
+message back to the sender.
+
+
+Install Virtual Vacation
+------------------------
+
+
+1. Create a local account
+-------------------------
+Create a dedicated local user account called "vacation".
+This user handles all potentially dangerous mail content - that is why it
+should be a separate account.
+
+Do not use "nobody", and most certainly do not use "root" or "postfix". The
+user will never log in, and can be given a "*" password and non-existent
+shell and home directory.
+
+This should look like this:
+
+#/etc/passwd
+vacation:*:65501:65501::0:0:Virtual Vacation:/nonexistent:/sbin/nologin
+
+#/etc/group
+vacation:*:65501:
+
+2. Create a directory
+---------------------
+Create a directory, for example /var/spool/vacation, that is accessible
+only to the "vacation" user. This is where the vacation script is supposed
+to store its temporary files.
+
+
+3. Copy the files
+-----------------
+
+Copy the vacation.pl file to the directory you created above:
+
+ $ cp vacation.pl <HOME>/vacation.pl
+ $ chown -R vacation:vacation <HOME>
+
+Which will then look something like:
+
+-rwx------ 1 vacation vacation 3356 Dec 21 00:00 vacation.pl*
+
+4. Setup the transport type
+--------------------
+Define the transport type in the Postfix master file:
+
+#/etc/postfix/master.cf:
+filter unix - n n - - pipe
+ flags=DRhu user=vacation argv=/var/spool/vacation/vacation.pl
+
+Tell Postfix to use a transport maps file, so add the following to your
+Postfix main.cf:
+
+#/etc/postfix/main.cf:
+transport_maps = hash:/etc/postfix/transport
+
+Then add the transport definition to the newly created transport file.
+Obviously, change yourdomain.com to your own domain. This can be any
+arbitrary domain, and it is easiest if you just choose one that will be used
+for all your domains.
+
+#/etc/postfix/transport
+autoreply.yourdomain.com vacation
+
+Execute "postmap /etc/postfix/transport" to build the hashed database.
+
+Execute "postfix reload" to complete the change.
+
+
+5. Create the table
+-------------------
+
+To use Virtual Vacation with Postfix Admin you need to create an extra table
+in the database that is used by Postfix Admin.
+
+USE postfix;
+#
+# Table structure for table vacation
+#
+CREATE TABLE vacation (
+ email varchar(255) NOT NULL default '',
+ subject varchar(255) NOT NULL default '',
+ body text NOT NULL,
+ cache text NOT NULL,
+ domain varchar(255) NOT NULL default '',
+ created datetime NOT NULL default '0000-00-00 00:00:00',
+ active tinyint(4) NOT NULL default '1',
+ PRIMARY KEY (email),
+ KEY email (email)
+) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Vacation';
+
+
+What do these files do?
+-----------------------
+When a user enables a vacation message on their account, the alias
+definition is changed so that in addition to delivering to their own
+mailbox, it also delivers to a dummy alias which calls the vacation.pl
+program. In other words, if joeuser@domain.com enables their vacation, the
+entry in the alias database table will deliver mail to
+joeuser@something.com, as well as
+joeuser@something.com@autoreply.yourdomain.com
+
+vacation.pl then checks the database to see wether a user is on holiday and
+what message to send back. Make sure that vacation.pl is able to communicate
+to your databse. In the first couple of lines you have to specify the
+database, username and password for it.
+NOTE: Make sure that the path to perl is correct.
+
+
+I'm in trouble!
+---------------
+When something is not working there are a couple of files that you can have
+a look at. The most important one is your maillog (usually in /var/log/).
+
+Vacation.pl also has some debugging and logging capabilties. Check the top
+of vacation.pl.
+
+
+Done!
+-----
+When this is all in place you need to have a look at the Postfix Admin
+config.inc.php. Here you need to enable Virtual Vacation for the site.
diff --git a/VIRTUAL_VACATION/index.php b/VIRTUAL_VACATION/index.php
new file mode 100644
index 0000000..673ed9e
--- /dev/null
+++ b/VIRTUAL_VACATION/index.php
@@ -0,0 +1,22 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: index.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+header ("Location: ../login.php");
+exit;
+?>
diff --git a/VIRTUAL_VACATION/mail-filter b/VIRTUAL_VACATION/mail-filter
new file mode 100755
index 0000000..5437354
--- /dev/null
+++ b/VIRTUAL_VACATION/mail-filter
@@ -0,0 +1,17 @@
+#!/bin/sh
+FILTER_DIR=/home/vacation
+SENDMAIL="/usr/sbin/sendmail -i"
+EX_TEMPFAIL=75
+EX_UNAVAILABLE=69
+
+trap "rm -f in.$$" 0 1 2 3 15
+
+cd $FILTER_DIR || { echo $FILTER_DIR does not exist; exit $EX_TEMPFAIL; }
+
+cat > in.$$ || { echo Cannot save mail to file; exit $EX_TEMPFAIL; }
+
+/home/vacation/vacation.pl < in.$$ || { echo Message content rejected; exit $EX_UNAVAILABLE; }
+
+$SENDMAIL "$@" < in.$$
+
+exit $?
diff --git a/VIRTUAL_VACATION/vacation.pl b/VIRTUAL_VACATION/vacation.pl
new file mode 100755
index 0000000..01539f8
--- /dev/null
+++ b/VIRTUAL_VACATION/vacation.pl
@@ -0,0 +1,219 @@
+#!/usr/bin/perl -w
+#
+# Virtual Vacation 3.1
+# by Mischa Peters <mischa at high5 dot net>
+# Copyright (c) 2002 - 2005 High5!
+# License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+#
+# Additions:
+# 2004/07/13 David Osborn <ossdev at daocon.com>
+# strict, processes domain level aliases, more
+# subroutines, send reply from original to address
+#
+# 2004/11/09 David Osborn <ossdev at daocon.com>
+# Added syslog support
+# Slightly better logging which includes messageid
+# Avoid infinite loops with domain aliases
+#
+use DBI;
+use strict;
+
+my $db_type = 'mysql';
+my $db_host = 'localhost';
+my $db_user = 'postfixadmin';
+my $db_pass = 'postfixadmin';
+my $db_name = 'postfix';
+my $sendmail = "/usr/sbin/sendmail";
+my $logfile = ""; # specify a file name here for example: vacation.log
+my $debugfile = ""; # sepcify a file name here for example: vacation.debug
+my $syslog = 0; # 1 if log entries should be sent to syslog
+
+my $dbh = DBI->connect("DBI:$db_type:$db_name:$db_host", "$db_user", "$db_pass", { RaiseError => 1 });
+
+# used to detect infinite address lookup loops
+my $loopcount=0;
+
+sub do_query {
+ my ($query) = @_;
+ my $sth = $dbh->prepare($query) or die "Can't prepare $query: $dbh->errstr\n";
+ $sth->execute or die "Can't execute the query: $sth->errstr";
+ return $sth;
+}
+
+sub do_debug {
+ my ($in1, $in2, $in3, $in4, $in5, $in6) = @_;
+ if ( $debugfile ) {
+ my $date;
+ open (DEBUG, ">> $debugfile") or die ("Unable to open debug file");
+ chop ($date = `date "+%Y/%m/%d %H:%M:%S"`);
+ print DEBUG "====== $date ======\n";
+ printf DEBUG "%s | %s | %s | %s | %s | %s\n", $in1, $in2, $in3, $in4, $in5, $in6;
+ close (DEBUG);
+ }
+}
+
+sub do_cache {
+ my ($to, $from) = @_;
+ my $query = qq{SELECT cache FROM vacation WHERE email='$to' AND FIND_IN_SET('$from',cache)};
+ my $sth = do_query ($query);
+ my $rv = $sth->rows;
+ if ($rv == 0) {
+ $query = qq{UPDATE vacation SET cache=CONCAT(cache,',','$from') WHERE email='$to'};
+ $sth = do_query ($query);
+ }
+ return $rv;
+}
+
+sub do_log {
+ my ($messageid, $to, $from, $subject) = @_;
+ my $date;
+ if ( $syslog ) {
+ open (SYSLOG, "|/usr/bin/logger -p mail.info -t Vacation") or die ("Unable to open logger");
+ printf SYSLOG "Orig-To: %s From: %s MessageID: %s Subject: %s", $to, $from, $messageid, $subject;
+ close (SYSLOG);
+ }
+ if ( $logfile ) {
+ open (LOG, ">> $logfile") or die ("Unable to open log file");
+ chop ($date = `date "+%Y/%m/%d %H:%M:%S"`);
+ print LOG "$date: To: $to From: $from Subject: $subject MessageID: $messageid \n";
+ close (LOG);
+ }
+}
+
+sub do_mail {
+ my ($from, $to, $subject, $body) = @_;
+ open (MAIL, "| $sendmail -t -f $from") or die ("Unable to open sendmail");
+ print MAIL "From: $from\n";
+ print MAIL "To: $to\n";
+ print MAIL "Subject: $subject\n";
+ print MAIL "X-Loop: Postfix Admin Virtual Vacation\n\n";
+ print MAIL "$body";
+ close (MAIL);
+}
+
+sub find_real_address {
+ my ($email) = @_;
+ if (++$loopcount > 20) {
+ do_log ("find_real_address loop!", "currently: $email", "ERROR", "ERROR");
+ print ("possible infinite loop in find_real_address for <$email>. Check for alias loop\n");
+ exit 1;
+ }
+ my $realemail;
+ my $query = qq{SELECT email FROM vacation WHERE email='$email' and active=1};
+ my $sth = do_query ($query);
+ my $rv = $sth->rows;
+
+ # Recipient has vacation
+ if ($rv == 1) {
+ $realemail = $email;
+
+ } else {
+ $query = qq{SELECT goto FROM alias WHERE address='$email'};
+ $sth = do_query ($query);
+ $rv = $sth->rows;
+
+ # Recipient is an alias, check if mailbox has vacation
+ if ($rv == 1) {
+ my @row = $sth->fetchrow_array;
+ my $alias = $row[0];
+ $query = qq{SELECT email FROM vacation WHERE email='$alias' and active=1};
+ $sth = do_query ($query);
+ $rv = $sth->rows;
+
+ # Alias has vacation
+ if ($rv == 1) {
+ $realemail = $alias;
+ }
+
+ # We still have to look for domain level aliases...
+ } else {
+ my ($user, $domain) = split(/@/, $email);
+ $query = qq{SELECT goto FROM alias WHERE address='\@$domain'};
+ $sth = do_query ($query);
+ $rv = $sth->rows;
+
+ # The receipient has a domain level alias
+ if ($rv == 1) {
+ my @row = $sth->fetchrow_array;
+ my $wildcard_dest = $row[0];
+ my ($wilduser, $wilddomain) = split(/@/, $wildcard_dest);
+
+ # Check domain alias
+ if ($wilduser) {
+ ($rv, $realemail) = find_real_address ($wildcard_dest);
+ } else {
+ my $new_email = $user . '@' . $wilddomain;
+ ($rv, $realemail) = find_real_address ($new_email);
+ }
+ }
+ }
+ }
+ return ($rv, $realemail);
+}
+
+sub send_vacation_email {
+ my ($email, $orig_subject, $orig_from, $orig_to, $orig_messageid) = @_;
+ my $query = qq{SELECT subject,body FROM vacation WHERE email='$email'};
+ my $sth = do_query ($query);
+ my $rv = $sth->rows;
+ if ($rv == 1) {
+ my @row = $sth->fetchrow_array;
+ if (do_cache ($email, $orig_from)) { return; }
+ do_debug ("[SEND RESPONSE] for $orig_messageid:\n", "FROM: $email (orig_to: $orig_to)\n", "TO: $orig_from\n", "SUBJECT: $orig_subject\n", "VACATION SUBJECT: $row[0]\n", "VACATION BODY: $row[1]\n");
+ do_mail ($orig_to, $orig_from, $row[0], $row[1]);
+ do_log ($orig_messageid, $orig_to, $orig_from, $orig_subject);
+ }
+
+}
+
+########################### main #################################
+
+my ($from, $to, $cc, $subject, $messageid);
+
+# Take headers apart
+while (<STDIN>) {
+ last if (/^$/);
+ if (/^from:\s+(.*)\n$/i) { $from = $1; }
+ if (/^to:\s+(.*)\n$/i) { $to = $1; }
+ if (/^cc:\s+(.*)\n$/i) { $cc = $1; }
+ if (/^subject:\s+(.*)\n$/i) { $subject = $1; }
+ if (/^message-id:\s+(.*)\n$/i) { $messageid = $1; }
+ if (/^precedence:\s+(bulk|list|junk)/i) { exit (0); }
+ if (/^x-loop:\s+postfix\ admin\ virtual\ vacation/i) { exit (0); }
+}
+
+# If either From: or To: are not set, exit
+if (!$from || !$to) { exit (0); }
+
+$from = lc ($from);
+
+# Check if it's an obvious sender, exit
+if ($from =~ /([\w\-.%]+\@[\w.-]+)/) { $from = $1; }
+if ($from eq "" || $from =~ /^owner-|-(request|owner)\@|^(mailer-daemon|postmaster)\@/i) { exit (0); }
+
+# Strip To: and Cc: and push them in array
+my @strip_cc_array;
+my @strip_to_array = split(/, */, lc ($to) );
+if (defined $cc) { @strip_cc_array = split(/, */, lc ($cc) ); }
+push (@strip_to_array, @strip_cc_array);
+
+my @search_array;
+
+# Strip email address from headers
+for (@strip_to_array) {
+ if ($_ =~ /([\w\-.%]+\@[\w.-]+)/) {
+ push (@search_array, $1);
+ do_debug ("[STRIP RECIPIENTS]: ", $messageid, $1, "-", "-", "-");
+ }
+}
+
+# Search for email address which has vacation
+for (@search_array) {
+ my ($rv, $email) = find_real_address ($_);
+ if ($rv == 1) {
+ do_debug ("[FOUND VACATION]: ", $messageid, $from, $to, $email, $subject);
+ send_vacation_email( $email, $subject, $from, $to, $messageid);
+ }
+}
+
+0;
diff --git a/admin/.htaccess b/admin/.htaccess
new file mode 100644
index 0000000..6ca3543
--- /dev/null
+++ b/admin/.htaccess
@@ -0,0 +1,8 @@
+AuthUserFile /usr/local/www/<domain.tld>/admin/.htpasswd
+AuthGroupFile /dev/null
+AuthName "Postfix Admin"
+AuthType Basic
+
+<limit GET POST>
+require valid-user
+</limit>
diff --git a/admin/.htpasswd b/admin/.htpasswd
new file mode 100644
index 0000000..99cab86
--- /dev/null
+++ b/admin/.htpasswd
@@ -0,0 +1 @@
+admin:$apr1$5ip4S/..$cmAmYFlZa1gLHGwFFw2.G0
diff --git a/admin/backup.php b/admin/backup.php
new file mode 100644
index 0000000..6b20ef3
--- /dev/null
+++ b/admin/backup.php
@@ -0,0 +1,88 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: backup.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ umask (077);
+ $path = "/tmp/";
+ $filename = "postfixadmin-" . date ("Ymd") . "-" . getmypid() . ".sql";
+ $backup = $path . $filename;
+
+ $header = "#\n# Postfix Admin $version\n# Date: " . date ("D M j G:i:s T Y") . "\n#\n";
+
+ if (!$fh = fopen ($backup, 'w'))
+ {
+ $tMessage = "<div class=\"error_msg\">Cannot open file ($backup)</div>";
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+ }
+ else
+ {
+ fwrite ($fh, $header);
+
+ $tables = array('admin','alias','domain','domain_admins','log','mailbox','vacation');
+
+ for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
+ {
+ $result = db_query ("SHOW CREATE TABLE $tables[$i]");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ fwrite ($fh, "$row[1]\n\n");
+ }
+ }
+ }
+
+ for ($i = 0 ; $i < sizeof ($tables) ; ++$i)
+ {
+ $result = db_query ("SELECT * FROM $tables[$i]");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_assoc ($result['result']))
+ {
+ foreach ($row as $key=>$val)
+ {
+ $fields[] = $key;
+ $values[] = $val;
+ }
+
+ fwrite ($fh, "INSERT INTO ". $tables[$i] . " (". implode (',',$fields) . ") VALUES ('" . implode ('\',\'',$values) . "')\n");
+ $fields = "";
+ $values = "";
+ }
+ }
+ }
+ }
+ header ("Content-Type: application/octet-stream");
+ header ("Content-Disposition: attachment; filename=\"$filename\"");
+ header ("Content-Transfer-Encoding: binary");
+ header ("Content-Length: " . filesize("$backup"));
+ header ("Content-Description: Postfix Admin");
+ $download_backup = fopen ("$backup", "r");
+ unlink ("$backup");
+ fpassthru ($download_backup);
+}
+?>
diff --git a/admin/create-admin.php b/admin/create-admin.php
new file mode 100644
index 0000000..8cf3e99
--- /dev/null
+++ b/admin/create-admin.php
@@ -0,0 +1,106 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-admin.php
+//
+// Template File: admin_create-admin.tpl
+//
+//
+// Template Variables:
+//
+// tMessage
+// tUsername
+// tDomains
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fPassword
+// fPassword2
+// fDomains
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_domains = list_domains ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $pAdminCreate_admin_username_text = $PALANG['pAdminCreate_admin_username_text'];
+ $tDomains = array ();
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_create-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $fUsername = escape_string ($_POST['fUsername']);
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ if (!empty ($_POST['fDomains'])) $fDomains = $_POST['fDomains'];
+
+ if (!check_email ($fUsername))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ if (isset ($_POST['fDomains'])) $tDomains = $_POST['fDomains'];
+ $pAdminCreate_admin_username_text = $PALANG['pAdminCreate_admin_username_text_error1'];
+ }
+
+ if (empty ($fUsername) or admin_exist ($fUsername))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ if (isset ($_POST['fDomains'])) $tDomains = $_POST['fDomains'];
+ $pAdminCreate_admin_username_text = $PALANG['pAdminCreate_admin_username_text_error2'];
+ }
+
+ if (empty ($fPassword) or ($fPassword != $fPassword2))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ if (isset ($_POST['fDomains'])) $tDomains = $_POST['fDomains'];
+ $pAdminCreate_admin_username_text = $PALANG['pAdminCreate_admin_username_text'];
+ $pAdminCreate_admin_password_text = $PALANG['pAdminCreate_admin_password_text_error'];
+ }
+
+ if ($error != 1)
+ {
+ $password = pacrypt("$fPassword");
+ $pAdminCreate_admin_username_text = $PALANG['pAdminCreate_admin_username_text'];
+
+
+ $result = db_query ("INSERT INTO admin (username,password,created,modified) VALUES ('$fUsername','$password',NOW(),NOW())");
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pAdminCreate_admin_result_error'] . "<br />($fUsername)<br />";
+ }
+ else
+ {
+ if (!empty ($fDomains[0]))
+ {
+ for ($i = 0; $i < sizeof ($fDomains); $i++)
+ {
+ $domain = $fDomains[$i];
+ $result = db_query ("INSERT INTO domain_admins (username,domain,created) VALUES ('$fUsername','$domain',NOW())");
+ }
+ }
+ $tMessage = $PALANG['pAdminCreate_admin_result_succes'] . "<br />($fUsername)</br />";
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_create-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/create-alias.php b/admin/create-alias.php
new file mode 100644
index 0000000..7af8b77
--- /dev/null
+++ b/admin/create-alias.php
@@ -0,0 +1,122 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-alias.php
+//
+// Template File: create-alias.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tAddress
+// tGoto
+// tDomain
+//
+// Form POST \ GET Variables:
+//
+// fAddress
+// fGoto
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_domains = list_domains ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
+
+ if (isset ($_GET['domain'])) $tDomain = escape_string ($_GET['domain']);
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/create-alias.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
+
+ $fAddress = escape_string ($_POST['fAddress']) . "@" . escape_string ($_POST['fDomain']);
+ $fAddress = strtolower ($fAddress);
+ $fGoto = escape_string ($_POST['fGoto']);
+ $fGoto = strtolower ($fGoto);
+ $fDomain = escape_string ($_POST['fDomain']);
+
+ if (!preg_match ('/@/',$fGoto))
+ {
+ $fGoto = $fGoto . "@" . escape_string ($_POST['fDomain']);
+ }
+
+ if (!check_alias ($fDomain))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error3'];
+ }
+
+ if (empty ($fAddress) or !check_email ($fAddress))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error1'];
+ }
+
+ if (empty ($fGoto) or !check_email ($fGoto))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text_error'];
+ }
+
+ if (escape_string ($_POST['fAddress']) == "*") $fAddress = "@" . escape_string ($_POST['fDomain']);
+
+ $result = db_query ("SELECT * FROM alias WHERE address='$fAddress'");
+ if ($result['rows'] == 1)
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error2'];
+ }
+
+ if ($error != 1)
+ {
+ if (preg_match ('/^\*@(.*)$/', $fGoto, $match)) $fGoto = "@" . $match[1];
+
+ $result = db_query ("INSERT INTO alias (address,goto,domain,created,modified) VALUES ('$fAddress','$fGoto','$fDomain',NOW(),NOW())");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_alias_result_error'] . "<br />($fAddress -> $fGoto)<br />";
+ }
+ else
+ {
+ db_log ($CONF['admin_email'], $fDomain, "create alias", "$fAddress -> $fGoto");
+
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_alias_result_succes'] . "<br />($fAddress -> $fGoto)</br />";
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/create-alias.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/create-domain.php b/admin/create-domain.php
new file mode 100644
index 0000000..abe15d5
--- /dev/null
+++ b/admin/create-domain.php
@@ -0,0 +1,115 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-domain.php
+//
+// Template File: admin_create-domain.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tDomain
+// tDescription
+// tAliases
+// tMailboxes
+// tMaxquota
+// tDefaultaliases
+//
+// Form POST \ GET Variables:
+//
+// fDomain
+// fDescription
+// fAliases
+// fMailboxes
+// fMaxquota
+// fDefaultaliases
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $tAliases = $CONF['aliases'];
+ $tMailboxes = $CONF['mailboxes'];
+ $tMaxquota = $CONF['maxquota'];
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_create-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $fDomain = escape_string ($_POST['fDomain']);
+ !empty ($_POST['fDescription']) ? $fDescription = escape_string ($_POST['fDescription']) : $fDescription = "No Description";
+ $fAliases = escape_string ($_POST['fAliases']);
+ $fMailboxes = escape_string ($_POST['fMailboxes']);
+ !empty ($_POST['fMaxquota']) ? $fMaxquota = escape_string ($_POST['fMaxquota']) : $fMaxquota = "0";
+ !empty ($_POST['fTransport']) ? $fTransport = escape_string ($_POST['fTransport']) : $fTransport = "virtual";
+ if (isset ($_POST['fDefaultaliases'])) $fDefaultaliases = escape_string ($_POST['fDefaultaliases']);
+ isset ($_POST['fBackupmx']) ? $fBackupmx = escape_string ($_POST['fBackupmx']) : $fBackupmx = "0";
+
+ if (empty ($fDomain) or domain_exist ($fDomain))
+ {
+ $error = 1;
+ $tDomain = escape_string ($_POST['fDomain']);
+ $tDescription = escape_string ($_POST['fDescription']);
+ $tAliases = escape_string ($_POST['fAliases']);
+ $tMailboxes = escape_string ($_POST['fMailboxes']);
+ if (isset ($_POST['fMaxquota'])) $tMaxquota = escape_string ($_POST['fMaxquota']);
+ if (isset ($_POST['fTransport'])) $tTransport = escape_string ($_POST['fTransport']);
+ if (isset ($_POST['fDefaultaliases'])) $tDefaultaliases = escape_string ($_POST['fDefaultaliases']);
+ if (isset ($_POST['fBackupmx'])) $tBackupmx = escape_string ($_POST['fBackupmx']);
+ $pAdminCreate_domain_domain_text = $PALANG['pAdminCreate_domain_domain_text_error'];
+ }
+
+ if ($error != 1)
+ {
+ $tAliases = $CONF['aliases'];
+ $tMailboxes = $CONF['mailboxes'];
+ $tMaxquota = $CONF['maxquota'];
+
+ if ($fBackupmx == "on")
+ {
+ $fAliases = -1;
+ $fMailboxes = -1;
+ $fMaxquota = -1;
+ $fBackupmx = 1;
+ }
+ else
+ {
+ $fBackupmx = 0;
+ }
+
+ $result = db_query ("INSERT INTO domain (domain,description,aliases,mailboxes,maxquota,transport,backupmx,created,modified) VALUES ('$fDomain','$fDescription',$fAliases,$fMailboxes,$fMaxquota,'$fTransport',$fBackupmx,NOW(),NOW())");
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pAdminCreate_domain_result_error'] . "<br />($fDomain)<br />";
+ }
+ else
+ {
+ if ($fDefaultaliases == "on")
+ {
+ foreach ($CONF['default_aliases'] as $address=>$goto)
+ {
+ $address = $address . "@" . $fDomain;
+ $result = db_query ("INSERT INTO alias (address,goto,domain,created,modified) VALUES ('$address','$goto','$fDomain',NOW(),NOW())");
+ }
+ }
+ $tMessage = $PALANG['pAdminCreate_domain_result_succes'] . "<br />($fDomain)</br />";
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_create-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/create-mailbox.php b/admin/create-mailbox.php
new file mode 100644
index 0000000..4d3d7a3
--- /dev/null
+++ b/admin/create-mailbox.php
@@ -0,0 +1,239 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-mailbox.php
+//
+// Template File: create-mailbox.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tUsername
+// tName
+// tQuota
+// tDomain
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fPassword
+// fPassword2
+// fName
+// fQuota
+// fDomain
+// fActive
+// fMail
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_domains = list_domains ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $tQuota = $CONF['maxquota'];
+
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text'];
+ $pCreate_mailbox_name_text = $PALANG['pCreate_mailbox_name_text'];
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text'];
+
+ if (isset ($_GET['domain'])) $tDomain = escape_string ($_GET['domain']);
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/create-mailbox.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text'];
+ $pCreate_mailbox_name_text = $PALANG['pCreate_mailbox_name_text'];
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text'];
+
+ $fUsername = escape_string ($_POST['fUsername']) . "@" . escape_string ($_POST['fDomain']);
+ $fUsername = strtolower ($fUsername);
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ isset ($_POST['fName']) ? $fName = escape_string ($_POST['fName']) : $fName = "No Name";
+ $fDomain = escape_string ($_POST['fDomain']);
+ isset ($_POST['fQuota']) ? $fQuota = escape_string ($_POST['fQuota']) : $fQuota = "0";
+ isset ($_POST['fActive']) ? $fActive = escape_string ($_POST['fActive']) : $fActive = "1";
+ if (isset ($_POST['fMail'])) $fMail = escape_string ($_POST['fMail']);
+
+ if (!check_mailbox ($fDomain))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error3'];
+ }
+
+ if (empty ($fUsername) or !check_email ($fUsername))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error1'];
+ }
+
+ if (empty ($fPassword) or ($fPassword != $fPassword2))
+ {
+ if ($CONF['generate_password'] == "YES")
+ {
+ $fPassword = generate_password ();
+ }
+ else
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text_error'];
+ }
+ }
+
+ if ($CONF['quota'] == "YES")
+ {
+ if (!check_quota ($fQuota, $fDomain))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text_error'];
+ }
+ }
+
+ $result = db_query ("SELECT * FROM alias WHERE address='$fUsername'");
+ if ($result['rows'] == 1)
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error2'];
+ }
+
+ if ($error != 1)
+ {
+ $password = pacrypt ($fPassword);
+
+ if ($CONF['domain_path'] == "YES")
+ {
+ if ($CONF['domain_in_mailbox'] == "YES")
+ {
+ $maildir = $fDomain . "/" . $fUsername . "/";
+ }
+ else
+ {
+ $maildir = $fDomain . "/" . escape_string ($_POST['fUsername']) . "/";
+ }
+ }
+ else
+ {
+ $maildir = $fUsername . "/";
+ }
+
+ if (!empty ($fQuota))
+ {
+ $quota = $fQuota * $CONF['quota_multiplier'];
+ }
+ else
+ {
+ $quota = 0;
+ }
+
+ if ($fActive == "on")
+ {
+ $fActive = 1;
+ }
+ else
+ {
+ $fActive = 0;
+ }
+
+ $result = db_query ("INSERT INTO alias (address,goto,domain,created,modified,active) VALUES ('$fUsername','$fUsername','$fDomain',NOW(),NOW(),'$fActive')");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pAlias_result_error'] . "<br />($fUsername -> $fUsername)</br />";
+ }
+
+ $result = db_query ("INSERT INTO mailbox (username,password,name,maildir,quota,domain,created,modified,active) VALUES ('$fUsername','$password','$fName','$maildir','$quota','$fDomain',NOW(),NOW(),'$fActive')");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage .= $PALANG['pCreate_mailbox_result_error'] . "<br />($fUsername)<br />";
+ }
+ else
+ {
+
+ db_log ($CONF['admin_email'], $fDomain, "create mailbox", $fUsername);
+
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_mailbox_result_succes'] . "<br />($fUsername";
+ if ($CONF['generate_password'] == "YES")
+ {
+ $tMessage .= " / $fPassword)</br />";
+ }
+ else
+ {
+ $tMessage .= ")</br />";
+ }
+
+
+ $tQuota = $CONF['maxquota'];
+
+ if ($fMail == "on")
+ {
+ $fTo = $fUsername;
+ $fFrom = $CONF['admin_email'];
+ $fHeaders = "To: " . $fTo . "\n";
+ $fHeaders .= "From: " . $fFrom . "\n";
+
+ if (!empty ($PALANG['charset']))
+ {
+ $fHeaders .= "Subject: " . encode_header ($PALANG['pSendmail_subject_text'], $PALANG['charset']) . "\n";
+ $fHeaders .= "MIME-Version: 1.0\n";
+ $fHeaders .= "Content-Type: text/plain; charset=" . $PALANG['charset'] . "\n";
+ $fHeaders .= "Content-Transfer-Encoding: 8bit\n";
+ }
+ else
+ {
+ $fHeaders .= "Subject: " . $PALANG['pSendmail_subject_text'] . "\n\n";
+ }
+
+ $fHeaders .= $CONF['welcome_text'];
+
+ if (!smtp_mail ($fTo, $fFrom, $fHeaders))
+ {
+ $tMessage .= "<br />" . $PALANG['pSendmail_result_error'] . "<br />";
+ }
+ else
+ {
+ $tMessage .= "<br />" . $PALANG['pSendmail_result_succes'] . "<br />";
+ }
+ }
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/create-mailbox.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/delete.php b/admin/delete.php
new file mode 100644
index 0000000..5b38cde
--- /dev/null
+++ b/admin/delete.php
@@ -0,0 +1,130 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: delete.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fTable
+// fWhere
+// fDelete
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['table'])) $fTable = escape_string ($_GET['table']);
+ if (isset ($_GET['where'])) $fWhere = escape_string ($_GET['where']);
+ if (isset ($_GET['delete'])) $fDelete = escape_string ($_GET['delete']);
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+
+ if (empty ($fTable))
+ {
+ $error = 1;
+ }
+
+ if ($fTable == "domain")
+ {
+ $result_domain = db_delete ("domain",$fWhere,$fDelete);
+ $result_domain_admins = db_delete ("domain_admins",$fWhere,$fDelete);
+ $result_alias = db_delete ("alias",$fWhere,$fDelete);
+ $result_mailbox = db_delete ("mailbox",$fWhere,$fDelete);
+ $result_log = db_delete ("log",$fWhere,$fDelete);
+ if ($CONF['vacation'] == "YES")
+ {
+ $result_vacation = db_delete ("vacation",$fWhere,$fDelete);
+ }
+
+ if (!($result_domain == 1) and ($result_domain_admins >= 0) and ($result_alias >= 0) and ($result_mailbox >= 0) and ($result_vacation >= 0))
+ {
+ $error = 1;
+ $tMessage = $PALANG['pAdminDelete_domain_error'];
+ }
+ else
+ {
+ $url = "list-domain.php";
+ }
+ }
+
+ if ($fTable == "admin")
+ {
+ $result_admin = db_delete ("admin",$fWhere,$fDelete);
+ $result_domain_admins = db_delete ("domain_admins",$fWhere,$fDelete);
+
+ if (!($result_admin == 1) and ($result_domain_admins >= 0))
+ {
+ $error = 1;
+ $tMessage = $PALANG['pAdminDelete_admin_error'];
+ }
+ else
+ {
+ $url = "list-admin.php";
+ }
+ }
+
+ if ($fTable == "alias" or $fTable == "mailbox")
+ {
+ $result = db_query ("DELETE FROM alias WHERE address='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pDelete_delete_error'] . "<b>$fDelete</b> (alias)!</div>";
+ }
+ else
+ {
+ $url = "list-virtual.php?domain=$fDomain";
+ db_log ($CONF['admin_email'], $fDomain, "delete alias", $fDelete);
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $result = db_query ("DELETE FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pDelete_delete_error'] . "<b>$fDelete</b> (mailbox)!</div>";
+ }
+ else
+ {
+ $url = "list-virtual.php?domain=$fDomain";
+ db_query ("DELETE FROM vacation WHERE email='$fDelete' AND domain='$fDomain'");
+ db_log ($CONF['admin_email'], $fDomain, "delete mailbox", $fDelete);
+ }
+ }
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: $url");
+ exit;
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-active-admin.php b/admin/edit-active-admin.php
new file mode 100644
index 0000000..5f62522
--- /dev/null
+++ b/admin/edit-active-admin.php
@@ -0,0 +1,55 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-active.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['username'])) $fUsername = escape_string ($_GET['username']);
+
+ $result = db_query ("UPDATE admin SET active=1-active WHERE username='$fUsername'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pAdminEdit_admin_result_error'];
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: list-admin.php");
+ exit;
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-active-domain.php b/admin/edit-active-domain.php
new file mode 100644
index 0000000..c673768
--- /dev/null
+++ b/admin/edit-active-domain.php
@@ -0,0 +1,55 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-active.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+
+ $result = db_query ("UPDATE domain SET active=1-active WHERE domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pAdminEdit_domain_result_error'];
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: list-domain.php");
+ exit;
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-active.php b/admin/edit-active.php
new file mode 100644
index 0000000..2625d5d
--- /dev/null
+++ b/admin/edit-active.php
@@ -0,0 +1,61 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-active.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['username'])) $fUsername = escape_string ($_GET['username']);
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+
+ $result = db_query ("UPDATE mailbox SET active=1-active WHERE username='$fUsername' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pEdit_mailbox_result_error'];
+ }
+ else
+ {
+ db_log ($CONF['admin_email'], $fDomain, "edit active", $fUsername);
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: list-virtual.php?domain=$fDomain");
+ exit;
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/message.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-admin.php b/admin/edit-admin.php
new file mode 100644
index 0000000..2538e7d
--- /dev/null
+++ b/admin/edit-admin.php
@@ -0,0 +1,121 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-admin.php
+//
+// Template File: admin_edit-admin.tpl
+//
+// Template Variables:
+//
+// tDescription
+// tAliases
+// tMailboxes
+// tMaxquota
+// tActive
+//
+// Form POST \ GET Variables:
+//
+// fDescription
+// fAliases
+// fMailboxes
+// fMaxquota
+// fActive
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $username = escape_string ($_GET['username']);
+
+ $list_domains = list_domains ();
+ $tDomains = list_domains_for_admin ($username);
+
+ $result = db_query ("SELECT * FROM admin WHERE username='$username'");
+ if ($result['rows'] == 1)
+ {
+ $row = db_array ($result['result']);
+ $tActive = $row['active'];
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_edit-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $username = escape_string ($_GET['username']);
+
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ $fActive = escape_string ($_POST['fActive']);
+ if (isset ($_POST['fDomains'])) $fDomains = $_POST['fDomains'];
+
+
+ $list_domains = list_domains ();
+
+ if ($fPassword != $fPassword2)
+ {
+ $error = 1;
+ $tActive = escape_string ($_POST['fActive']);
+ $tDomains = escape_string ($_POST['fDomains']);
+ $pAdminEdit_admin_password_text = $PALANG['pAdminEdit_admin_password_text_error'];
+ }
+
+ if ($error != 1)
+ {
+
+ if (empty ($fPassword) and empty ($fPassword2))
+ {
+ if ($fActive == "on") $fActive = 1;
+ $result = db_query ("UPDATE admin SET modified=NOW(),active='$fActive' WHERE username='$username'");
+ }
+ else
+ {
+ $password = pacrypt ($fPassword);
+ if ($fActive == "on") $fActive = 1;
+ $result = db_query ("UPDATE admin SET password='$password',modified=NOW(),active='$fActive' WHERE username='$username'");
+ }
+
+ if (sizeof ($fDomains) > 0)
+ {
+ for ($i = 0; $i < sizeof ($fDomains); $i++)
+ {
+ $domain = $fDomains[$i];
+ $result_domains = db_query ("INSERT INTO domain_admins (username,domain,created) VALUES ('$username','$domain',NOW())");
+ }
+ }
+
+ if ($result['rows'] == 1)
+ {
+ if (isset ($fDomains[0]))
+ {
+ $result = db_query ("DELETE FROM domain_admins WHERE username='$username'");
+ for ($i = 0; $i < sizeof ($fDomains); $i++)
+ {
+ $domain = $fDomains[$i];
+ $result = db_query ("INSERT INTO domain_admins (username,domain,created) VALUES ('$username','$domain',NOW())");
+ }
+ }
+ header ("Location: list-admin.php");
+ }
+ else
+ {
+ $tMessage = $PALANG['pAdminEdit_admin_result_error'];
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_edit-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-alias.php b/admin/edit-alias.php
new file mode 100644
index 0000000..56d9871
--- /dev/null
+++ b/admin/edit-alias.php
@@ -0,0 +1,105 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-alias.php
+//
+// Template File: edit-alias.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tGoto
+//
+// Form POST \ GET Variables:
+//
+// fAddress
+// fDomain
+// fGoto
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $fAddress = escape_string ($_GET['address']);
+ $fDomain = escape_string ($_GET['domain']);
+
+ $result = db_query ("SELECT * FROM alias WHERE address='$fAddress' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $row = db_array ($result['result']);
+ $tGoto = $row['goto'];
+ }
+ else
+ {
+ $tMessage = $PALANG['pEdit_alias_address_error'];
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/edit-alias.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pEdit_alias_goto = $PALANG['pEdit_alias_goto'];
+
+ $fAddress = escape_string ($_GET['address']);
+ $fAddress = strtolower ($fAddress);
+ $fDomain = escape_string ($_GET['domain']);
+ $fGoto = escape_string ($_POST['fGoto']);
+ $fGoto = strtolower ($fGoto);
+
+ if (empty ($fGoto))
+ {
+ $error = 1;
+ $tGoto = $fGoto;
+ $tMessage = $PALANG['pEdit_alias_goto_text_error1'];
+ }
+
+ $goto = preg_replace ('/\\\r\\\n/', ',', $fGoto);
+ $goto = preg_replace ('/\r\n/', ',', $goto);
+ $goto = preg_replace ('/[\s]+/i', '', $goto);
+ $goto = preg_replace ('/\,*$/', '', $goto);
+ $array = preg_split ('/,/', $goto);
+
+ for ($i = 0; $i < sizeof ($array); $i++) {
+ if (in_array ("$array[$i]", $CONF['default_aliases'])) continue;
+ if (empty ($array[$i])) continue;
+ if (!check_email ($array[$i]))
+ {
+ $error = 1;
+ $tGoto = $goto;
+ $tMessage = $PALANG['pEdit_alias_goto_text_error2'] . "$array[$i]</div>";
+ }
+ }
+
+ if ($error != 1)
+ {
+ $result = db_query ("UPDATE alias SET goto='$goto',modified=NOW() WHERE address='$fAddress' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pEdit_alias_result_error'];
+ }
+ else
+ {
+ db_log ($CONF['admin_email'], $fDomain, "edit alias", "$fAddress -> $goto");
+
+ header ("Location: list-virtual.php?domain=$fDomain");
+ exit;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/edit-alias.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-domain.php b/admin/edit-domain.php
new file mode 100644
index 0000000..2e2dbac
--- /dev/null
+++ b/admin/edit-domain.php
@@ -0,0 +1,93 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-domain.php
+//
+// Template File: admin_edit-domain.tpl
+//
+// Template Variables:
+//
+// tDescription
+// tAliases
+// tMailboxes
+// tMaxquota
+// tActive
+//
+// Form POST \ GET Variables:
+//
+// fDescription
+// fAliases
+// fMailboxes
+// fMaxquota
+// fActive
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $domain = escape_string ($_GET['domain']);
+ $domain_properties = get_domain_properties ($domain);
+
+ $tDescription = $domain_properties['description'];
+ $tAliases = $domain_properties['aliases'];
+ $tMailboxes = $domain_properties['mailboxes'];
+ $tMaxquota = $domain_properties['maxquota'];
+ $tTransport = $domain_properties['transport'];
+ $tBackupmx = $domain_properties['backupmx'];
+ $tActive = $domain_properties['active'];
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_edit-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $domain = escape_string ($_GET['domain']);
+
+ $fDescription = escape_string ($_POST['fDescription']);
+ $fAliases = escape_string ($_POST['fAliases']);
+ $fMailboxes = escape_string ($_POST['fMailboxes']);
+ if (isset ($_POST['fMaxquota'])) $fMaxquota = escape_string ($_POST['fMaxquota']);
+ if (isset ($_POST['fTransport'])) $fTransport = escape_string ($_POST['fTransport']);
+ if (isset ($_POST['fBackupmx'])) $fBackupmx = escape_string ($_POST['fBackupmx']);
+ if (isset ($_POST['fActive'])) $fActive = escape_string ($_POST['fActive']);
+
+ if ($fBackupmx == "on")
+ {
+ $fAliases = -1;
+ $fMailboxes = -1;
+ $fMaxquota = -1;
+ $fBackupmx = 1;
+ }
+ else
+ {
+ $fBackupmx = 0;
+ }
+
+ if ($fActive == "on") { $fActive = 1; }
+
+ $result = db_query ("UPDATE domain SET description='$fDescription',aliases='$fAliases',mailboxes='$fMailboxes',maxquota='$fMaxquota',transport='$fTransport',backupmx='$fBackupmx',active='$fActive',modified=NOW() WHERE domain='$domain'");
+ if ($result['rows'] == 1)
+ {
+ header ("Location: list-domain.php");
+ }
+ else
+ {
+ $tMessage = $PALANG['pAdminEdit_domain_result_error'];
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_edit-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/edit-mailbox.php b/admin/edit-mailbox.php
new file mode 100644
index 0000000..d712b13
--- /dev/null
+++ b/admin/edit-mailbox.php
@@ -0,0 +1,141 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-mailbox.php
+//
+// Template File: edit-mailbox.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tName
+// tQuota
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fDomain
+// fPassword
+// fPassword2
+// fName
+// fQuota
+// fActive
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $fUsername = escape_string ($_GET['username']);
+ $fDomain = escape_string ($_GET['domain']);
+
+ $result = db_query ("SELECT * FROM mailbox WHERE username='$fUsername' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $row = db_array ($result['result']);
+ $tName = $row['name'];
+ $tQuota = $row['quota'] / $CONF['quota_multiplier'];
+ $tActive = $row['active'];
+ }
+ else
+ {
+ $tMessage = $PALANG['pEdit_mailbox_login_error'];
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/edit-mailbox.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pEdit_mailbox_password_text = $PALANG['pEdit_mailbox_password_text_error'];
+ $pEdit_mailbox_quota_text = $PALANG['pEdit_mailbox_quota_text'];
+
+ $fUsername = escape_string ($_GET['username']);
+ $fUsername = strtolower ($fUsername);
+ $fDomain = escape_string ($_GET['domain']);
+
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ $fName = escape_string ($_POST['fName']);
+ if (isset ($_POST['fQuota'])) $fQuota = escape_string ($_POST['fQuota']);
+ if (isset ($_POST['fActive'])) $fActive = escape_string ($_POST['fActive']);
+
+ if ($fPassword != $fPassword2)
+ {
+ $error = 1;
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tActive = $fActive;
+ $pEdit_mailbox_password_text = $PALANG['pEdit_mailbox_password_text_error'];
+ }
+
+ if ($CONF['quota'] == "YES")
+ {
+ if (!check_quota ($fQuota, $fDomain))
+ {
+ $error = 1;
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tActive = $fActive;
+ $pEdit_mailbox_quota_text = $PALANG['pEdit_mailbox_quota_text_error'];
+ }
+ }
+
+ if ($error != 1)
+ {
+ if (!empty ($fQuota))
+ {
+ $quota = $fQuota * $CONF['quota_multiplier'];
+ }
+ else
+ {
+ $quota = 0;
+ }
+
+ if ($fActive == "on")
+ {
+ $fActive = 1;
+ }
+ else
+ {
+ $fActive = 0;
+ }
+
+ if (empty ($fPassword) and empty ($fPassword2))
+ {
+ $result = db_query ("UPDATE mailbox SET name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
+ }
+ else
+ {
+ $password = pacrypt ($fPassword);
+ $result = db_query ("UPDATE mailbox SET password='$password',name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
+ }
+
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pEdit_mailbox_result_error'];
+ }
+ else
+ {
+ db_log ($CONF['admin_email'], $fDomain, "edit mailbox", $fUsername);
+
+ header ("Location: list-virtual.php?domain=$fDomain");
+ exit;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/edit-mailbox.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/index.php b/admin/index.php
new file mode 100644
index 0000000..ba96e12
--- /dev/null
+++ b/admin/index.php
@@ -0,0 +1,22 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: index.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+header ("Location: list-admin.php");
+exit;
+?>
diff --git a/admin/list-admin.php b/admin/list-admin.php
new file mode 100644
index 0000000..f6c47e9
--- /dev/null
+++ b/admin/list-admin.php
@@ -0,0 +1,49 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: list-admin.php
+//
+// Template File: list-admin.tpl
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_admins = list_admins ();
+if ((is_array ($list_admins) and sizeof ($list_admins) > 0))
+{
+ for ($i = 0; $i < sizeof ($list_admins); $i++)
+ {
+ $admin_properties[$i] = get_admin_properties ($list_admins[$i]);
+ }
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-admin.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/list-domain.php b/admin/list-domain.php
new file mode 100644
index 0000000..358fa50
--- /dev/null
+++ b/admin/list-domain.php
@@ -0,0 +1,76 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: list-domain.php
+//
+// Template File: admin_list-domain.tpl
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_admins = list_admins ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['username']))
+ {
+ $fUsername = escape_string ($_GET['username']);
+
+ $list_domains = list_domains_for_admin ($fUsername);
+ if ($list_domains != 0)
+ {
+ for ($i = 0; $i < sizeof ($list_domains); $i++)
+ {
+ $domain_properties[$i] = get_domain_properties ($list_domains[$i]);
+ }
+ }
+ }
+ else
+ {
+ $list_domains = list_domains ();
+ if ((is_array ($list_domains) and sizeof ($list_domains) > 0))
+ for ($i = 0; $i < sizeof ($list_domains); $i++)
+ {
+ $domain_properties[$i] = get_domain_properties ($list_domains[$i]);
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $fUsername = escape_string ($_POST['fUsername']);
+
+ $list_domains = list_domains_for_admin ($fUsername);
+ if (!empty ($list_domains))
+ {
+ for ($i = 0; $i < sizeof ($list_domains); $i++)
+ {
+ $domain_properties[$i] = get_domain_properties ($list_domains[$i]);
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-domain.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/list-virtual.php b/admin/list-virtual.php
new file mode 100644
index 0000000..eda11fc
--- /dev/null
+++ b/admin/list-virtual.php
@@ -0,0 +1,157 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: list-virtual.php
+//
+// Template File: admin_list-virtual.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tAlias
+// tMailbox
+//
+// Form POST \ GET Variables:
+//
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_domains = list_domains ();
+
+$tAlias = array();
+$tMailbox = array();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $fDisplay = 0;
+ $page_size = $CONF['page_size'];
+
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+ if (isset ($_GET['limit'])) $fDisplay = escape_string ($_GET['limit']);
+
+ if ((is_array ($list_domains) and sizeof ($list_domains) > 0)) if (empty ($fDomain)) $fDomain = $list_domains[0];
+
+ $limit = get_domain_properties ($fDomain);
+
+ if ((is_array ($list_domains) and sizeof ($list_domains) > 0)) if (empty ($fDomain)) $fDomain = $list_domains[1];
+
+ if ($CONF['alias_control'] == "YES")
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified FROM alias WHERE alias.domain='$fDomain' ORDER BY alias.address LIMIT $fDisplay, $page_size";
+ }
+ else
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified FROM alias LEFT JOIN mailbox ON alias.address=mailbox.username WHERE alias.domain='$fDomain' AND mailbox.maildir IS NULL ORDER BY alias.address LIMIT $fDisplay, $page_size";
+ }
+
+ $result = db_query ("$query");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tAlias[] = $row;
+ }
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE domain='$fDomain' ORDER BY username LIMIT $fDisplay, $page_size");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tMailbox[] = $row;
+ }
+ }
+
+ if (isset ($limit))
+ {
+ if ($fDisplay >= $page_size)
+ {
+ $tDisplay_back_show = 1;
+ $tDisplay_back = $fDisplay - $page_size;
+ }
+ if (($limit['alias_count'] > $page_size) or ($limit['mailbox_count'] > $page_size))
+ {
+ $tDisplay_up_show = 1;
+ }
+ if ((($fDisplay + $page_size) < $limit['alias_count']) or (($fDisplay + $page_size) < $limit['mailbox_count']))
+ {
+ $tDisplay_next_show = 1;
+ $tDisplay_next = $fDisplay + $page_size;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-virtual.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $fDisplay = 0;
+ $page_size = $CONF['page_size'];
+
+ $fDomain = escape_string ($_POST['fDomain']);
+ if (isset ($_POST['limit'])) $fDisplay = escape_string ($_POST['limit']);
+
+ $limit = get_domain_properties ($fDomain);
+
+ if ($CONF['alias_control'] == "YES")
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified FROM alias WHERE alias.domain='$fDomain' ORDER BY alias.address LIMIT $fDisplay, $page_size";
+ }
+ else
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified FROM alias LEFT JOIN mailbox ON alias.address=mailbox.username WHERE alias.domain='$fDomain' AND mailbox.maildir IS NULL ORDER BY alias.address LIMIT $fDisplay, $page_size";
+ }
+
+ $result = db_query ("$query");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tAlias[] = $row;
+ }
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE domain='$fDomain' ORDER BY username LIMIT $fDisplay, $page_size");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tMailbox[] = $row;
+ }
+ }
+
+ if (isset ($limit))
+ {
+ if ($fDisplay >= $page_size)
+ {
+ $tDisplay_back_show = 1;
+ $tDisplay_back = $fDisplay - $page_size;
+ }
+ if (($limit['alias_count'] > $page_size) or ($limit['mailbox_count'] > $page_size))
+ {
+ $tDisplay_up_show = 1;
+ }
+ if ((($fDisplay + $page_size) < $limit['alias_count']) or (($fDisplay + $page_size) < $limit['mailbox_count']))
+ {
+ $tDisplay_next_show = 1;
+ $tDisplay_next = $fDisplay + $page_size;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_list-virtual.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/search.php b/admin/search.php
new file mode 100644
index 0000000..dea3955
--- /dev/null
+++ b/admin/search.php
@@ -0,0 +1,104 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: search.php
+//
+// Template File: search.tpl
+//
+// Template Variables:
+//
+// tAlias
+// tMailbox
+//
+// Form POST \ GET Variables:
+//
+// fSearch
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$tAlias = array();
+$tMailbox = array();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['search'])) $fSearch = escape_string ($_GET['search']);
+
+ if ($CONF['alias_control'] == "YES")
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified,alias.domain FROM alias WHERE alias.address LIKE '%$fSearch%' OR alias.goto LIKE '%$fSearch%' ORDER BY alias.address";
+ }
+ else
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified,alias.domain FROM alias LEFT JOIN mailbox ON alias.address=mailbox.username WHERE alias.address LIKE '%$fSearch%' AND mailbox.maildir IS NULL ORDER BY alias.address";
+ }
+
+ $result = db_query ("$query");
+
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tAlias[] = $row;
+ }
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE username LIKE '%$fSearch%' ORDER BY username");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tMailbox[] = $row;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_search.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ if (isset ($_POST['search'])) $fSearch = escape_string ($_POST['search']);
+
+ if ($CONF['alias_control'] == "YES")
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified,alias.domain FROM alias WHERE alias.address LIKE '%$fSearch%' OR alias.goto LIKE '%$fSearch%' ORDER BY alias.address";
+ }
+ else
+ {
+ $query = "SELECT alias.address,alias.goto,alias.modified,alias.domain FROM alias LEFT JOIN mailbox ON alias.address=mailbox.username WHERE alias.address LIKE '%$fSearch%' AND mailbox.maildir IS NULL ORDER BY alias.address";
+ }
+
+ $result = db_query ("$query");
+
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tAlias[] = $row;
+ }
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE username LIKE '%$fSearch%' ORDER BY username");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tMailbox[] = $row;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/admin_search.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/admin/viewlog.php b/admin/viewlog.php
new file mode 100644
index 0000000..2ffda9b
--- /dev/null
+++ b/admin/viewlog.php
@@ -0,0 +1,66 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: viewlog.php
+//
+// Template File: viewlog.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tLog
+//
+// Form POST \ GET Variables:
+//
+// fDomain
+//
+require ("../variables.inc.php");
+require ("../config.inc.php");
+require ("../functions.inc.php");
+include ("../languages/" . check_language () . ".lang");
+
+$list_domains = list_domains ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+
+ if ((is_array ($list_domains) and sizeof ($list_domains) > 0)) $fDomain = $list_domains[0];
+
+ $result = db_query ("SELECT * FROM log WHERE domain='$fDomain' ORDER BY timestamp DESC LIMIT 10");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tLog[] = $row;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/viewlog.tpl");
+ include ("../templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $fDomain = escape_string ($_POST['fDomain']);
+
+ $result = db_query ("SELECT * FROM log WHERE domain='$fDomain' ORDER BY timestamp DESC LIMIT 10");
+ if ($result['rows'] > 0)
+ {
+ while ($row = db_array ($result['result']))
+ {
+ $tLog[] = $row;
+ }
+ }
+
+ include ("../templates/header.tpl");
+ include ("../templates/admin_menu.tpl");
+ include ("../templates/viewlog.tpl");
+ include ("../templates/footer.tpl");
+}
+?>
diff --git a/config.inc.php.sample b/config.inc.php.sample
new file mode 100644
index 0000000..1117ea1
--- /dev/null
+++ b/config.inc.php.sample
@@ -0,0 +1,145 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: config.inc.php
+//
+if (ereg ("config.inc.php", $_SERVER['PHP_SELF']))
+{
+ header ("Location: login.php");
+ exit;
+}
+
+// Postfix Admin Path
+// Set the location to your Postfix Admin installation here.
+$CONF['postfix_admin_url'] = '';
+$CONF['postfix_admin_path'] = '';
+
+// Language config
+// Language files are located in './languages'.
+$CONF['default_language'] = 'en';
+
+// Database Config
+// mysql = MySQL 3.23 and 4.0
+// mysqli = MySQL 4.1
+// pgsql = PostgreSQL
+$CONF['database_type'] = 'mysql';
+$CONF['database_host'] = 'localhost';
+$CONF['database_user'] = 'postfixadmin';
+$CONF['database_password'] = 'postfixadmin';
+$CONF['database_name'] = 'postfix';
+$CONF['database_prefix'] = '';
+
+// Site Admin
+// Define the Site Admins email address below.
+// This will be used to send emails from to create mailboxes.
+$CONF['admin_email'] = 'postmaster@change-this-to-your.domain.tld';
+
+// Mail Server
+// Hostname (FQDN) of your mail server.
+// This is used to send email to Postfix in order to create mailboxes.
+$CONF['smtp_server'] = 'localhost';
+$CONF['smtp_port'] = '25';
+
+// Encrypt
+// In what way do you want the passwords to be crypted?
+// md5crypt = internal postfix admin md5
+// system = whatever you have set as your PHP system default
+// cleartext = clear text passwords (ouch!)
+$CONF['encrypt'] = 'md5crypt';
+
+// Generate Password
+// Generate a random password for a mailbox and display it.
+// If you want to automagically generate paswords set this to 'YES'.
+$CONF['generate_password'] = 'NO';
+
+// Page Size
+// Set the number of entries that you would like to see
+// in one page.
+$CONF['page_size'] = '10';
+
+// Default Aliases
+// The default aliases that need to be created for all domains.
+$CONF['default_aliases'] = array (
+ 'abuse' => 'abuse@change-this-to-your.domain.tld',
+ 'hostmaster' => 'hostmaster@change-this-to-your.domain.tld',
+ 'postmaster' => 'postmaster@change-this-to-your.domain.tld',
+ 'webmaster' => 'webmaster@change-this-to-your.domain.tld'
+);
+
+// Mailboxes
+// If you want to store the mailboxes per domain set this to 'YES'.
+// Example: /usr/local/virtual/domain.tld/username@domain.tld
+$CONF['domain_path'] = 'NO';
+// If you don't want to have the domain in your mailbox set this to 'NO'.
+// Example: /usr/local/virtual/domain.tld/username
+$CONF['domain_in_mailbox'] = 'YES';
+
+// Default Domain Values
+// Specify your default values below. Quota in MB.
+$CONF['aliases'] = '10';
+$CONF['mailboxes'] = '10';
+$CONF['maxquota'] = '10';
+
+// Quota
+// When you want to enforce quota for your mailbox users set this to 'YES'.
+$CONF['quota'] = 'NO';
+// You can either use '1024000' or '1048576'
+$CONF['quota_multiplier'] = '1024000';
+
+// Transport
+// If you want to define additional transport options for a domain set this to 'YES'.
+// Read the transport file of the Postfix documentation.
+$CONF['transport'] = 'NO';
+
+// Virtual Vacation
+// If you want to use virtual vacation for you mailbox users set this to 'YES'.
+// NOTE: Make sure that you install the vacation module. http://high5.net/postfixadmin/
+$CONF['vacation'] = 'NO';
+// This is the autoreply domain that you will need to set in your Postfix
+// transport maps to handle virtual vacations. It does not need to be a
+// real domain (i.e. you don't need to setup DNS for it).
+$CONF['vacation_domain'] = 'autoreply.change-this-to-your.domain.tld';
+
+// Alias Control
+// Postfix Admin inserts an alias in the alias table for every mailbox it creates.
+// The reason for this is that when you want catch-all and normal mailboxes
+// to work you need to have the mailbox replicated in the alias table.
+// If you want to take control of these aliases as well set this to 'YES'.
+$CONF['alias_control'] = 'NO';
+
+// Special Alias Control
+// Set to 'NO' if you don't want your domain admins to change the default aliases.
+$CONF['special_alias_control'] = 'YES';
+
+// Logging
+// If you don't want logging set this to 'NO';
+$CONF['logging'] = 'YES';
+
+// Header
+$CONF['show_header_text'] = 'NO';
+$CONF['header_text'] = ':: Postfix Admin ::';
+
+// Footer
+// Below information will be on all pages.
+// If you don't want the footer information to appear set this to 'NO'.
+$CONF['show_footer_text'] = 'YES';
+$CONF['footer_text'] = 'Return to change-this-to-your.domain.tld';
+$CONF['footer_link'] = 'http://change-this-to-your.domain.tld';
+
+// Welcome Message
+// This message is send to every newly created mailbox.
+// Change the text between EOM.
+$CONF['welcome_text'] = <<<EOM
+Hi,
+
+Welcome to your new account.
+EOM;
+
+//
+// END OF CONFIG FILE
+//
+?>
diff --git a/create-alias.php b/create-alias.php
new file mode 100644
index 0000000..41537f7
--- /dev/null
+++ b/create-alias.php
@@ -0,0 +1,132 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-alias.php
+//
+// Template File: create-alias.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tAddress
+// tGoto
+// tDomain
+//
+// Form POST \ GET Variables:
+//
+// fAddress
+// fGoto
+// fDomain
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session ();
+$list_domains = list_domains_for_admin ($SESSID_USERNAME);
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
+
+ if (isset ($_GET['domain'])) $tDomain = escape_string ($_GET['domain']);
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/create-alias.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text'];
+
+ $fAddress = escape_string ($_POST['fAddress']) . "@" . escape_string ($_POST['fDomain']);
+ $fAddress = strtolower ($fAddress);
+ $fGoto = escape_string ($_POST['fGoto']);
+ $fGoto = strtolower ($fGoto);
+ $fDomain = escape_string ($_POST['fDomain']);
+
+ if (!preg_match ('/@/',$fGoto))
+ {
+ $fGoto = $fGoto . "@" . escape_string ($_POST['fDomain']);
+ }
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error1'];
+ }
+
+ if (!check_alias ($fDomain))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error3'];
+ }
+
+ if (empty ($fAddress) or !check_email ($fAddress))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error1'];
+ }
+
+ if (empty ($fGoto) or !check_email ($fGoto))
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_goto_text = $PALANG['pCreate_alias_goto_text_error'];
+ }
+
+ if (escape_string ($_POST['fAddress']) == "*") $fAddress = "@" . escape_string ($_POST['fDomain']);
+
+ $result = db_query ("SELECT * FROM alias WHERE address='$fAddress'");
+ if ($result['rows'] == 1)
+ {
+ $error = 1;
+ $tAddress = escape_string ($_POST['fAddress']);
+ $tGoto = $fGoto;
+ $tDomain = $fDomain;
+ $pCreate_alias_address_text = $PALANG['pCreate_alias_address_text_error2'];
+ }
+
+ if ($error != 1)
+ {
+ if (preg_match ('/^\*@(.*)$/', $fGoto, $match)) $fGoto = "@" . $match[1];
+
+ $result = db_query ("INSERT INTO alias (address,goto,domain,created,modified) VALUES ('$fAddress','$fGoto','$fDomain',NOW(),NOW())");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_alias_result_error'] . "<br />($fAddress -> $fGoto)<br />\n";
+ }
+ else
+ {
+ db_log ($SESSID_USERNAME, $fDomain, "create alias", "$fAddress -> $fGoto");
+
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_alias_result_succes'] . "<br />($fAddress -> $fGoto)<br />\n";
+ }
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/create-alias.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/create-mailbox.php b/create-mailbox.php
new file mode 100644
index 0000000..4deb5b3
--- /dev/null
+++ b/create-mailbox.php
@@ -0,0 +1,249 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: create-mailbox.php
+//
+// Template File: create-mailbox.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tUsername
+// tName
+// tQuota
+// tDomain
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fPassword
+// fPassword2
+// fName
+// fQuota
+// fDomain
+// fActive
+// fMail
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session ();
+$list_domains = list_domains_for_admin ($SESSID_USERNAME);
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $tQuota = $CONF['maxquota'];
+
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text'];
+ $pCreate_mailbox_name_text = $PALANG['pCreate_mailbox_name_text'];
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text'];
+
+ if (isset ($_GET['domain'])) $tDomain = escape_string ($_GET['domain']);
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/create-mailbox.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text'];
+ $pCreate_mailbox_name_text = $PALANG['pCreate_mailbox_name_text'];
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text'];
+
+ $fUsername = escape_string ($_POST['fUsername']) . "@" . escape_string ($_POST['fDomain']);
+ $fUsername = strtolower ($fUsername);
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ $fName = escape_string ($_POST['fName']);
+ $fDomain = escape_string ($_POST['fDomain']);
+ if (isset ($_POST['fQuota'])) $fQuota = escape_string ($_POST['fQuota']);
+ if (isset ($_POST['fActive'])) $fActive = escape_string ($_POST['fActive']);
+ if (isset ($_POST['fMail'])) $fMail = escape_string ($_POST['fMail']);
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error1'];
+ }
+
+ if (!check_mailbox ($fDomain))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error3'];
+ }
+
+ if (empty ($fUsername) or !check_email ($fUsername))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error1'];
+ }
+
+ if (empty ($fPassword) or ($fPassword != $fPassword2))
+ {
+ if ($CONF['generate_password'] == "YES")
+ {
+ $fPassword = generate_password ();
+ }
+ else
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_password_text = $PALANG['pCreate_mailbox_password_text_error'];
+ }
+ }
+
+ if ($CONF['quota'] == "YES")
+ {
+ if (!check_quota ($fQuota, $fDomain))
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_quota_text = $PALANG['pCreate_mailbox_quota_text_error'];
+ }
+ }
+
+ $result = db_query ("SELECT * FROM alias WHERE address='$fUsername'");
+ if ($result['rows'] == 1)
+ {
+ $error = 1;
+ $tUsername = escape_string ($_POST['fUsername']);
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tDomain = $fDomain;
+ $pCreate_mailbox_username_text = $PALANG['pCreate_mailbox_username_text_error2'];
+ }
+
+ if ($error != 1)
+ {
+ $password = pacrypt ($fPassword);
+
+ if ($CONF['domain_path'] == "YES")
+ {
+ if ($CONF['domain_in_mailbox'] == "YES")
+ {
+ $maildir = $fDomain . "/" . $fUsername . "/";
+ }
+ else
+ {
+ $maildir = $fDomain . "/" . escape_string ($_POST['fUsername']) . "/";
+ }
+ }
+ else
+ {
+ $maildir = $fUsername . "/";
+ }
+
+ if (!empty ($fQuota))
+ {
+ $quota = $fQuota * $CONF['quota_multiplier'];
+ }
+ else
+ {
+ $quota = 0;
+ }
+
+ if ($fActive == "on")
+ {
+ $fActive = 1;
+ }
+ else
+ {
+ $fActive = 0;
+ }
+
+ $result = db_query ("INSERT INTO alias (address,goto,domain,created,modified,active) VALUES ('$fUsername','$fUsername','$fDomain',NOW(),NOW(),'$fActive')");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pAlias_result_error'] . "<br />($fUsername -> $fUsername)</br />";
+ }
+
+ $result = db_query ("INSERT INTO mailbox (username,password,name,maildir,quota,domain,created,modified,active) VALUES ('$fUsername','$password','$fName','$maildir','$quota','$fDomain',NOW(),NOW(),'$fActive')");
+ if ($result['rows'] != 1)
+ {
+ $tDomain = $fDomain;
+ $tMessage .= $PALANG['pCreate_mailbox_result_error'] . "<br />($fUsername)<br />";
+ }
+ else
+ {
+
+ db_log ($SESSID_USERNAME, $fDomain, "create mailbox", "$fUsername");
+
+ $tDomain = $fDomain;
+ $tMessage = $PALANG['pCreate_mailbox_result_succes'] . "<br />($fUsername";
+ if ($CONF['generate_password'] == "YES")
+ {
+ $tMessage .= " / $fPassword)</br />";
+ }
+ else
+ {
+ $tMessage .= ")</br />";
+ }
+
+ $tQuota = $CONF['maxquota'];
+
+ if ($fMail == "on")
+ {
+ $fTo = $fUsername;
+ $fFrom = $SESSID_USERNAME;
+ $fHeaders = "To: " . $fTo . "\n";
+ $fHeaders .= "From: " . $fFrom . "\n";
+
+ if (!empty ($PALANG['charset']))
+ {
+ $fHeaders .= "Subject: " . encode_header ($PALANG['pSendmail_subject_text'], $PALANG['charset']) . "\n";
+ $fHeaders .= "MIME-Version: 1.0\n";
+ $fHeaders .= "Content-Type: text/plain; charset=" . $PALANG['charset'] . "\n";
+ $fHeaders .= "Content-Transfer-Encoding: 8bit\n";
+ }
+ else
+ {
+ $fHeaders .= "Subject: " . $PALANG['pSendmail_subject_text'] . "\n\n";
+ }
+
+ $fHeaders .= $CONF['welcome_text'];
+
+ if (!smtp_mail ($fTo, $fFrom, $fHeaders))
+ {
+ $tMessage .= "<br />" . $PALANG['pSendmail_result_error'] . "<br />";
+ }
+ else
+ {
+ $tMessage .= "<br />" . $PALANG['pSendmail_result_succes'] . "<br />";
+ }
+ }
+ }
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/create-mailbox.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/delete.php b/delete.php
new file mode 100644
index 0000000..bf47d44
--- /dev/null
+++ b/delete.php
@@ -0,0 +1,88 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: delete.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fDelete
+// fDomain
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['delete'])) $fDelete = escape_string ($_GET['delete']);
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tMessage = $PALANG['pDelete_domain_error'] . "<b>$fDomain</b>!</div>";
+ }
+ else
+ {
+
+ $result = db_query ("DELETE FROM alias WHERE address='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pDelete_delete_error'] . "<b>$fDelete</b> (alias)!</div>";
+ }
+ else
+ {
+ db_log ($SESSID_USERNAME, $fDomain, "delete alias", $fDelete);
+ }
+
+ $result = db_query ("SELECT * FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $result = db_query ("DELETE FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pDelete_delete_error'] . "<b>$fDelete</b> (mailbox)!</div>";
+ }
+ else
+ {
+ db_query ("DELETE FROM vacation WHERE email='$fDelete' AND domain='$fDomain'");
+ db_log ($SESSID_USERNAME, $fDomain, "delete mailbox", $fDelete);
+ }
+ }
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: overview.php?domain=$fDomain");
+ exit;
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/message.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/message.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/edit-active.php b/edit-active.php
new file mode 100644
index 0000000..940ed4f
--- /dev/null
+++ b/edit-active.php
@@ -0,0 +1,71 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-active.php
+//
+// Template File: message.tpl
+//
+// Template Variables:
+//
+// tMessage
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fDomain
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ if (isset ($_GET['username'])) $fUsername = escape_string ($_GET['username']);
+ if (isset ($_GET['domain'])) $fDomain = escape_string ($_GET['domain']);
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tMessage = $PALANG['pEdit_mailbox_domain_error'] . "<b>$fDomain</b>!</font>";
+ }
+ else
+ {
+ $result = db_query ("UPDATE mailbox SET active=1-active WHERE username='$fUsername' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $error = 1;
+ $tMessage = $PALANG['pEdit_mailbox_result_error'];
+ }
+ else
+ {
+ db_log ($SESSID_USERNAME, $fDomain, "edit active", $fUsername);
+ }
+ }
+
+ if ($error != 1)
+ {
+ header ("Location: overview.php?domain=$fDomain");
+ exit;
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/message.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/message.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/edit-alias.php b/edit-alias.php
new file mode 100644
index 0000000..374cae0
--- /dev/null
+++ b/edit-alias.php
@@ -0,0 +1,117 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-alias.php
+//
+// Template File: edit-alias.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tGoto
+//
+// Form POST \ GET Variables:
+//
+// fAddress
+// fDomain
+// fGoto
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $fAddress = escape_string ($_GET['address']);
+ $fDomain = escape_string ($_GET['domain']);
+
+ if (check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $result = db_query ("SELECT * FROM alias WHERE address='$fAddress' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $row = db_array ($result['result']);
+ $tGoto = $row['goto'];
+ }
+ }
+ else
+ {
+ $tMessage = $PALANG['pEdit_alias_address_error'];
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/edit-alias.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pEdit_alias_goto = $PALANG['pEdit_alias_goto'];
+
+ $fAddress = escape_string ($_GET['address']);
+ $fAddress = strtolower ($fAddress);
+ $fDomain = escape_string ($_GET['domain']);
+ $fGoto = escape_string ($_POST['fGoto']);
+ $fGoto = strtolower ($fGoto);
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tGoto = $fGoto;
+ $tMessage = $PALANG['pEdit_alias_domain_error'] . "$fDomain</font>";
+ }
+
+ if (empty ($fGoto))
+ {
+ $error = 1;
+ $tGoto = $fGoto;
+ $tMessage = $PALANG['pEdit_alias_goto_text_error1'];
+ }
+
+ $goto = preg_replace ('/\\\r\\\n/', ',', $fGoto);
+ $goto = preg_replace ('/\r\n/', ',', $fGoto);
+ $goto = preg_replace ('/[\s]+/i', '', $goto);
+ $goto = preg_replace ('/\,*$/', '', $goto);
+ $array = preg_split ('/,/', $goto);
+
+ for ($i = 0; $i < sizeof ($array); $i++) {
+ if (in_array ("$array[$i]", $CONF['default_aliases'])) continue;
+ if (empty ($array[$i])) continue;
+ if (!check_email ($array[$i]))
+ {
+ $error = 1;
+ $tGoto = $goto;
+ $tMessage = $PALANG['pEdit_alias_goto_text_error2'] . "$array[$i]</div>";
+ }
+ }
+
+ if ($error != 1)
+ {
+ $result = db_query ("UPDATE alias SET goto='$goto',modified=NOW() WHERE address='$fAddress' AND domain='$fDomain'");
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pEdit_alias_result_error'];
+ }
+ else
+ {
+ db_log ($SESSID_USERNAME, $fDomain, "edit alias", "$fAddress -> $goto");
+
+ header ("Location: overview.php?domain=$fDomain");
+ exit;
+ }
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/edit-alias.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/edit-mailbox.php b/edit-mailbox.php
new file mode 100644
index 0000000..5f34dca
--- /dev/null
+++ b/edit-mailbox.php
@@ -0,0 +1,155 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: edit-mailbox.php
+//
+// Template File: edit-mailbox.tpl
+//
+// Template Variables:
+//
+// tMessage
+// tName
+// tQuota
+//
+// Form POST \ GET Variables:
+//
+// fUsername
+// fDomain
+// fPassword
+// fPassword2
+// fName
+// fQuota
+// fActive
+//
+require ("./variables.inc.php");
+require ("./config.inc.php");
+require ("./functions.inc.php");
+include ("./languages/" . check_language () . ".lang");
+
+$SESSID_USERNAME = check_session ();
+
+if ($_SERVER['REQUEST_METHOD'] == "GET")
+{
+ $fUsername = escape_string ($_GET['username']);
+ $fDomain = escape_string ($_GET['domain']);
+
+ if (check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $result = db_query ("SELECT * FROM mailbox WHERE username='$fUsername' AND domain='$fDomain'");
+ if ($result['rows'] == 1)
+ {
+ $row = db_array ($result['result']);
+ $tName = $row['name'];
+ $tQuota = $row['quota'] / $CONF['quota_multiplier'];
+ $tActive = $row['active'];
+ }
+ }
+ else
+ {
+ $tMessage = $PALANG['pEdit_mailbox_login_error'];
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/edit-mailbox.tpl");
+ include ("./templates/footer.tpl");
+}
+
+if ($_SERVER['REQUEST_METHOD'] == "POST")
+{
+ $pEdit_mailbox_password_text = $PALANG['pEdit_mailbox_password_text_error'];
+ $pEdit_mailbox_quota_text = $PALANG['pEdit_mailbox_quota_text'];
+
+ $fUsername = escape_string ($_GET['username']);
+ $fUsername = strtolower ($fUsername);
+ $fDomain = escape_string ($_GET['domain']);
+
+ $fPassword = escape_string ($_POST['fPassword']);
+ $fPassword2 = escape_string ($_POST['fPassword2']);
+ $fName = escape_string ($_POST['fName']);
+ if (isset ($_POST['fQuota'])) $fQuota = escape_string ($_POST['fQuota']);
+ if (isset ($_POST['fActive'])) $fActive = escape_string ($_POST['fActive']);
+
+ if (!check_owner ($SESSID_USERNAME, $fDomain))
+ {
+ $error = 1;
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tActive = $fActive;
+ $tMessage = $PALANG['pEdit_mailbox_domain_error'] . "$fDomain</font>";
+ }
+
+ if ($fPassword != $fPassword2)
+ {
+ $error = 1;
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tActive = $fActive;
+ $pEdit_mailbox_password_text = $PALANG['pEdit_mailbox_password_text_error'];
+ }
+
+ if ($CONF['quota'] == "YES")
+ {
+ if (!check_quota ($fQuota, $fDomain))
+ {
+ $error = 1;
+ $tName = $fName;
+ $tQuota = $fQuota;
+ $tActive = $fActive;
+ $pEdit_mailbox_quota_text = $PALANG['pEdit_mailbox_quota_text_error'];
+ }
+ }
+
+ if ($error != 1)
+ {
+ if (!empty ($fQuota))
+ {
+ $quota = $fQuota * $CONF['quota_multiplier'];
+ }
+ else
+ {
+ $quota = 0;
+ }
+
+ if ($fActive == "on")
+ {
+ $fActive = 1;
+ }
+ else
+ {
+ $fActive = 0;
+ }
+
+ if (empty ($fPassword) and empty ($fPassword2))
+ {
+ $result = db_query ("UPDATE mailbox SET name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
+ }
+ else
+ {
+ $password = pacrypt ($fPassword);
+ $result = db_query ("UPDATE mailbox SET password='$password',name='$fName',quota='$quota',modified=NOW(),active='$fActive' WHERE username='$fUsername' AND domain='$fDomain'");
+ }
+
+ if ($result['rows'] != 1)
+ {
+ $tMessage = $PALANG['pEdit_mailbox_result_error'];
+ }
+ else
+ {
+ db_log ($SESSID_USERNAME, $fDomain, "edit mailbox", $fUsername);
+
+ header ("Location: overview.php?domain=$fDomain");
+ exit;
+ }
+ }
+
+ include ("./templates/header.tpl");
+ include ("./templates/menu.tpl");
+ include ("./templates/edit-mailbox.tpl");
+ include ("./templates/footer.tpl");
+}
+?>
diff --git a/functions.inc.php b/functions.inc.php
new file mode 100644
index 0000000..833b793
--- /dev/null
+++ b/functions.inc.php
@@ -0,0 +1,1049 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: functions.inc.php
+//
+//error_reporting (E_NOTICE | E_ERROR | E_WARNING | E_PARSE);
+
+if (ereg ("functions.inc.php", $_SERVER['PHP_SELF']))
+{
+ header ("Location: login.php");
+ exit;
+}
+
+$version = "2.1.0";
+
+//
+// check_session
+// Action: Check if a session already exists, if not redirect to login.php
+// Call: check_session ()
+//
+function check_session ()
+{
+ session_start ();
+ if (!session_is_registered ("sessid"))
+ {
+ header ("Location: login.php");
+ exit;
+ }
+ $SESSID_USERNAME = $_SESSION['sessid']['username'];
+ return $SESSID_USERNAME;
+}
+
+function check_user_session ()
+{
+ session_start ();
+ if (!session_is_registered ("userid"))
+ {
+ header ("Location: login.php");
+ exit;
+ }
+ $USERID_USERNAME = $_SESSION['userid']['username'];
+ return $USERID_USERNAME;
+}
+
+
+
+//
+// check_language
+// Action: checks what language the browser uses
+// Call: check_language
+//
+function check_language ()
+{
+ global $CONF;
+ $supported_languages = array ('bg', 'ca', 'cn', 'cs', 'da', 'de', 'en', 'es', 'et', 'eu', 'fi', 'fo', 'fr', 'hu', 'is', 'it', 'mk', 'nl', 'nn', 'pl', 'pt-br', 'ru', 'sl', 'sv', 'tr', 'tw');
+ $lang_array = preg_split ('/(\s*,\s*)/', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+ if (is_array ($lang_array))
+ {
+ $lang_first = strtolower ((trim (strval ($lang_array[0]))));
+ $lang_first = substr ($lang_first, 0, 2);
+ if (in_array ($lang_first, $supported_languages))
+ {
+ $lang = $lang_first;
+ }
+ else
+ {
+ $lang = $CONF['default_language'];
+ }
+ }
+ else
+ {
+ $lang = $CONF['default_language'];
+ }
+ return $lang;
+}
+
+
+
+//
+// check_string
+// Action: checks if a string is valid and returns TRUE is this is the case.
+// Call: check_string (string var)
+//
+function check_string ($var)
+{
+ if (preg_match ('/^([A-Za-z0-9 ]+)+$/', $var))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+
+//
+// check_email
+// Action: Checks if email is valid and returns TRUE if this is the case.
+// Call: check_email (string email)
+//
+function check_email ($email)
+{
+ if (preg_match ('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_{|}~]+' . '@' . '([-0-9A-Z]+\.)+' . '([0-9A-Z]){2,4}$/i', trim ($email)))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+
+//
+// escape_string
+// Action: Escape a string
+// Call: escape_string (string string)
+//
+function escape_string ($string)
+{
+ global $CONF;
+ if (get_magic_quotes_gpc () == 0)
+ {
+ if ($CONF['database_type'] == "mysql") $escaped_string = mysql_real_escape_string ($string);
+ if ($CONF['database_type'] == "mysqli") $escaped_string = mysqli_real_escape_string ($string);
+ if ($CONF['database_type'] == "pgsql") $escaped_string = pg_escape_string ($string);
+ }
+ else
+ {
+ $escaped_string = $string;
+ }
+ return $escaped_string;
+}
+
+
+
+//
+// get_domain_properties
+// Action: Get all the properties of a domain.
+// Call: get_domain_properties (string domain)
+//
+function get_domain_properties ($domain)
+{
+ global $CONF;
+ $list = array ();
+
+ $result = db_query ("SELECT COUNT(*) FROM alias WHERE domain='$domain'");
+ $row = db_row ($result['result']);
+ $list['alias_count'] = $row[0];
+
+ $result = db_query ("SELECT COUNT(*) FROM mailbox WHERE domain='$domain'");
+ $row = db_row ($result['result']);
+ $list['mailbox_count'] = $row[0];
+ if ($CONF['alias_control'] == "NO")
+ {
+ $list['alias_count'] = $list['alias_count'] - $list['mailbox_count'];
+ }
+ else
+ {
+ $list['alias_count'] = $list['alias_count'];
+ }
+
+ $result = db_query ("SELECT * FROM domain WHERE domain='$domain'");
+ $row = db_array ($result['result']);
+ $list['description'] = $row['description'];
+ $list['aliases'] = $row['aliases'];
+ $list['mailboxes'] = $row['mailboxes'];
+ $list['maxquota'] = $row['maxquota'];
+ $list['transport'] = $row['transport'];
+ $list['backupmx'] = $row['backupmx'];
+ $list['created'] = $row['created'];
+ $list['modified'] = $row['modified'];
+ $list['active'] = $row['active'];
+
+ if ($CONF['database_type'] == "pgsql")
+ {
+ if ($row['active'] == "t")
+ {
+ $list['active'] = 1;
+ }
+ else
+ {
+ $list['active'] = 0;
+ }
+
+ if ($row['backupmx'] == "t")
+ {
+ $list['backupmx'] = 1;
+ }
+ else
+ {
+ $list['backupmx'] = 0;
+ }
+ }
+ else
+ {
+ $list['active'] = $row['active'];
+ $list['backupmx'] = $row['backupmx'];
+ }
+
+ return $list;
+}
+
+
+
+//
+// check_alias
+// Action: Checks if the domain is still able to create aliases.
+// Call: check_alias (string domain)
+//
+function check_alias ($domain)
+{
+ $limit = get_domain_properties ($domain);
+ if ($limit['aliases'] == 0)
+ {
+ return true;
+ }
+ if ($limit['aliases'] < 0)
+ {
+ return false;
+ }
+ if ($limit['alias_count'] >= $limit['aliases'])
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+
+//
+// check_mailbox
+// Action: Checks if the domain is still able to create mailboxes.
+// Call: ceck_mailbox (string domain)
+//
+function check_mailbox ($domain)
+{
+ $limit = get_domain_properties ($domain);
+ if ($limit['mailboxes'] == 0)
+ {
+ return true;
+ }
+ if ($limit['mailboxes'] < 0)
+ {
+ return false;
+ }
+ if ($limit['mailbox_count'] >= $limit['mailboxes'])
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+
+//
+// check_quota
+// Action: Checks if the user is creating a mailbox with the correct quota
+// Call: check_quota (string domain)
+//
+function check_quota ($quota, $domain)
+{
+ $limit = get_domain_properties ($domain);
+ if ($limit['maxquota'] == 0)
+ {
+ return true;
+ }
+ if (($limit['maxquota'] < 0) and ($quota < 0))
+ {
+ return true;
+ }
+ if (($limit['maxquota'] > 0) and ($quota == 0))
+ {
+ return false;
+ }
+ if ($quota > $limit['maxquota'])
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+
+//
+// check_owner
+// Action: Checks if the admin is the owner of the domain.
+// Call: check_owner (string admin, string domain)
+//
+function check_owner ($username, $domain)
+{
+ $result = db_query ("SELECT * FROM domain_admins WHERE username='$username' AND domain='$domain' AND active='1'");
+ if ($result['rows'] != 1)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+
+//
+// list_domains_for_admin
+// Action: Lists all the domains for an admin.
+// Call: list_domains_for_admin (string admin)
+//
+function list_domains_for_admin ($username)
+{
+ $list = array ();
+
+ $result = db_query ("SELECT * FROM domain LEFT JOIN domain_admins ON domain.domain=domain_admins.domain WHERE domain_admins.username='$username' AND domain.active='1' AND domain.backupmx='0' ORDER BY domain_admins.domain");
+ if ($result['rows'] > 0)
+ {
+ $i = 0;
+ while ($row = db_array ($result['result']))
+ {
+ $list[$i] = $row['domain'];
+ $i++;
+ }
+ }
+ return $list;
+}
+
+
+
+//
+// list_domains
+// Action: List all available domains.
+// Call: list_domains ()
+//
+function list_domains ()
+{
+ $list = array();
+
+ $result = db_query ("SELECT * FROM domain ORDER BY domain");
+ if ($result['rows'] > 0)
+ {
+ $i = 0;
+ while ($row = db_array ($result['result']))
+ {
+ $list[$i] = $row['domain'];
+ $i++;
+ }
+ }
+ return $list;
+}
+
+
+
+//
+// admin_exist
+// Action: Checks if the admin already exists.
+// Call: admin_exist (string admin)
+//
+// was check_admin
+//
+function admin_exist ($username)
+{
+ $result = db_query ("SELECT * FROM admin WHERE username='$username'");
+ if ($result['rows'] != 1)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+//
+// domain_exist
+// Action: Checks if the domain already exists.
+// Call: domain_exist (string domain)
+//
+function domain_exist ($domain)
+{
+ $result = db_query ("SELECT * FROM domain WHERE domain='$domain'");
+ if ($result['rows'] != 1)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+//
+// list_admins
+// Action: Lists all the admins
+// Call: list_admins ()
+//
+// was admin_list_admins
+//
+function list_admins ()
+{
+ $list = "";
+
+ $result = db_query ("SELECT * FROM admin ORDER BY username");
+ if ($result['rows'] > 0)
+ {
+ $i = 0;
+ while ($row = db_array ($result['result']))
+ {
+ $list[$i] = $row['username'];
+ $i++;
+ }
+ }
+ return $list;
+}
+
+
+
+//
+// get_admin_properties
+// Action: Get all the admin properties.
+// Call: get_admin_properties (string admin)
+function get_admin_properties ($username)
+{
+ $list = array ();
+
+ $result = db_query ("SELECT COUNT(*) FROM domain_admins WHERE username='$username'");
+ $row = db_row ($result['result']);
+ $list['domain_count'] = $row[0];
+
+ $result = db_query ("SELECT * FROM admin WHERE username='$username'");
+ $row = db_array ($result['result']);
+ $list['created'] = $row['created'];
+ $list['modified'] = $row['modified'];
+ $list['active'] = $row['active'];
+ return $list;
+}
+
+
+
+//
+// encode_header
+// Action: Encode a string according to RFC 1522 for use in headers if it contains 8-bit characters.
+// Call: encode_header (string header, string charset)
+//
+function encode_header ($string, $default_charset)
+{
+ if (strtolower ($default_charset) == 'iso-8859-1')
+ {
+ $string = str_replace ("\240",' ',$string);
+ }
+
+ $j = strlen ($string);
+ $max_l = 75 - strlen ($default_charset) - 7;
+ $aRet = array ();
+ $ret = '';
+ $iEncStart = $enc_init = false;
+ $cur_l = $iOffset = 0;
+
+ for ($i = 0; $i < $j; ++$i)
+ {
+ switch ($string{$i})
+ {
+ case '=':
+ case '<':
+ case '>':
+ case ',':
+ case '?':
+ case '_':
+ if ($iEncStart === false)
+ {
+ $iEncStart = $i;
+ }
+ $cur_l+=3;
+ if ($cur_l > ($max_l-2))
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?=";
+ $iOffset = $i;
+ $cur_l = 0;
+ $ret = '';
+ $iEncStart = false;
+ }
+ else
+ {
+ $ret .= sprintf ("=%02X",ord($string{$i}));
+ }
+ break;
+ case '(':
+ case ')':
+ if ($iEncStart !== false)
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?=";
+ $iOffset = $i;
+ $cur_l = 0;
+ $ret = '';
+ $iEncStart = false;
+ }
+ break;
+ case ' ':
+ if ($iEncStart !== false)
+ {
+ $cur_l++;
+ if ($cur_l > $max_l)
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?=";
+ $iOffset = $i;
+ $cur_l = 0;
+ $ret = '';
+ $iEncStart = false;
+ }
+ else
+ {
+ $ret .= '_';
+ }
+ }
+ break;
+ default:
+ $k = ord ($string{$i});
+ if ($k > 126)
+ {
+ if ($iEncStart === false)
+ {
+ // do not start encoding in the middle of a string, also take the rest of the word.
+ $sLeadString = substr ($string,0,$i);
+ $aLeadString = explode (' ',$sLeadString);
+ $sToBeEncoded = array_pop ($aLeadString);
+ $iEncStart = $i - strlen ($sToBeEncoded);
+ $ret .= $sToBeEncoded;
+ $cur_l += strlen ($sToBeEncoded);
+ }
+ $cur_l += 3;
+ // first we add the encoded string that reached it's max size
+ if ($cur_l > ($max_l-2))
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?= ";
+ $cur_l = 3;
+ $ret = '';
+ $iOffset = $i;
+ $iEncStart = $i;
+ }
+ $enc_init = true;
+ $ret .= sprintf ("=%02X", $k);
+ }
+ else
+ {
+ if ($iEncStart !== false)
+ {
+ $cur_l++;
+ if ($cur_l > $max_l)
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?=";
+ $iEncStart = false;
+ $iOffset = $i;
+ $cur_l = 0;
+ $ret = '';
+ }
+ else
+ {
+ $ret .= $string{$i};
+ }
+ }
+ }
+ break;
+ }
+ }
+ if ($enc_init)
+ {
+ if ($iEncStart !== false)
+ {
+ $aRet[] = substr ($string,$iOffset,$iEncStart-$iOffset);
+ $aRet[] = "=?$default_charset?Q?$ret?=";
+ }
+ else
+ {
+ $aRet[] = substr ($string,$iOffset);
+ }
+ $string = implode ('',$aRet);
+ }
+ return $string;
+}
+
+
+
+//
+// generate_password
+// Action: Generates a random password
+// Call: generate_password ()
+//
+function generate_password ()
+{
+ $password = substr (md5 (mt_rand ()), 0, 8);
+ return $password;
+}
+
+
+
+//
+// pacrypt
+// Action: Encrypts password based on config settings
+// Call: pacrypt (string cleartextpassword)
+//
+function pacrypt ($pw, $pw_db="")
+{
+ global $CONF;
+ $password = "";
+ $salt = "";
+
+ if ($CONF['encrypt'] == 'md5crypt')
+ {
+ $split_salt = preg_split ('/\$/', $pw_db);
+ if (isset ($split_salt[2])) $salt = $split_salt[2];
+
+ $password = md5crypt ($pw, $salt);
+ }
+
+ if ($CONF['encrypt'] == 'system')
+ {
+ if (ereg ("\$1\$", $pw_db))
+ {
+ $split_salt = preg_split ('/\$/', $pw_db);
+ $salt = $split_salt[2];
+ }
+ else
+ {
+ $salt = substr ($pw_db, 0, 2);
+ }
+ $password = crypt ($pw, $salt);
+ }
+
+ if ($CONF['encrypt'] == 'cleartext')
+ {
+ $password = $pw;
+ }
+
+ return $password;
+}
+
+
+
+//
+// md5crypt
+// Action: Creates MD5 encrypted password
+// Call: md5crypt (string cleartextpassword)
+//
+$MAGIC = "$1$";
+$ITOA64 = "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+function md5crypt ($pw, $salt="", $magic="")
+{
+ global $MAGIC;
+
+ if ($magic == "") $magic = $MAGIC;
+ if ($salt == "") $salt = create_salt ();
+ $slist = explode ("$", $salt);
+ if ($slist[0] == "1") $salt = $slist[1];
+
+ $salt = substr ($salt, 0, 8);
+ $ctx = $pw . $magic . $salt;
+ $final = hex2bin (md5 ($pw . $salt . $pw));
+
+ for ($i=strlen ($pw); $i>0; $i-=16)
+ {
+ if ($i > 16)
+ {
+ $ctx .= substr ($final,0,16);
+ }
+ else
+ {
+ $ctx .= substr ($final,0,$i);
+ }
+ }
+ $i = strlen ($pw);
+
+ while ($i > 0)
+ {
+ if ($i & 1) $ctx .= chr (0);
+ else $ctx .= $pw[0];
+ $i = $i >> 1;
+ }
+ $final = hex2bin (md5 ($ctx));
+
+ for ($i=0;$i<1000;$i++)
+ {
+ $ctx1 = "";
+ if ($i & 1)
+ {
+ $ctx1 .= $pw;
+ }
+ else
+ {
+ $ctx1 .= substr ($final,0,16);
+ }
+ if ($i % 3) $ctx1 .= $salt;
+ if ($i % 7) $ctx1 .= $pw;
+ if ($i & 1)
+ {
+ $ctx1 .= substr ($final,0,16);
+ }
+ else
+ {
+ $ctx1 .= $pw;
+ }
+ $final = hex2bin (md5 ($ctx1));
+ }
+ $passwd = "";
+ $passwd .= to64 (((ord ($final[0]) << 16) | (ord ($final[6]) << 8) | (ord ($final[12]))), 4);
+ $passwd .= to64 (((ord ($final[1]) << 16) | (ord ($final[7]) << 8) | (ord ($final[13]))), 4);
+ $passwd .= to64 (((ord ($final[2]) << 16) | (ord ($final[8]) << 8) | (ord ($final[14]))), 4);
+ $passwd .= to64 (((ord ($final[3]) << 16) | (ord ($final[9]) << 8) | (ord ($final[15]))), 4);
+ $passwd .= to64 (((ord ($final[4]) << 16) | (ord ($final[10]) << 8) | (ord ($final[5]))), 4);
+ $passwd .= to64 (ord ($final[11]), 2);
+ return "$magic$salt\$$passwd";
+}
+
+function create_salt ()
+{
+ srand ((double) microtime ()*1000000);
+ $salt = substr (md5 (rand (0,9999999)), 0, 8);
+ return $salt;
+}
+
+function hex2bin ($str)
+{
+ $len = strlen ($str);
+ $nstr = "";
+ for ($i=0;$i<$len;$i+=2)
+ {
+ $num = sscanf (substr ($str,$i,2), "%x");
+ $nstr.=chr ($num[0]);
+ }
+ return $nstr;
+}
+
+function to64 ($v, $n)
+{
+ global $ITOA64;
+ $ret = "";
+ while (($n - 1) >= 0)
+ {
+ $n--;
+ $ret .= $ITOA64[$v & 0x3f];
+ $v = $v >> 6;
+ }
+ return $ret;
+}
+
+
+
+//
+// smtp_mail
+// Action: Sends email to new account.
+// Call: smtp_mail (string To, string From, string Data)
+//
+function smtp_mail ($to, $from, $data)
+{
+ global $CONF;
+ $smtp_server = $CONF['smtp_server'];
+ $smtp_port = $CONF['smtp_port'];
+ $errno = "0";
+ $errstr = "0";
+ $timeout = "30";
+
+ $fh = @fsockopen ($smtp_server, $smtp_port, $errno, $errstr, $timeout);
+
+ if (!$fh)
+ {
+ return false;
+ }
+ else
+ {
+ fputs ($fh, "EHLO $smtp_server\r\n");
+ $res = fgets ($fh, 256);
+ fputs ($fh, "MAIL FROM:<$from>\r\n");
+ $res = fgets ($fh, 256);
+ fputs ($fh, "RCPT TO:<$to>\r\n");
+ $res = fgets ($fh, 256);
+ fputs ($fh, "DATA\r\n");
+ $res = fgets ($fh, 256);
+ fputs ($fh, "$data\r\n.\r\n");
+ $res = fgets ($fh, 256);
+ fputs ($fh, "QUIT\r\n");
+ $res = fgets ($fh, 256);
+ fclose ($fh);
+ }
+ return true;
+}
+
+
+
+$DEBUG_TEXT = "\n
+<p />\n
+Please check the documentation and website for more information.\n
+<p />\n
+<a href=\"http://high5.net/postfixadmin/\">Postfix Admin</a><br />\n
+<a href=\"http://forums.high5.net/index.php?showforum=7\">Knowledge Base</a>\n
+";
+
+//
+// db_connect
+// Action: Makes a connection to the database if it doesn't exist
+// Call: db_connect ()
+//
+function db_connect ()
+{
+ global $CONF;
+ global $DEBUG_TEXT;
+ $link = "";
+
+ if ($CONF['database_type'] == "mysql")
+ {
+ if (function_exists ("mysql_connect"))
+ {
+ $link = @mysql_connect ($CONF['database_host'], $CONF['database_user'], $CONF['database_password']) or die ("<p />DEBUG INFORMATION:<br />Connect: " . mysql_error () . "$DEBUG_TEXT");
+ $succes = @mysql_select_db ($CONF['database_name'], $link) or die ("<p />DEBUG INFORMATION:<br />MySQL Select Database: " . mysql_error () . "$DEBUG_TEXT");
+ }
+ else
+ {
+ print "<p />DEBUG INFORMATION:<br />MySQL 3.x / 4.0 functions not available!<br />database_type = 'mysql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
+ die;
+ }
+ }
+
+ if ($CONF['database_type'] == "mysqli")
+ {
+ if (function_exists ("mysqli_connect"))
+ {
+ $link = @mysqli_connect ($CONF['database_host'], $CONF['database_user'], $CONF['database_password']) or die ("<p />DEBUG INFORMATION:<br />Connect: " . mysqli_connect_error () . "$DEBUG_TEXT");
+ $succes = @mysqli_select_db ($link, $CONF['database_name']) or die ("<p />DEBUG INFORMATION:<br />MySQLi Select Database: " . mysqli_error () . "$DEBUG_TEXT");
+ }
+ else
+ {
+ print "<p />DEBUG INFORMATION:<br />MySQL 4.1 functions not available!<br />database_type = 'mysqli' in config.inc.php, are you using a different database? $DEBUG_TEXT";
+ die;
+ }
+ }
+
+ if ($CONF['database_type'] == "pgsql")
+ {
+ if (function_exists ("pg_connect"))
+ {
+ $connect_string = "host=" . $CONF['database_host'] . " dbname=" . $CONF['database_name'] . " user=" . $CONF['database_user'] . " password=" . $CONF['database_password'];
+ $link = @pg_connect ($connect_string) or die ("<p />DEBUG INFORMATION:<br />Connect: " . pg_last_error () . "$DEBUG_TEXT");
+ }
+ else
+ {
+ print "<p />DEBUG INFORMATION:<br />PostgreSQL functions not available!<br />database_type = 'pgsql' in config.inc.php, are you using a different database? $DEBUG_TEXT";
+ die;
+ }
+ }
+
+ if ($link)
+ {
+ return $link;
+ }
+ else
+ {
+ print "DEBUG INFORMATION:<br />\n";
+ print "Connect: Unable to connect to database<br />\n";
+ print "<br />\n";
+ print "Make sure that you have set the correct database type in the config.inc.php file<br />\n";
+ print $DEBUG_TEXT;
+ die;
+ }
+}
+
+
+
+//
+// db_query
+// Action: Sends a query to the database and returns query result and number of rows
+// Call: db_query (string query)
+//
+function db_query ($query)
+{
+ global $CONF;
+ global $DEBUG_TEXT;
+ $result = "";
+ $number_rows = "";
+
+ $link = db_connect ();
+
+ // database prefix workaround
+ if (!empty ($CONF['database_prefix']))
+ {
+ if (eregi ("^SELECT", $query))
+ {
+ $query = substr ($query, 0, 14) . $CONF['database_prefix'] . substr ($query, 14);
+ }
+ else
+ {
+ $query = substr ($query, 0, 6) . $CONF['database_prefix'] . substr ($query, 7);
+ }
+ }
+
+ if ($CONF['database_type'] == "mysql") $result = @mysql_query ($query, $link) or die ("<p />DEBUG INFORMATION:<br />Invalid query: " . mysql_error() . "$DEBUG_TEXT");
+ if ($CONF['database_type'] == "mysqli") $result = @mysqli_query ($link, $query) or die ("<p />DEBUG INFORMATION:<br />Invalid query: " . mysqli_error() . "$DEBUG_TEXT");
+ if ($CONF['database_type'] == "pgsql")
+ {
+ if (eregi ("LIMIT", $query))
+ {
+ $search = "/LIMIT (\w+), (\w+)/";
+ $replace = "LIMIT \$2 OFFSET \$1";
+ $query = preg_replace ($search, $replace, $query);
+ }
+ $result = @pg_query ($link, $query) or die ("<p />DEBUG INFORMATION:<br />Invalid query: " . pg_last_error() . "$DEBUG_TEXT");
+ }
+
+ if (eregi ("^SELECT", $query))
+ {
+ // if $query was a SELECT statement check the number of rows with [database_type]_num_rows ().
+ if ($CONF['database_type'] == "mysql") $number_rows = mysql_num_rows ($result);
+ if ($CONF['database_type'] == "mysqli") $number_rows = mysqli_num_rows ($result);
+ if ($CONF['database_type'] == "pgsql") $number_rows = pg_num_rows ($result);
+ }
+ else
+ {
+ // if $query was something else, UPDATE, DELETE or INSERT check the number of rows with
+ // [database_type]_affected_rows ().
+ if ($CONF['database_type'] == "mysql") $number_rows = mysql_affected_rows ($link);
+ if ($CONF['database_type'] == "mysqli") $number_rows = mysqli_affected_rows ($link);
+ if ($CONF['database_type'] == "pgsql") $number_rows = pg_affected_rows ($result);
+ }
+
+ if ($CONF['database_type'] == "mysql") mysql_close ($link);
+ if ($CONF['database_type'] == "mysqli") mysqli_close ($link);
+ if ($CONF['database_type'] == "pgsql") pg_close ($link);
+
+ $return = array (
+ "result" => $result,
+ "rows" => $number_rows
+ );
+ return $return;
+}
+
+
+
+// db_row
+// Action: Returns a row from a table
+// Call: db_row (int result)
+//
+function db_row ($result)
+{
+ global $CONF;
+ $row = "";
+ if ($CONF['database_type'] == "mysql") $row = mysql_fetch_row ($result);
+ if ($CONF['database_type'] == "mysqli") $row = mysqli_fetch_row ($result);
+ if ($CONF['database_type'] == "pgsql") $row = pg_fetch_row ($result);
+ return $row;
+}
+
+
+
+// db_array
+// Action: Returns a row from a table
+// Call: db_array (int result)
+//
+function db_array ($result)
+{
+ global $CONF;
+ $row = "";
+ if ($CONF['database_type'] == "mysql") $row = mysql_fetch_array ($result);
+ if ($CONF['database_type'] == "mysqli") $row = mysqli_fetch_array ($result);
+ if ($CONF['database_type'] == "pgsql") $row = pg_fetch_array ($result);
+ return $row;
+}
+
+
+
+// db_assoc
+// Action: Returns a row from a table
+// Call: db_assoc(int result)
+//
+function db_assoc ($result)
+{
+ global $CONF;
+ $row = "";
+ if ($CONF['database_type'] == "mysql") $row = mysql_fetch_assoc ($result);
+ if ($CONF['database_type'] == "mysqli") $row = mysqli_fetch_assoc ($result);
+ if ($CONF['database_type'] == "pgsql") $row = pg_fetch_assoc ($result);
+ return $row;
+}
+
+
+
+//
+// db_delete
+// Action: Deletes a row from a specified table
+// Call: db_delete (string table, string where, string delete)
+//
+function db_delete ($table,$where,$delete)
+{
+ $result = db_query ("DELETE FROM $table WHERE $where='$delete'");
+ if ($result['rows'] >= 1)
+ {
+ return $result['rows'];
+ }
+ else
+ {
+ return true;
+ }
+}
+
+
+
+//
+// db_log
+// Action: Logs actions from admin
+// Call: db_delete (string username, string domain, string action, string data)
+//
+function db_log ($username,$domain,$action,$data)
+{
+ global $CONF;
+ $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
+
+ if ($CONF['logging'] == 'YES')
+ {
+ $result = db_query ("INSERT INTO log (timestamp,username,domain,action,data) VALUES (NOW(),'$username ($REMOTE_ADDR)','$domain','$action','$data')");
+ if ($result['rows'] != 1)
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+}
+
+?>
diff --git a/images/arrow-l.png b/images/arrow-l.png
new file mode 100644
index 0000000..739ec21
--- /dev/null
+++ b/images/arrow-l.png
Binary files differ
diff --git a/images/arrow-r.png b/images/arrow-r.png
new file mode 100644
index 0000000..8d85a91
--- /dev/null
+++ b/images/arrow-r.png
Binary files differ
diff --git a/images/arrow-u.png b/images/arrow-u.png
new file mode 100644
index 0000000..63c33ce
--- /dev/null
+++ b/images/arrow-u.png
Binary files differ
diff --git a/images/index.php b/images/index.php
new file mode 100644
index 0000000..032abd6
--- /dev/null
+++ b/images/index.php
@@ -0,0 +1,17 @@
+<?php
+//
+// File: index.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+header ("Location: ../login.php");
+exit;
+?>
diff --git a/images/postbox.png b/images/postbox.png
new file mode 100644
index 0000000..ea830bf
--- /dev/null
+++ b/images/postbox.png
Binary files differ
diff --git a/images/postfixadmin.png b/images/postfixadmin.png
new file mode 100644
index 0000000..aa81e96
--- /dev/null
+++ b/images/postfixadmin.png
Binary files differ
diff --git a/images/postfixadmin2.png b/images/postfixadmin2.png
new file mode 100644
index 0000000..14b3e93
--- /dev/null
+++ b/images/postfixadmin2.png
Binary files differ
diff --git a/images/postfixadmin2.xcf b/images/postfixadmin2.xcf
new file mode 100644
index 0000000..ffae5fa
--- /dev/null
+++ b/images/postfixadmin2.xcf
Binary files differ
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..c40197d
--- /dev/null
+++ b/index.php
@@ -0,0 +1,55 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: index.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+if (!file_exists (realpath ("./setup.php")))
+{
+ header ("Location: login.php");
+ exit;
+}
+else
+{
+ print <<< EOF
+<html>
+<head>
+<title>Welcome to Postfix Admin</title>
+</head>
+<body>
+<img id="login_header_logo" src="images/postbox.png" />
+<img id="login_header_logo" src="images/postfixadmin2.png" />
+<h1>Welcome to Postfix Admin</h1>
+It seems that you are running this version of Postfix Admin for the first time.<br />
+<p />
+You can now run <a href="setup.php">setup</a> to make sure that all the functions are available for Postfix Admin to run.<br />
+<p />
+If you still encounter any problems please check the documentation and website for more information.
+<p />
+Your donations keep this project running...
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick">
+<input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-but04.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHDgYJKoZIhvcNAQcEoIIG/zCCBvsCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAaWZJT9HWnL5r84t1G3lE63Fs8NGVgfq49mgflefUQOeVfKUG7NXZOkJT/FxH+SLf2c20VGRhol6vr0EqlMbJYkqeAJJIEHDVe8OiiYV1MYDWBRoJ5TRUCVurbFq9DnMokHohXBsdYjtAAxwvw6m9MZucVkZfg83QsgrfqeFpDNTELMAkGBSsOAwIaBQAwgYsGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIC0DzenYGQ6SAaKk6zKCl+ULUPl5c4pT4u0dpzFLw3sXBESPspq92l37FQXdxLzp2qaeP2StIXgU828PbJxt5ilucTLmnfkhpoeSdbvrlfiYJQbI1kjtHi0gIO4Hp0iUmaRaOTAEcNYfO84xxce0rJlfdoIIDhzCCA4MwggLsoAMCAQICAQAwDQYJKoZIhvcNAQEFBQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMB4XDTA0MDIxMzEwMTMxNVoXDTM1MDIxMzEwMTMxNVowgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBR07d/ETMS1ycjtkpkvjXZe9k+6CieLuLsPumsJ7QC1odNz3sJiCbs2wC0nLE0uLGaEtXynIgRqIddYCHx88pb5HTXv4SZeuv0Rqq4+axW9PLAAATU8w04qqjaSXgbGLP3NmohqM6bV9kZZwZLR/klDaQGo1u9uDb9lr4Yn+rBQIDAQABo4HuMIHrMB0GA1UdDgQWBBSWn3y7xm8XvVk/UtcKG+wQ1mSUazCBuwYDVR0jBIGzMIGwgBSWn3y7xm8XvVk/UtcKG+wQ1mSUa6GBlKSBkTCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb22CAQAwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCBXzpWmoBa5e9fo6ujionW1hUhPkOBakTr3YCDjbYfvJEiv/2P+IobhOGJr85+XHhN0v4gUkEDI8r2/rNk1m0GA8HKddvTjyGw/XqXa+LSTlDYkqI8OwR8GEYj4efEtcRpRYBxV8KxAW93YDWzFGvruKnnLbDAF6VR5w/cCMn5hzGCAZowggGWAgEBMIGUMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbQIBADAJBgUrDgMCGgUAoF0wGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMDQwOTE3MTUwNzEzWjAjBgkqhkiG9w0BCQQxFgQUXsDlCR/SO8MRWqCsrkZ7wbU4RZAwDQYJKoZIhvcNAQEBBQAEgYCPDjlGd7bghDtcCDiPl7DPgV6/vT4vc5bn5ygoqIahQF5Asu9v+Qocb+vMEPq+IZampJ/XlcGzwmzY23IfeVAq4aosqM265rDxyfmnzmiApO/KCJS7pN8dBVeDLEXGNYo1s73Ch0lETohWwYHKNKk+Wwe3+6tFhumthRHbpqQ4dw==-----END PKCS7-----">
+</form>
+<p />
+<a href="http://high5.net/postfixadmin/">Postfix Admin</a><br />
+<a href="http://forums.high5.net/index.php?showforum=7">Knowledge Base</a>
+</body>
+</html>
+EOF;
+}
+?>
diff --git a/languages/bg.lang b/languages/bg.lang
new file mode 100644
index 0000000..ee79589
--- /dev/null
+++ b/languages/bg.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Bulgarian
+// by Plamen Tonev
+//
+$PALANG['YES'] = '';
+$PALANG['NO'] = '';
+$PALANG['edit'] = '';
+$PALANG['del'] = '';
+$PALANG['confirm'] = ' , ?\n';
+$PALANG['confirm_domain'] = ' ? !\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = ' .';
+$PALANG['pLogin_username'] = ' (-)';
+$PALANG['pLogin_password'] = '';
+$PALANG['pLogin_button'] = '';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg"> . - !</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg"> !</span>';
+$PALANG['pLogin_login_users'] = ' .';
+
+$PALANG['pMenu_overview'] = '';
+$PALANG['pMenu_create_alias'] = ' Alias';
+$PALANG['pMenu_create_mailbox'] = ' ';
+$PALANG['pMenu_sendmail'] = ' Email';
+$PALANG['pMenu_password'] = '';
+$PALANG['pMenu_viewlog'] = ' Log';
+$PALANG['pMenu_logout'] = '';
+
+$PALANG['pMain_welcome'] = ' !';
+$PALANG['pMain_overview'] = ' alias- . /.';
+$PALANG['pMain_create_alias'] = ' alias .';
+$PALANG['pMain_create_mailbox'] = ' .';
+$PALANG['pMain_sendmail'] = ' - .';
+$PALANG['pMain_password'] = ' .';
+$PALANG['pMain_viewlog'] = ' log .';
+$PALANG['pMain_logout'] = ' ';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = '';
+$PALANG['pOverview_welcome'] = ' ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias-';
+$PALANG['pOverview_alias_mailbox_count'] = ' ';
+$PALANG['pOverview_alias_address'] = '';
+$PALANG['pOverview_alias_goto'] = '';
+$PALANG['pOverview_alias_modified'] = ' ';
+$PALANG['pOverview_mailbox_username'] = '-';
+$PALANG['pOverview_mailbox_name'] = '';
+$PALANG['pOverview_mailbox_quota'] = ' (MB)';
+$PALANG['pOverview_mailbox_modified'] = ' ';
+$PALANG['pOverview_mailbox_active'] = '';
+
+$PALANG['pOverview_get_domain'] = '';
+$PALANG['pOverview_get_aliases'] = 'Alias-';
+$PALANG['pOverview_get_mailboxes'] = ' ';
+$PALANG['pOverview_get_quota'] = ' (MB)';
+$PALANG['pOverview_get_modified'] = ' ';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg"> ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg"> ! ';
+
+$PALANG['pCreate_alias_welcome'] = ' alias .';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg"> ALIAS !</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg"> - , !</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg"> alias-!</span>';
+$PALANG['pCreate_alias_goto'] = '';
+$PALANG['pCreate_alias_button'] = ' Alias';
+$PALANG['pCreate_alias_goto_text'] = ' .';
+$PALANG['pCreate_alias_goto_text_error'] = ' .<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg"> alias- !</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias- !';
+$PALANG['pCreate_alias_catchall_text'] = ' catch-all "*" alias.<br /> "*@domain.tld" .';
+
+$PALANG['pEdit_alias_welcome'] = ' alias .<br /> .';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg"> alias!</span>';
+$PALANG['pEdit_alias_goto'] = '';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg"> </span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">- , : ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_alias_button'] = ' Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg"> alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = ' .';
+$PALANG['pCreate_mailbox_username'] = '';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">-- !</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg"> - , !</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_password'] = '';
+$PALANG['pCreate_mailbox_password2'] = ' ()';
+$PALANG['pCreate_mailbox_password_text'] = ' POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = ' POP3/IMAP<br /><span class="error_msg">, !<br /> !</span>';
+$PALANG['pCreate_mailbox_name'] = '';
+$PALANG['pCreate_mailbox_name_text'] = ' ';
+$PALANG['pCreate_mailbox_quota'] = '';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">, !</span>';
+$PALANG['pCreate_mailbox_active'] = '';
+$PALANG['pCreate_mailbox_mail'] = ' ';
+$PALANG['pCreate_mailbox_button'] = ' ';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_result_succes'] = ' !';
+
+$PALANG['pEdit_mailbox_welcome'] = ' .';
+$PALANG['pEdit_mailbox_username'] = '';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_password'] = ' ';
+$PALANG['pEdit_mailbox_password2'] = ' ()';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">, !</span>';
+$PALANG['pEdit_mailbox_name'] = '';
+$PALANG['pEdit_mailbox_quota'] = '';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">, !</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_mailbox_button'] = ' ';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pPassword_welcome'] = ' .';
+$PALANG['pPassword_admin'] = '';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">-, !</span>';
+$PALANG['pPassword_password_current'] = ' ';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_password'] = ' ';
+$PALANG['pPassword_password2'] = ' ()';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">, !<br /> !</span>';
+$PALANG['pPassword_button'] = ' ';
+$PALANG['pPassword_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_result_succes'] = ' !';
+
+$PALANG['pViewlog_welcome'] = ' 10 ';
+$PALANG['pViewlog_timestamp'] = '';
+$PALANG['pViewlog_username'] = '';
+$PALANG['pViewlog_domain'] = '';
+$PALANG['pViewlog_action'] = '';
+$PALANG['pViewlog_data'] = '';
+
+$PALANG['pViewlog_button'] = '';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pSendmail_welcome'] = ' -.';
+$PALANG['pSendmail_admin'] = '';
+$PALANG['pSendmail_to'] = '';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg"> - !</span>';
+$PALANG['pSendmail_subject'] = '';
+$PALANG['pSendmail_subject_text'] = ' ';
+$PALANG['pSendmail_body'] = '';
+$PALANG['pSendmail_button'] = '';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pSendmail_result_succes'] = ' !';
+
+$PALANG['pAdminMenu_list_admin'] = ' ';
+$PALANG['pAdminMenu_list_domain'] = ' ';
+$PALANG['pAdminMenu_list_virtual'] = ' ';
+$PALANG['pAdminMenu_viewlog'] = ' ';
+$PALANG['pAdminMenu_backup'] = ' ';
+$PALANG['pAdminMenu_create_domain_admins'] = ' ';
+$PALANG['pAdminMenu_create_admin'] = ' ';
+$PALANG['pAdminMenu_create_domain'] = ' ';
+$PALANG['pAdminMenu_create_alias'] = ' Alias';
+$PALANG['pAdminMenu_create_mailbox'] = ' ';
+
+$PALANG['pAdminList_admin_domain'] = '';
+$PALANG['pAdminList_admin_username'] = '';
+$PALANG['pAdminList_admin_count'] = '';
+$PALANG['pAdminList_admin_modified'] = ' ';
+$PALANG['pAdminList_admin_active'] = '';
+
+$PALANG['pAdminList_domain_domain'] = '';
+$PALANG['pAdminList_domain_description'] = '';
+$PALANG['pAdminList_domain_aliases'] = 'Alias-';
+$PALANG['pAdminList_domain_mailboxes'] = ' ';
+$PALANG['pAdminList_domain_maxquota'] = ' (MB)';
+$PALANG['pAdminList_domain_modified'] = ' ';
+$PALANG['pAdminList_domain_active'] = '';
+$PALANG['pAdminList_domain_modified'] = 'Last Modified';
+$PALANG['pAdminList_domain_active'] = 'Active';
+
+$PALANG['pAdminList_virtual_button'] = '';
+$PALANG['pAdminList_virtual_welcome'] = ' ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias-';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = ' ';
+$PALANG['pAdminList_virtual_alias_address'] = '';
+$PALANG['pAdminList_virtual_alias_goto'] = '';
+$PALANG['pAdminList_virtual_alias_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_username'] = '-';
+$PALANG['pAdminList_virtual_mailbox_name'] = '';
+$PALANG['pAdminList_virtual_mailbox_quota'] = ' (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_active'] = '';
+
+$PALANG['pAdminCreate_domain_welcome'] = ' ';
+$PALANG['pAdminCreate_domain_domain'] = '';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_description'] = '';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias-';
+$PALANG['pAdminCreate_domain_aliases_text'] = '0 = | -1 = ';
+$PALANG['pAdminCreate_domain_mailboxes'] = ' ';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '0 = | -1 = ';
+$PALANG['pAdminCreate_domain_maxquota'] = ' ';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> 0 = | -1 = ';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = ' alias- ';
+$PALANG['pAdminCreate_domain_backupmx'] = ' MX';
+$PALANG['pAdminCreate_domain_button'] = ' ';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = ' !';
+
+$PALANG['pAdminEdit_domain_welcome'] = ' ';
+$PALANG['pAdminEdit_domain_domain'] = '';
+$PALANG['pAdminEdit_domain_description'] = '';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias-';
+$PALANG['pAdminEdit_domain_aliases_text'] = '0 = | -1 = ';
+$PALANG['pAdminEdit_domain_mailboxes'] = ' ';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '0 = | -1 = ';
+$PALANG['pAdminEdit_domain_maxquota'] = ' ';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> 0 = | -1 = ';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = ' MX';
+$PALANG['pAdminEdit_domain_active'] = '';
+$PALANG['pAdminEdit_domain_button'] = ' ';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = ' ';
+$PALANG['pAdminCreate_admin_username'] = '';
+$PALANG['pAdminCreate_admin_username_text'] = '- ';
+$PALANG['pAdminCreate_admin_username_text_error1'] = '- <br /><span class="error_msg"> - !</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = '- <br /><span class="error_msg">- </span>';
+$PALANG['pAdminCreate_admin_password'] = '';
+$PALANG['pAdminCreate_admin_password2'] = ' ()';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">, !<br /> !</span>';
+$PALANG['pAdminCreate_admin_button'] = ' ';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = ' !';
+$PALANG['pAdminCreate_admin_address'] = '';
+
+$PALANG['pAdminEdit_admin_welcome'] = ' ';
+$PALANG['pAdminEdit_admin_username'] = '';
+$PALANG['pAdminEdit_admin_password'] = '';
+$PALANG['pAdminEdit_admin_password2'] = ' ()';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">, !<br /> !</span>';
+$PALANG['pAdminEdit_admin_active'] = '';
+$PALANG['pAdminEdit_admin_button'] = ' ';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = '- !';
+
+$PALANG['pUsersLogin_welcome'] = ' alias-.';
+$PALANG['pUsersLogin_username'] = ' (-)';
+$PALANG['pUsersLogin_password'] = '';
+$PALANG['pUsersLogin_button'] = '';
+$PALANG['pUsersLogin_username_incorrect'] = ' . - !';
+$PALANG['pUsersLogin_password_incorrect'] = ' !';
+
+$PALANG['pUsersMenu_vacation'] = ' ';
+$PALANG['pUsersMenu_edit_alias'] = ' ';
+$PALANG['pUsersMenu_password'] = ' ';
+
+$PALANG['pUsersMain_vacation'] = ' "out of office" -.';
+$PALANG['pUsersMain_edit_alias'] = ' -.';
+$PALANG['pUsersMain_password'] = ' .';
+
+$PALANG['pUsersVacation_welcome'] = ' .';
+$PALANG['pUsersVacation_welcome_text'] = ' !';
+$PALANG['pUsersVacation_subject'] = '';
+$PALANG['pUsersVacation_subject_text'] = 'Out of Office';
+$PALANG['pUsersVacation_body'] = '';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+ <date> <date>.
+ <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = ' ';
+$PALANG['pUsersVacation_button_back'] = ' ';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pUsersVacation_result_succes'] = ' !';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/ca.lang b/languages/ca.lang
new file mode 100644
index 0000000..9e08351
--- /dev/null
+++ b/languages/ca.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Catalan
+// by Jaume
+//
+$PALANG['YES'] = 'SI';
+$PALANG['NO'] = 'NO';
+$PALANG['edit'] = 'editar';
+$PALANG['del'] = 'esborrar';
+$PALANG['confirm'] = 'Segur que vols esborrar-lo?\n';
+$PALANG['confirm_domain'] = 'Estas segur que vols borrar tots els registres d\'aquest domini? Aix no podr ser desfet!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Login d\'administrador per l\'administraci de dominis.';
+$PALANG['pLogin_username'] = 'Usuari (e-mail)';
+$PALANG['pLogin_password'] = 'Contrasenya';
+$PALANG['pLogin_button'] = 'Usuari';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">El login no s correcte. Aseguri\'s de que ha fet login amb el seu e-mail.</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">La seva contrasenya no es correcta!</span>';
+$PALANG['pLogin_login_users'] = 'Login per anar a la secci d\'usuaris.';
+$PALANG['pMenu_overview'] = 'Resum';
+$PALANG['pMenu_create_alias'] = 'Afegir lies';
+$PALANG['pMenu_create_mailbox'] = 'Afegir bstia';
+$PALANG['pMenu_sendmail'] = 'Enviar e-mail';
+$PALANG['pMenu_password'] = 'Contrasenya';
+$PALANG['pMenu_viewlog'] = 'Veure Logs';
+$PALANG['pMenu_logout'] = 'Sortir';
+
+$PALANG['pMain_welcome'] = 'Benvingut al Postfix Admin!';
+$PALANG['pMain_overview'] = 'Llistat dels seus lies i bsties. Pot editar-los / borrar-los des d\'aqu.';
+$PALANG['pMain_create_alias'] = 'Creaci d\'un nou lies pel seu domini.';
+$PALANG['pMain_create_mailbox'] = 'Creaci d\'una nova bstia pel seu domini.';
+$PALANG['pMain_sendmail'] = 'Enviar un e-mail a una de les bsties acabades de crear.';
+$PALANG['pMain_password'] = 'Canviar la contrasenya per la seva compta d\'administraci.';
+$PALANG['pMain_viewlog'] = 'Veure Logs.';
+$PALANG['pMain_logout'] = 'Sortir.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Ves';
+$PALANG['pOverview_welcome'] = 'Resum de ';
+$PALANG['pOverview_alias_alias_count'] = 'lies';
+$PALANG['pOverview_alias_mailbox_count'] = 'Bsties';
+$PALANG['pOverview_alias_address'] = 'De';
+$PALANG['pOverview_alias_goto'] = 'Dest';
+$PALANG['pOverview_alias_modified'] = 'ltima modificaci';
+$PALANG['pOverview_mailbox_username'] = 'E-mail';
+$PALANG['pOverview_mailbox_name'] = 'Nom';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'ltima modificaci';
+$PALANG['pOverview_mailbox_active'] = 'Actiu';
+
+$PALANG['pOverview_get_domain'] = 'Domini';
+$PALANG['pOverview_get_aliases'] = 'lies';
+$PALANG['pOverview_get_mailboxes'] = 'Bsties';
+$PALANG['pOverview_get_quota'] = 'Quota de bstia (MB)';
+$PALANG['pOverview_get_modified'] = 'ltima Modificaci';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Imposible borrar el registre ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Aquest domini no et pertany ';
+
+$PALANG['pCreate_alias_welcome'] = 'Crear un nou lies pel domini.';
+$PALANG['pCreate_alias_address'] = 'lies';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">L\'lies no s vlid!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Aquesta adrea ja existeix, escull una altra de diferent, si us plau!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Has arribat al lmit de creaci d\'lies!</span>';
+$PALANG['pCreate_alias_goto'] = 'Dest';
+$PALANG['pCreate_alias_button'] = 'Afegir lies';
+$PALANG['pCreate_alias_goto_text'] = 'A on ha de ser enviat l\'e-mail.';
+$PALANG['pCreate_alias_goto_text_error'] = 'A on ha de ser enviat l\'e-mail.<br /><span class="error_msg">El dest no s vlid!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">No s posible afegir l\'lies a la taula d\'lies!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'L\'lies ha estat creat correctament!';
+$PALANG['pCreate_alias_catchall_text'] = 'Per crear un lies general usi "*" com a lies.<br />Per una redirecci de domini a domini, usi "*@domain.tld" com a Dest.';
+
+$PALANG['pEdit_alias_welcome'] = 'Editi un lies pel seu domini.<br />Una entrada per lnia.';
+$PALANG['pEdit_alias_address'] = 'lies';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Imposible de localizar l\'lies!</span>';
+$PALANG['pEdit_alias_goto'] = 'Dest';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">No has introdut res al dest</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">L\'adrea d\'e-mail introduida no s vlida: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Aquest domini no et pertany: ';
+$PALANG['pEdit_alias_button'] = 'Editar lies';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Imposible modificar l\'lies!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Crear una nova bstia pel seu domini.';
+$PALANG['pCreate_mailbox_username'] = 'Usuari';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">L\'e-mail no s vlido!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Aquest e-mail ja existeix, escull un de diferente si us plau!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Has arribat al lmit de creaci de bsties!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Contrasenya';
+$PALANG['pCreate_mailbox_password2'] = 'Contrasenya (repetir)';
+$PALANG['pCreate_mailbox_password_text'] = 'Contrasenya per a POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Contrasenya per a POP3/IMAP<br /><span class="error_msg">Les contrasenyes introduides no coincideixen<br />o estan en blanc!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nom';
+$PALANG['pCreate_mailbox_name_text'] = 'Nom complet';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La quota especificada s massa alta!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Actiu';
+$PALANG['pCreate_mailbox_mail'] = 'Crear bstia';
+$PALANG['pCreate_mailbox_button'] = 'Afegir bstia';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Imposible afegir una bstia a la taula de bsties!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'La bstia ha estat afegida a la taula de bsties!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Editar una bstia pel seu domini.';
+$PALANG['pEdit_mailbox_username'] = 'Usuari';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Imposible localitzar la bstia!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nova contrasenya';
+$PALANG['pEdit_mailbox_password2'] = 'Nova contrasenya (repetiu)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Les contrasenyes introduides no coincideixen!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nom';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La quota especificada s massa alta!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Aquest domini no et pertany: ';
+$PALANG['pEdit_mailbox_button'] = 'Editar bstia';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Imposible canviar la contrasenya!</span>';
+
+$PALANG['pPassword_welcome'] = 'Canvia la teva contrasenya de login.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">El login suministrat no coincideix amb cap bstia!</span>';
+$PALANG['pPassword_password_current'] = 'Contrasenya actual';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">No ha introdut la contrasenya actual!</span>';
+$PALANG['pPassword_password'] = 'Nova contrasenya';
+$PALANG['pPassword_password2'] = 'Nova contrasenya (repetiu)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Les contrasenyes introduides no coincideixen<br />o estan en blanc!</span>';
+$PALANG['pPassword_button'] = 'Canviar la contrasenya';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Imposible canviar la contrasenya!</span>';
+$PALANG['pPassword_result_succes'] = 'La seva contrasenya ha estat canviada!';
+
+$PALANG['pViewlog_welcome'] = 'Veure les ltimes 10 accions per ';
+$PALANG['pViewlog_timestamp'] = 'Data/Hora';
+$PALANG['pViewlog_username'] = 'Administrador';
+$PALANG['pViewlog_domain'] = 'Domini';
+$PALANG['pViewlog_action'] = 'Acci';
+$PALANG['pViewlog_data'] = 'Dades';
+
+$PALANG['pViewlog_button'] = 'Ves';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Imposible trobar els logs!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Enviar un e-mail.';
+$PALANG['pSendmail_admin'] = 'De';
+$PALANG['pSendmail_to'] = 'Dest';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">La direcci de dest est buida o s una direcci invlida!</span>';
+$PALANG['pSendmail_subject'] = 'Assumpte';
+$PALANG['pSendmail_subject_text'] = 'Benvingut';
+$PALANG['pSendmail_body'] = 'Cos';
+$PALANG['pSendmail_button'] = 'Enviar missatge';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Imposible crear la bstia!</span>';
+$PALANG['pSendmail_result_succes'] = 'La bstia ha estat creada!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Llistat d\'administradors';
+$PALANG['pAdminMenu_list_domain'] = 'Llistat de dominis';
+$PALANG['pAdminMenu_list_virtual'] = 'Llista de direccions virtuals';
+$PALANG['pAdminMenu_viewlog'] = 'Veure Logs';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Administradors de domini';
+$PALANG['pAdminMenu_create_admin'] = 'Nou administrador';
+$PALANG['pAdminMenu_create_domain'] = 'Nou dominio';
+$PALANG['pAdminMenu_create_alias'] = 'Afegir lies';
+$PALANG['pAdminMenu_create_mailbox'] = 'Afegir bstia';
+
+$PALANG['pAdminList_admin_domain'] = 'Domini';
+$PALANG['pAdminList_admin_username'] = 'Administrador';
+$PALANG['pAdminList_admin_count'] = 'Dominis';
+$PALANG['pAdminList_admin_modified'] = 'ltima Modificaci';
+$PALANG['pAdminList_admin_active'] = 'Actiu';
+
+$PALANG['pAdminList_domain_domain'] = 'Domini';
+$PALANG['pAdminList_domain_description'] = 'Descripci';
+$PALANG['pAdminList_domain_aliases'] = 'lies';
+$PALANG['pAdminList_domain_mailboxes'] = 'Bsties';
+$PALANG['pAdminList_domain_maxquota'] = 'Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'ltima Modificaci';
+$PALANG['pAdminList_domain_active'] = 'Actiu';
+
+$PALANG['pAdminList_virtual_button'] = 'Ves';
+$PALANG['pAdminList_virtual_welcome'] = 'Resum de ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'lies';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Bsties';
+$PALANG['pAdminList_virtual_alias_address'] = 'De';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Dest';
+$PALANG['pAdminList_virtual_alias_modified'] = 'ltima Modificaci';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-mail';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nom';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'ltima Modificaci';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Actiu';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Afegir nou domini';
+$PALANG['pAdminCreate_domain_domain'] = 'Domini';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">El domini ja existeix!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Descripci';
+$PALANG['pAdminCreate_domain_aliases'] = 'lies';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Bsties';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Quota mxima';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Afegir lies per defecte';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Afegir domini';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Imposible afegir el domini!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'El domini ha estat afegit!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Editar un domini';
+$PALANG['pAdminEdit_domain_domain'] = 'Domini';
+$PALANG['pAdminEdit_domain_description'] = 'Descripci';
+$PALANG['pAdminEdit_domain_aliases'] = 'lies';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Bsties';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Quota mxima';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = ilimitat | 0 = deshabilitar';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Actiu';
+$PALANG['pAdminEdit_domain_button'] = 'Editar domini';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Imposible modificar el domini!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Afegir un nou administrador de domini';
+$PALANG['pAdminCreate_admin_username'] = 'Administrador';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-mail';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-mail<br /><span class="error_msg">Administrador no es un e-mail vlid!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-mail<br /><span class="error_msg">L\'administrador ja existeix o no es vlid!</span>';
+
+$PALANG['pAdminCreate_admin_password'] = 'Contrasenya';
+$PALANG['pAdminCreate_admin_password2'] = 'Contrasenya (repetiu)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Les contrasenyes introduides no coincideixen<br />o estan en blanc!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Afegir administrador';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Imposible afegir l\'administrador!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'L\'administrador ha estat afegit!';
+$PALANG['pAdminCreate_admin_address'] = 'Domini';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Editar un administrador de domini';
+$PALANG['pAdminEdit_admin_username'] = 'Administrador';
+$PALANG['pAdminEdit_admin_password'] = 'Contrasenya';
+$PALANG['pAdminEdit_admin_password2'] = 'Contrasenya (repetiu)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Les contrasenyes introduides no coincideixen<br />o estan en blanc!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Actiu';
+$PALANG['pAdminEdit_admin_button'] = 'Editar administrador';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Imposible modificar l\'administrador!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'L\'administrador ha estat modificat!';
+
+$PALANG['pUsersLogin_welcome'] = 'Login d\'usuaris per canviar la contrasenya i els lies.';
+$PALANG['pUsersLogin_username'] = 'Login (e-mail)';
+$PALANG['pUsersLogin_password'] = 'Contrasenya';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'El seu login no s correcte. Asseguri\'s d\'haver introdut la seva adrea d\'e-mail com a login!';
+$PALANG['pUsersLogin_password_incorrect'] = 'La seva contrasenya no s correcta!';
+
+$PALANG['pUsersMenu_vacation'] = 'Resposta automtica';
+$PALANG['pUsersMenu_edit_alias'] = 'Canviar la redirecci';
+$PALANG['pUsersMenu_password'] = 'Canviar la contrasenya';
+
+$PALANG['pUsersMain_vacation'] = 'Configuri un missatge de "Fora de la feina" o una resposta automtica pel seu correu.';
+$PALANG['pUsersMain_edit_alias'] = 'Canvi la seva redirecci de correu.';
+$PALANG['pUsersMain_password'] = 'Canvi la seva contrasenya.';
+
+$PALANG['pUsersVacation_welcome'] = 'Resposta automtica.';
+$PALANG['pUsersVacation_welcome_text'] = 'Ja disposa d\'una resposta automtica configurada!';
+$PALANG['pUsersVacation_subject'] = 'Assumpte';
+$PALANG['pUsersVacation_subject_text'] = 'Fora de la feina';
+$PALANG['pUsersVacation_body'] = 'Cos';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Ser fora des del <date> fins al <date>.
+Per assumptes urgents pot contactar amb mi a <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Absent';
+$PALANG['pUsersVacation_button_back'] = 'De tornada';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Imposible actualitzar la configuraci de la seva resposta automtica!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'La seva resposta automtica ha estat esborrada!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/cn.lang b/languages/cn.lang
new file mode 100644
index 0000000..a2deb46
--- /dev/null
+++ b/languages/cn.lang
@@ -0,0 +1,296 @@
+<?php
+//
+// Language file Simplified Chinese
+// by Matthew <matthew at cnfug dot org>
+//
+$PALANG['charset'] = 'gb2312';
+$PALANG['YES'] = '';
+$PALANG['NO'] = '';
+$PALANG['edit'] = '༭';
+$PALANG['del'] = 'ɾ';
+$PALANG['confirm'] = 'Ƿȷɾ?\n';
+$PALANG['confirm_domain'] = 'ǷȷҪɾем¼? ɾ󲻿ɻָ!\n';
+$PALANG['check_update'] = '°汾';
+
+$PALANG['pLogin_welcome'] = 'ʼԱ¼Թ.';
+$PALANG['pLogin_username'] = 'ʺ (ʼַ)';
+$PALANG['pLogin_password'] = '';
+$PALANG['pLogin_button'] = '¼';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">¼ʧ, ȷʹʼַ¼!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">!</span>';
+$PALANG['pLogin_login_users'] = 'ͨûû.';
+
+$PALANG['pMenu_overview'] = '';
+$PALANG['pMenu_create_alias'] = '½';
+$PALANG['pMenu_create_mailbox'] = '½';
+$PALANG['pMenu_sendmail'] = 'ʼ';
+$PALANG['pMenu_password'] = '޸';
+$PALANG['pMenu_viewlog'] = '鿴־';
+$PALANG['pMenu_logout'] = '˳';
+
+$PALANG['pMain_welcome'] = 'ӭPostfix Admin!';
+$PALANG['pMain_overview'] = 'ʾʼ. б༭/ɾ.';
+$PALANG['pMain_create_alias'] = '½һ.';
+$PALANG['pMain_create_mailbox'] = '½һ.';
+$PALANG['pMain_sendmail'] = 'һʼ½һ.';
+$PALANG['pMain_password'] = '޸ĹԱ.';
+$PALANG['pMain_viewlog'] = '鿴־ļ.';
+$PALANG['pMain_logout'] = '˳ϵͳ';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: ';
+$PALANG['pOverview_up_arrow'] = 'ض';
+$PALANG['pOverview_right_arrow'] = 'һҳ';
+$PALANG['pOverview_left_arrow'] = 'һҳ';
+$PALANG['pOverview_alias_title'] = ':: ';
+$PALANG['pOverview_mailbox_title'] = ':: ';
+$PALANG['pOverview_button'] = 'ִ';
+$PALANG['pOverview_welcome'] = ' ';
+$PALANG['pOverview_alias_alias_count'] = '';
+$PALANG['pOverview_alias_mailbox_count'] = '';
+$PALANG['pOverview_alias_address'] = 'ǰ';
+$PALANG['pOverview_alias_goto'] = 'ת';
+$PALANG['pOverview_alias_modified'] = '޸';
+$PALANG['pOverview_mailbox_username'] = 'ʼַ';
+$PALANG['pOverview_mailbox_name'] = '';
+$PALANG['pOverview_mailbox_quota'] = ' (MB)';
+$PALANG['pOverview_mailbox_modified'] = '޸';
+$PALANG['pOverview_mailbox_active'] = '';
+
+$PALANG['pOverview_get_domain'] = '';
+$PALANG['pOverview_get_aliases'] = '';
+$PALANG['pOverview_get_mailboxes'] = '';
+$PALANG['pOverview_get_quota'] = ' (MB)';
+$PALANG['pOverview_get_modified'] = '޸';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">ɾ¼';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">ûиĹȨ';
+
+$PALANG['pCreate_alias_welcome'] = '½һ.';
+$PALANG['pCreate_alias_address'] = '';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">ñǷ!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">ʼַѾ, ѡ!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">ıѾﵽ!</span>';
+$PALANG['pCreate_alias_goto'] = 'ת';
+$PALANG['pCreate_alias_button'] = '½';
+$PALANG['pCreate_alias_goto_text'] = 'ʼյַ.';
+$PALANG['pCreate_alias_goto_text_error'] = 'ʼյַ.<br /><span class="error_msg">յַȷ!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">ܽӵ!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'ӱɹ!';
+$PALANG['pCreate_alias_catchall_text'] = 'Ҫеʼȫתʹ"*"Ϊ.<br />תʹ"*@domain.tld".';
+
+$PALANG['pEdit_alias_welcome'] = '༭еı.<br />ÿһ¼.';
+$PALANG['pEdit_alias_address'] = '';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">ܶλ!</span>';
+$PALANG['pEdit_alias_goto'] = 'ת';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">ûд</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">ʼַǷ: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">ûиĹȨ: ';
+$PALANG['pEdit_alias_button'] = '༭';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">޸ĸñ!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = '½һ.';
+$PALANG['pCreate_mailbox_username'] = 'û';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">ʼǷ!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">ʼַѾ,ѡ!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">ַѾﵽ!</span>';
+$PALANG['pCreate_mailbox_password'] = '';
+$PALANG['pCreate_mailbox_password2'] = ' (ٴ)';
+$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP ';
+$PALANG['pCreate_mailbox_password_text_error'] = 'POP3/IMAP <br /><span class="error_msg">벻ͬ!<br />Ϊ!</span>';
+$PALANG['pCreate_mailbox_name'] = '';
+$PALANG['pCreate_mailbox_name_text'] = 'ȫ';
+$PALANG['pCreate_mailbox_quota'] = '';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">ƳΧ!</span>';
+$PALANG['pCreate_mailbox_active'] = '';
+$PALANG['pCreate_mailbox_mail'] = '½';
+$PALANG['pCreate_mailbox_button'] = '';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">ܽӵ!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'ɹ!';
+
+$PALANG['pEdit_mailbox_welcome'] = '༭е.';
+$PALANG['pEdit_mailbox_username'] = 'û';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">ܶ!</span>';
+$PALANG['pEdit_mailbox_password'] = '';
+$PALANG['pEdit_mailbox_password2'] = ' (֤)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">벻ͬ!</span>';
+$PALANG['pEdit_mailbox_name'] = '';
+$PALANG['pEdit_mailbox_quota'] = '';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">ƳΧ!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">ûиĹȨ: ';
+$PALANG['pEdit_mailbox_button'] = '༭';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">ܱ༭!</span>';
+
+$PALANG['pPassword_welcome'] = 'ĵ¼.';
+$PALANG['pPassword_admin'] = 'ʺ';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">ṩĵ¼ʺŲȷ!</span>';
+$PALANG['pPassword_password_current'] = 'ǰ';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">ûдǰ!</span>';
+$PALANG['pPassword_password'] = '';
+$PALANG['pPassword_password2'] = ' (֤)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">벻ͬ!<br />Ϊ!</span>';
+$PALANG['pPassword_button'] = '';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">ʧ!</span>';
+$PALANG['pPassword_result_succes'] = 'ɹ!';
+
+$PALANG['pViewlog_welcome'] = '鿴µ10־ : ';
+$PALANG['pViewlog_timestamp'] = 'ʱ';
+$PALANG['pViewlog_username'] = 'Ա';
+$PALANG['pViewlog_domain'] = '';
+$PALANG['pViewlog_action'] = '';
+$PALANG['pViewlog_data'] = '';
+
+$PALANG['pViewlog_button'] = 'ִ';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">δҵص־!</span>';
+
+$PALANG['pSendmail_welcome'] = 'ʼ.';
+$PALANG['pSendmail_admin'] = '';
+$PALANG['pSendmail_to'] = 'ռ';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">ռΪջռ˵ַȷ!</span>';
+$PALANG['pSendmail_subject'] = '';
+$PALANG['pSendmail_subject_text'] = 'ӭ';
+$PALANG['pSendmail_body'] = '';
+$PALANG['pSendmail_button'] = '';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">ʧ!</span>';
+$PALANG['pSendmail_result_succes'] = 'ɹ!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Ա嵥';
+$PALANG['pAdminMenu_list_domain'] = '嵥';
+$PALANG['pAdminMenu_list_virtual'] = 'û嵥';
+$PALANG['pAdminMenu_viewlog'] = '鿴־';
+$PALANG['pAdminMenu_backup'] = '';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Ա';
+$PALANG['pAdminMenu_create_admin'] = '½Ա';
+$PALANG['pAdminMenu_create_domain'] = '½';
+$PALANG['pAdminMenu_create_alias'] = '½';
+$PALANG['pAdminMenu_create_mailbox'] = '½';
+
+$PALANG['pAdminList_admin_domain'] = '';
+$PALANG['pAdminList_admin_username'] = 'Ա';
+$PALANG['pAdminList_admin_count'] = '';
+$PALANG['pAdminList_admin_modified'] = '޸';
+$PALANG['pAdminList_admin_active'] = '';
+
+$PALANG['pAdminList_domain_domain'] = '';
+$PALANG['pAdminList_domain_description'] = '';
+$PALANG['pAdminList_domain_aliases'] = '';
+$PALANG['pAdminList_domain_mailboxes'] = '';
+$PALANG['pAdminList_domain_maxquota'] = ' (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = '޸';
+$PALANG['pAdminList_domain_active'] = '';
+
+$PALANG['pAdminList_virtual_button'] = 'ִ';
+$PALANG['pAdminList_virtual_welcome'] = ' : ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = '';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = '';
+$PALANG['pAdminList_virtual_alias_address'] = 'ǰ';
+$PALANG['pAdminList_virtual_alias_goto'] = 'ת';
+$PALANG['pAdminList_virtual_alias_modified'] = '޸';
+$PALANG['pAdminList_virtual_mailbox_username'] = '';
+$PALANG['pAdminList_virtual_mailbox_name'] = '';
+$PALANG['pAdminList_virtual_mailbox_quota'] = ' (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = '޸';
+$PALANG['pAdminList_virtual_mailbox_active'] = '';
+
+$PALANG['pAdminCreate_domain_welcome'] = '½';
+$PALANG['pAdminCreate_domain_domain'] = '';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Ѿ!</span>';
+$PALANG['pAdminCreate_domain_description'] = '';
+$PALANG['pAdminCreate_domain_aliases'] = '';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = | 0 = ';
+$PALANG['pAdminCreate_domain_mailboxes'] = '';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = | 0 = ';
+$PALANG['pAdminCreate_domain_maxquota'] = '';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = | 0 = ';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Ĭϱ';
+$PALANG['pAdminCreate_domain_backupmx'] = 'ʼ';
+$PALANG['pAdminCreate_domain_button'] = '';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">ʧ!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'ɹ!';
+
+$PALANG['pAdminEdit_domain_welcome'] = '޸';
+$PALANG['pAdminEdit_domain_domain'] = '';
+$PALANG['pAdminEdit_domain_description'] = '';
+$PALANG['pAdminEdit_domain_aliases'] = '';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = ֹ | 0 = ';
+$PALANG['pAdminEdit_domain_mailboxes'] = '';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = ֹ | 0 = ';
+$PALANG['pAdminEdit_domain_maxquota'] = '';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = ֹ | 0 = ';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'ʼ';
+$PALANG['pAdminEdit_domain_active'] = '';
+$PALANG['pAdminEdit_domain_button'] = '޸';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">޸ʧ!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Ա';
+$PALANG['pAdminCreate_admin_username'] = 'Ա';
+$PALANG['pAdminCreate_admin_username_text'] = 'ʼַ';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'ʼַ<br /><span class="error_msg">ԱһϷʼַ!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'ʼַ<br /><span class="error_msg">ԱѾڻ߹ԱǷ!</span>';
+$PALANG['pAdminCreate_admin_password'] = '';
+$PALANG['pAdminCreate_admin_password2'] = ' (֤)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">벻ͬ!<br />Ϊ!</span>';
+$PALANG['pAdminCreate_admin_button'] = '';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Աʧ!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Աɹ!';
+$PALANG['pAdminCreate_admin_address'] = '';
+
+$PALANG['pAdminEdit_admin_welcome'] = '޸Ա';
+$PALANG['pAdminEdit_admin_username'] = 'Ա';
+$PALANG['pAdminEdit_admin_password'] = '';
+$PALANG['pAdminEdit_admin_password2'] = ' (֤)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">벻ͬ!<br />Ϊ!</span>';
+$PALANG['pAdminEdit_admin_active'] = '';
+$PALANG['pAdminEdit_admin_button'] = '޸';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">༭Աʧ!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = '༭Աɹ!';
+
+$PALANG['pUsersLogin_welcome'] = 'ʼû¼ͱ.';
+$PALANG['pUsersLogin_username'] = 'ʺ (ַ)';
+$PALANG['pUsersLogin_password'] = '';
+$PALANG['pUsersLogin_button'] = '¼';
+$PALANG['pUsersLogin_username_incorrect'] = '¼ʧ. ȷʹַ¼!';
+$PALANG['pUsersLogin_password_incorrect'] = '¼벻ȷ!';
+
+$PALANG['pUsersMenu_vacation'] = 'Զظ';
+$PALANG['pUsersMenu_edit_alias'] = '޸ת';
+$PALANG['pUsersMenu_password'] = '޸';
+
+$PALANG['pUsersMain_vacation'] = 'ϢԶظ.';
+$PALANG['pUsersMain_edit_alias'] = '޸ת.';
+$PALANG['pUsersMain_password'] = '޸ĵǰ.';
+
+$PALANG['pUsersVacation_welcome'] = 'Զظ.';
+$PALANG['pUsersVacation_welcome_text'] = 'ѾԶظ!';
+$PALANG['pUsersVacation_subject'] = '';
+$PALANG['pUsersVacation_subject_text'] = '޷';
+$PALANG['pUsersVacation_body'] = '';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+ <date> <date> ʱʱ޷.
+м <contact person> ϵ.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Զظ';
+$PALANG['pUsersVacation_button_back'] = 'رԶظ';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Զظʧ!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'ԶظѾر!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = '½';
+$PALANG['pCreate_dbLog_createalias'] = '½';
+$PALANG['pDelete_dbLog_deletealias'] = 'ɾ';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'ʼ';
+
+$PALANG['pEdit_dbLog_editactive'] = 'ı״̬';
+$PALANG['pEdit_dbLog_editalias'] = '༭';
+$PALANG['pEdit_dbLog_editmailbox'] = '༭';
+
+$PALANG['pSearch_welcome'] = ': ';
+?>
diff --git a/languages/cs.lang b/languages/cs.lang
new file mode 100644
index 0000000..e66bbbd
--- /dev/null
+++ b/languages/cs.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Czech
+// by Jakub
+//
+$PALANG['YES'] = 'ANO';
+$PALANG['NO'] = 'NE';
+$PALANG['edit'] = 'upravit';
+$PALANG['del'] = 'smazat';
+$PALANG['confirm'] = 'Jste si jist&iacute;?\n';
+$PALANG['confirm_domain'] = 'Opravdu chcete smazat v&scaron;echny z&aacute;znamy v t&eacute;to dom&eacute;n&#283;? Tohle nelze vr&aacute;tit!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Zde se p&#345;ihla&scaron;uj&iacute; emailov&iacute; administr&aacute;to&#345;i pro administraci sv&yacute;ch dom&eacute;n.';
+$PALANG['pLogin_username'] = 'U&#382;ivatesk&eacute; jm&eacute;no (email)';
+$PALANG['pLogin_password'] = 'Heslo';
+$PALANG['pLogin_button'] = 'P&#345;ihl&aacute;sit';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Nespr&aacute;vn&eacute; u&#382;ivatelsk&eacute; jmeno. P&#345;ihla&scaron;ujte se svoj&iacute; emailovou adresou!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Nespr&aacute;vn&eacute; heslo!</span>';
+$PALANG['pLogin_login_users'] = 'Vstup do u&#382;ivatelsk&eacute; sekce.';
+
+$PALANG['pMenu_overview'] = 'P&#345;ehled';
+$PALANG['pMenu_create_alias'] = 'P&#345;idat alias';
+$PALANG['pMenu_create_mailbox'] = 'P&#345;idat schr&aacute;nku';
+$PALANG['pMenu_sendmail'] = 'Poslat email';
+$PALANG['pMenu_password'] = 'Zm&#283;nit heslo';
+$PALANG['pMenu_viewlog'] = 'Prohl&iacute;&#382;et z&aacute;znam';
+$PALANG['pMenu_logout'] = 'Odhl&aacute;sit.';
+
+$PALANG['pMain_welcome'] = 'V&iacute;tejte v Postfix Adminu!';
+$PALANG['pMain_overview'] = 'V&yacute;pis alias&#367; a schr&aacute;nek. M&#367;&#382;ete je zde upravovat a mazat.';
+$PALANG['pMain_create_alias'] = 'Vytvo&#345;it alias v t&eacute;to dom&eacute;n&#283;.';
+$PALANG['pMain_create_mailbox'] = 'Vytvo&#345;it schr&aacute;nku v t&eacute;to dom&eacute;n&#283;.';
+$PALANG['pMain_sendmail'] = 'Poslat email do jedn&eacute; z nov&#283; vytvo&#345;en&yacute;ch schr&aacute;nek.';
+$PALANG['pMain_password'] = 'Zm&#283;nit heslo administr&aacute;torsk&eacute;ho &uacute;&#269;tu.';
+$PALANG['pMain_viewlog'] = 'Prohl&iacute;&#382;et z&aacute;znamy zm&#283;n v dom&eacute;n&#283;.';
+$PALANG['pMain_logout'] = 'Odhl&aacute;sit ze syst&eacute;mu.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'P&#345;ej&iacute;t';
+$PALANG['pOverview_welcome'] = 'P&#345;ehled pro dom&eacute;nu ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias&#367;';
+$PALANG['pOverview_alias_mailbox_count'] = 'Schr&aacute;nek';
+$PALANG['pOverview_alias_address'] = 'Od';
+$PALANG['pOverview_alias_goto'] = 'Pro';
+$PALANG['pOverview_alias_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Jm&eacute;no';
+$PALANG['pOverview_mailbox_quota'] = 'M&iacute;sto (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pOverview_mailbox_active'] = 'Aktivn&iacute;';
+
+$PALANG['pOverview_get_domain'] = 'Dom&eacute;na';
+$PALANG['pOverview_get_aliases'] = 'Aliasy';
+$PALANG['pOverview_get_mailboxes'] = 'Schr&aacute;nky';
+$PALANG['pOverview_get_quota'] = 'M&iacute;sto pro schr&aacute;nku (MB)';
+$PALANG['pOverview_get_modified'] = 'Naposledy zm&#283;n&#283;no';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Nelze smazat polo&#382;ku ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Tato dom&eacute;na nen&iacute; va&scaron;e ';
+
+$PALANG['pCreate_alias_welcome'] = 'Vytvo&#345;it nov&yacute; alias ve va&scaron;&iacute; dom&eacute;n&#283;.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Adresa neni platn&aacute;!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Takov&aacute; emailov&aacute; adresa ji&#382; existuje!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Dos&aacute;hli jste limitu, nem&#367;&#382;ete vytv&aacute;&#345;et dal&scaron;&iacute; aliasy!</span>';
+$PALANG['pCreate_alias_goto'] = 'C&iacute;l';
+$PALANG['pCreate_alias_button'] = 'P&#345;idat';
+$PALANG['pCreate_alias_goto_text'] = 'Kam m&aacute; po&scaron;ta chodit.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Kam m&aacute; po&scaron;ta chodit.<br /><span class="error_msg">C&iacute;l nen&iacute; platn&yacute;!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se p&#345;idat alias do tabulky alias&#367;!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias byl usp&#283;&scaron;n&#283; p&#345;id&aacute;n do tabulky alias&#367;!';
+$PALANG['pCreate_alias_catchall_text'] = 'Pro vytvo&#345;en&iacute; v&scaron;eberouc&iacute;ho aliasu (dom&eacute;nov&eacute;ho ko&scaron;e) pou&#382;ijte * jako alias.<br />Pro alias dom&eacute;na-&amp;gt;dom&eacute;na pou&#382;ijte *@domain.tld jako c&iacute;l.';
+
+$PALANG['pEdit_alias_welcome'] = 'Upravit aliasy.<br />Jeden z&aacute;znam na &#345;&aacute;dku.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Nelze naj&iacute;t alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'C&iacute;l';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Nezadali jste c&iacute;l</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Emailov&aacute; adresa kterou jste zadali nen&iacute; platn&aacute;: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Tato dom&eacute;na nen&iacute; va&scaron;e: ';
+$PALANG['pEdit_alias_button'] = 'Upravit';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se upravit alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Vytvo&#345;it novou lok&aacute;ln&iacute; schr&aacute;nku v dom&eacute;n&#283;.';
+$PALANG['pCreate_mailbox_username'] = 'U&#382;ivatelsk&eacute; jm&eacute;no';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Adresa neni platn&aacute;!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Takov&aacute; emailov&aacute; adresa ji&#382;&cedil; existuje!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Dos&aacute;hli jste limitu, nem&#367;&cedil;ete vytv&aacute;&#345;et dal&scaron;&iacute; schr&aacute;nky!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Heslo';
+$PALANG['pCreate_mailbox_password2'] = 'Heslo (znovu)';
+$PALANG['pCreate_mailbox_password_text'] = 'Heslo pro POP3/IMAP/SMTP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Heslo pro POP3/IMAP/SMTP<br /><span class="error_msg">Zadan&aacute; hesla jsou rozd&iacute;ln&aacute; nebo pr&aacute;zdn&aacute;!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Jm&eacute;no';
+$PALANG['pCreate_mailbox_name_text'] = 'Cel&eacute; jm&eacute;no';
+$PALANG['pCreate_mailbox_quota'] = 'M&iacute;sto';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Zadan&eacute; m&iacute;sto je p&#345;&iacute;li&scaron; velk&eacute;!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktivn&iacute;';
+$PALANG['pCreate_mailbox_mail'] = 'Vytvo&#345;it schr&aacute;nku na disku';
+$PALANG['pCreate_mailbox_button'] = 'P&#345;idat schr&aacute;nku';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se p&#345;idat schr&aacute;nku do tabulky schr&aacute;nek!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Schr&aacute;nka byla p&#345;id&aacute;na do tabulky schr&aacute;nek!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Upravit lok&aacute;ln&iacute; chr&aacute;nku v dom&eacute;n&#283;.';
+$PALANG['pEdit_mailbox_username'] = 'U&#382;ivatelsk&eacute; jm&eacute;no';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Nepoda&#345;ilo se nal&eacute;zt schr&aacute;nku!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nov&eacute; heslo';
+$PALANG['pEdit_mailbox_password2'] = 'Nov&eacute; heslo (znovu)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Zadan&aacute; hesla se neshoduj&iacute;!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Jm&eacute;no';
+$PALANG['pEdit_mailbox_quota'] = 'M&iacute;sto';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Zadan&eacute; m&iacute;sto je p&#345;&iacute;li&scaron; velk&eacute;!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Tato dom&eacute;na nen&iacute; va&scaron;e: ';
+$PALANG['pEdit_mailbox_button'] = 'Upravit schr&aacute;nku';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se upravit schr&aacute;nku!</span>';
+
+$PALANG['pPassword_welcome'] = 'Zm&#283;nit heslo.';
+$PALANG['pPassword_admin'] = 'U&#382;ivatelsk&eacute; jm&eacute;no';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">U&#382;ivatelsk&eacute; jm&eacute;no se neshoduje s &#382;&aacute;dnou schr&aacute;nkou!</span>';
+$PALANG['pPassword_password_current'] = 'Sou&#269;asn&eacute; heslo';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Nezadal(a) jste sou&#269;asn&eacute; heslo!</span>';
+$PALANG['pPassword_password'] = 'Nov&eacute; heslo';
+$PALANG['pPassword_password2'] = 'Nov&eacute; heslo (znovu)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Zadan&aacute; hesla jsou rozd&iacute;ln&aacute; nebo pr&aacute;zdn&aacute;!</span>';
+$PALANG['pPassword_button'] = 'Zm&#283;nit heslo';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se zm&#283;nit heslo!</span>';
+$PALANG['pPassword_result_succes'] = 'Heslo bylo zm&#283;n&#283;no!';
+
+$PALANG['pViewlog_welcome'] = 'Prohl&iacute;&#382;et 10 posledn&iacute;ch akc&iacute; pro ';
+$PALANG['pViewlog_timestamp'] = '&#268;asov&aacute; zna&#269;ka';
+$PALANG['pViewlog_username'] = 'U&#382;ivatel';
+$PALANG['pViewlog_domain'] = 'Dom&eacute;na';
+$PALANG['pViewlog_action'] = 'Akce';
+$PALANG['pViewlog_data'] = 'Pozn&aacute;mka';
+
+$PALANG['pViewlog_button'] = 'J&iacute;t';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se naj&iacute;t z&aacute;znamy!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Poslat email.';
+$PALANG['pSendmail_admin'] = 'Od';
+$PALANG['pSendmail_to'] = 'C&iacute;l';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">C&iacute;l nen&iacute; platn&aacute; emailov&aacute; adresa!</span>';
+$PALANG['pSendmail_subject'] = 'P&#345;edm&#283;t';
+$PALANG['pSendmail_subject_text'] = 'V&iacute;tejte';
+$PALANG['pSendmail_body'] = 'Obsah';
+$PALANG['pSendmail_button'] = 'Poslat email';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se vytvo&#345;it schr&aacute;nku!</span>';
+$PALANG['pSendmail_result_succes'] = 'Schr&aacute;nka byla vytvo&#345;ena!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Seznam administr&aacute;tor&#367;';
+$PALANG['pAdminMenu_list_domain'] = 'Seznam dom&eacute;n';
+$PALANG['pAdminMenu_list_virtual'] = 'Seznam alias&#367;';
+$PALANG['pAdminMenu_viewlog'] = 'Prohl&iacute;&#382;et z&aacute;znamy';
+$PALANG['pAdminMenu_backup'] = 'Z&aacute;lohovat';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Dom&eacute;nov&iacute; administr&aacute;to&#345;i';
+$PALANG['pAdminMenu_create_admin'] = 'Nov&yacute; administr&aacute;tor';
+$PALANG['pAdminMenu_create_domain'] = 'Nov&aacute; dom&eacute;na';
+$PALANG['pAdminMenu_create_alias'] = 'P&#345;idat alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'P&#345;idat schr&aacute;nku';
+
+$PALANG['pAdminList_admin_domain'] = 'Dom&eacute;na';
+$PALANG['pAdminList_admin_username'] = 'Administr&aacute;tor';
+$PALANG['pAdminList_admin_count'] = 'Dom&eacute;ny';
+$PALANG['pAdminList_admin_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pAdminList_admin_active'] = 'Aktivn&iacute;';
+
+$PALANG['pAdminList_domain_domain'] = 'Dom&eacute;na';
+$PALANG['pAdminList_domain_description'] = 'Popis';
+$PALANG['pAdminList_domain_aliases'] = 'Alias&#367;';
+$PALANG['pAdminList_domain_mailboxes'] = 'Schr&aacute;nek';
+$PALANG['pAdminList_domain_maxquota'] = 'Maxim&aacute;ln&iacute; m&iacute;sto (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pAdminList_domain_active'] = 'Aktivn&iacute;';
+
+$PALANG['pAdminList_virtual_button'] = 'J&iacute;t';
+$PALANG['pAdminList_virtual_welcome'] = 'P&#345;ehled pro ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias&#367;';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Schr&aacute;nek';
+$PALANG['pAdminList_virtual_alias_address'] = 'Od';
+$PALANG['pAdminList_virtual_alias_goto'] = 'C&iacute;l';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Emailov&aacute; adresa';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Jm&eacute;no';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'M&iacute;sto (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Naposledy zm&#283;n&#283;no';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktivn&iacute;';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'P&#345;idat novou dom&eacute;nu';
+$PALANG['pAdminCreate_domain_domain'] = 'Dom&eacute;na';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Takov&aacute; dom&eacute;na u&#382; existuje!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Popis';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias&#367;';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Schr&aacute;nek';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Maxim&aacute;ln&iacute; m&iacute;sto';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Pridat implicitn&iacute; aliasy';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server je z&aacute;lo&#382;n&iacute; MX';
+$PALANG['pAdminCreate_domain_button'] = 'P&#345;idat dom&eacute;nu';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se p&#345;idat dom&eacute;nu!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Dom&eacute;na byla p&#345;id&aacute;na!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Upravit dom&eacute;nu';
+$PALANG['pAdminEdit_domain_domain'] = 'Dom&eacute;na';
+$PALANG['pAdminEdit_domain_description'] = 'Popis';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias&#367;';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Schr&aacute;nek';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Maxim&aacute;ln&iacute; m&iacute;sto';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = znep&#345;&iacute;stupnit | 0 = neomezen&#283;';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server je z&aacute;lo&#382;n&iacute; MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktivn&iacute;';
+$PALANG['pAdminEdit_domain_button'] = 'Upravit dom&eacute;nu';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se upravit dom&eacute;nu!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'P&#345;idat nov&eacute;ho administr&aacute;tora';
+$PALANG['pAdminCreate_admin_username'] = 'U&#382;ivatelsk&eacute; jm&eacute;no';
+$PALANG['pAdminCreate_admin_username_text'] = 'Emailov&aacute; adresa';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Emailov&aacute; adresa<br /><span class="error_msg">Tato adresa nen&iacute; platn&aacute;!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email address<br /><span class="error_msg">Takov&aacute; adresa u&#382; existuje!</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Heslo';
+$PALANG['pAdminCreate_admin_password2'] = 'Heslo (znovu)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Zadan&aacute; hesla jsou rozd&iacute;ln&aacute; nebo pr&aacute;zdn&aacute;!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'P&#345;idat administr&aacute;tora';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se p&#345;idat administr&aacute;tora!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Administr&aacute;tor byl p&#345;id&aacute;n!';
+$PALANG['pAdminCreate_admin_address'] = 'Dom&eacute;na';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Upravit dom&eacute;nov&eacute;ho administr&aacute;tora';
+$PALANG['pAdminEdit_admin_username'] = 'U&#382;ivatelsk&eacute; jm&eacute;no';
+$PALANG['pAdminEdit_admin_password'] = 'Heslo';
+$PALANG['pAdminEdit_admin_password2'] = 'Heslo (znovu)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Zadan&aacute; hesla jsou rozd&iacute;ln&aacute; nebo pr&aacute;zdn&aacute;!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktivn&iacute;';
+$PALANG['pAdminEdit_admin_button'] = 'Upravit administr&aacute;tora';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se upravit administr&aacute;tora!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Administr&aacute;tor byl upraven!';
+
+$PALANG['pUsersLogin_welcome'] = 'Zde se p&#345;ihla&scaron;uj&iacute; u&#382;ivatel&eacute; pro zm&#283;nu hesla nebo p&#345;esm&#283;rov&aacute;n&iacute;.';
+$PALANG['pUsersLogin_username'] = 'U&#382;ivatelsk&eacute; jm&eacute;no (email)';
+$PALANG['pUsersLogin_password'] = 'Heslo';
+$PALANG['pUsersLogin_button'] = 'P&#345;ihl&aacute;sit';
+$PALANG['pUsersLogin_username_incorrect'] = 'Nespr&aacute;vn&eacute; u&#382;ivatelsk&eacute; jmeno. P&#345;ihla&scaron;ujte se svoj&iacute; emailovou adresou!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Nespr&aacute;vn&eacute; heslo!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automatick&aacute; odpov&#283;&#271;';
+$PALANG['pUsersMenu_edit_alias'] = 'P&#345;esm&#283;rov&aacute;n&iacute;';
+$PALANG['pUsersMenu_password'] = 'Zm&#283;na hesla';
+
+$PALANG['pUsersMain_vacation'] = 'Nastavit ,,jsem pry&#269;`` nebo podobnou automatickou odpov&#283;&#271;.';
+$PALANG['pUsersMain_edit_alias'] = 'Nastavit / zm&#283;n&iacute;t p&#345;esm&#283;rov&aacute;n&iacute;';
+$PALANG['pUsersMain_password'] = 'Zm&#283;nit heslo';
+
+$PALANG['pUsersVacation_welcome'] = 'Automatick&aacute; podpov&#283;&#271;';
+$PALANG['pUsersVacation_welcome_text'] = 'Ji&#382; m&iacute;ate nastavenou automatickou odpov&#283;&#271;!';
+$PALANG['pUsersVacation_subject'] = 'P&#345;edm&#283;t';
+$PALANG['pUsersVacation_subject_text'] = 'Dovolen&aacute;';
+$PALANG['pUsersVacation_body'] = 'Obsah';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Jsem na dovolen&eacute; od <date> od <date>.
+S neodkladn&yacute;mi zpr&aacute;vami kontaktujte <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Odjet';
+$PALANG['pUsersVacation_button_back'] = 'Vr&aacute;tit se';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nepoda&#345;ilo se upravit nastaven&iacute;!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Nastaven&iacute; bylo upraveno!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/da.lang b/languages/da.lang
new file mode 100644
index 0000000..75dbc67
--- /dev/null
+++ b/languages/da.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Danish
+// by Lars
+//
+$PALANG['YES'] = 'JA';
+$PALANG['NO'] = 'NEJ';
+$PALANG['edit'] = 'rediger';
+$PALANG['del'] = 'slet';
+$PALANG['confirm'] = 'Er du sikker p&aring; du vil slette dette?\n';
+$PALANG['confirm_domain'] = 'Vil du virkelig slette alle poster for dette dom&aelig;ne? Dette kan ikke fortrydes!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Postadministrator: Log ind her for at administrere dine dom&aelig;ner.';
+$PALANG['pLogin_username'] = 'Brugernavn (email)';
+$PALANG['pLogin_password'] = 'Kodeord';
+$PALANG['pLogin_button'] = 'Login';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Dit brugernavn er forkert. Verificer at du bruger din email-adresse som login!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Dit kodeord er forkert!</span>';
+$PALANG['pLogin_login_users'] = 'Bruger: Log ind p&aring; brugersektionen her.';
+
+$PALANG['pMenu_overview'] = 'Oversigt';
+$PALANG['pMenu_create_alias'] = 'Tilf&oslash;j alias';
+$PALANG['pMenu_create_mailbox'] = 'Tilf&oslash;j postboks';
+$PALANG['pMenu_sendmail'] = 'Send Email';
+$PALANG['pMenu_password'] = 'Kodeord';
+$PALANG['pMenu_viewlog'] = 'Vis Log';
+$PALANG['pMenu_logout'] = 'Log ud';
+
+$PALANG['pMain_welcome'] = 'Velkommen til Postfix Admin!';
+$PALANG['pMain_overview'] = 'Vis alle aliaser og postbokse. Du kan redigere / slette dem herfra.';
+$PALANG['pMain_create_alias'] = 'Opret nyt alias til dit dom&aelig;ne.';
+$PALANG['pMain_create_mailbox'] = 'Opret nu postboks til dit dom&aelig;ne.';
+$PALANG['pMain_sendmail'] = 'Send en email til en af dine nyoprettede postbokse.';
+$PALANG['pMain_password'] = 'Ret kodeordet til din administratorkonto.';
+$PALANG['pMain_viewlog'] = 'Vis logfiler.';
+$PALANG['pMain_logout'] = 'Log ud fra systemet';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Vis';
+$PALANG['pOverview_welcome'] = 'Oversigt for ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliaser';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postbokse';
+$PALANG['pOverview_alias_address'] = 'Fra';
+$PALANG['pOverview_alias_goto'] = 'Til';
+$PALANG['pOverview_alias_modified'] = 'Senest rettet';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Navn';
+$PALANG['pOverview_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Senest rettet';
+$PALANG['pOverview_mailbox_active'] = 'Aktiv';
+
+$PALANG['pOverview_get_domain'] = 'Dom&aelig;ne';
+$PALANG['pOverview_get_aliases'] = 'Aliaser';
+$PALANG['pOverview_get_mailboxes'] = 'Postbokse';
+$PALANG['pOverview_get_quota'] = 'Postboks Kvota (MB)';
+$PALANG['pOverview_get_modified'] = 'Senest rettet';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Kan ikke slette denne post ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Dette dom&aelig;ne er ikke dit ';
+
+$PALANG['pCreate_alias_welcome'] = 'Opret nyt alias til dit dom&aelig;ne.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Aliaset er ikke gyldigt!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Email adressen eksisterer allerede. V&aelig;lg venligst en anden!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Du har n&aring;et gr&aelig;nsen for antallet af aliaser til dit dom&aelig;ne!</span>';
+$PALANG['pCreate_alias_goto'] = 'Modtager';
+$PALANG['pCreate_alias_button'] = 'Tilf&oslash;j Alias';
+$PALANG['pCreate_alias_goto_text'] = 'Hvor emailen skal videresendes til.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Hvor emailen skal videresendes til.<br /><span class="error_msg">Modtageradressen er ikke gyldig!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Kan ikke tilf&oslash;je aliaset til alias-tabellen!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Aliaset er blevet tilf&oslash;jet til alias-tabellen!';
+$PALANG['pCreate_alias_catchall_text'] = 'For at oprette et stjerne-alias, brug en "*" som alias.<br />For dom%aelig;ne til dom&aelig;ne-viderestilling brug "*@domain.tld" som modtager.';
+
+$PALANG['pEdit_alias_welcome'] = 'Rediger et alias for dit dom&aelig;ne.<br />En modtager pr. linie.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Kan ikke finde aliaset!</span>';
+$PALANG['pEdit_alias_goto'] = 'Modtager(e)';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Du udfyldte ikke noget i Modtager(e)</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Den tilf&oslash;jede emailadresse er ikke gyldig: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Dette dom&aelig;ne tilh&oslash;rer ikke dig: ';
+$PALANG['pEdit_alias_button'] = 'Ret Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Kan ikke redigere aliaset!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Opret en ny lokal postboks til dit dom&aelig;ne.';
+$PALANG['pCreate_mailbox_username'] = 'Brugernavn';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Email adressen er ikke gyldig!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Email adressen eksisterer allerede. V&aelig;lg venligst en anden!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Du har n&aring;et gr&aelig;nsen for antallet af postbokse til dit dom&aelig;ne!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Kodeord';
+$PALANG['pCreate_mailbox_password2'] = 'Kodeord (igen)';
+$PALANG['pCreate_mailbox_password_text'] = 'Kodeord til POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Kodeord til POP3/IMAP<br /><span class="error_msg">Kodeordene er ikke ens!<br />Eller er tomme!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Navn';
+$PALANG['pCreate_mailbox_name_text'] = 'Fulde navn';
+$PALANG['pCreate_mailbox_quota'] = 'Kvota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den &oslash;nskede kvota er for h&oslash;j!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiv';
+$PALANG['pCreate_mailbox_mail'] = 'Opret postboks';
+$PALANG['pCreate_mailbox_button'] = 'Tilf&oslash;j postboks';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Kan ikke tilf&oslash;je postboksen til postboks-tabellen!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Postboksen er tilf&oslash;jet til postboks-tabellen!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Rediger en postboks til dit dom&aelig;ne.';
+$PALANG['pEdit_mailbox_username'] = 'Brugernavn';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Kan ikke finde postboksen!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nyt kodeord';
+$PALANG['pEdit_mailbox_password2'] = 'Nyt kodeord (igen)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Kodeordene er ikke ens!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Navn';
+$PALANG['pEdit_mailbox_quota'] = 'Kvota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den &oslash;nskede kvota er for h&oslash;j!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Dette dom&aelig;ne er ikke dit: ';
+$PALANG['pEdit_mailbox_button'] = 'Ret postboks';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Kan ikke skifte kodeord!</span>';
+
+$PALANG['pPassword_welcome'] = 'Ret dit kodeord.';
+$PALANG['pPassword_admin'] = 'Kodeord';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Brugernavnet kunne ikke findes!</span>';
+$PALANG['pPassword_password_current'] = 'Nuv&aelig;rende kodeord';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Du glemte at skrive dit nuv&aelig;rende kodeord!</span>';
+$PALANG['pPassword_password'] = 'Nyt kodeord';
+$PALANG['pPassword_password2'] = 'Nyt kodeord (igen)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Kodeordene er ikke ens!<br />Eller er tomme!</span>';
+$PALANG['pPassword_button'] = 'Skift kodeord';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Kan ikke skifte kodeord!</span>';
+$PALANG['pPassword_result_succes'] = 'Dit kodeord er skiftet!';
+
+$PALANG['pViewlog_welcome'] = 'Vis de sidste 10 poster for ';
+$PALANG['pViewlog_timestamp'] = 'Tidsstempel';
+$PALANG['pViewlog_username'] = 'Administrator';
+$PALANG['pViewlog_domain'] = 'Dom&aelig;ne';
+$PALANG['pViewlog_action'] = 'Handling';
+$PALANG['pViewlog_data'] = 'Data';
+
+$PALANG['pViewlog_button'] = 'Vis';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Kan ikke finde loggen!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Send en email.';
+$PALANG['pSendmail_admin'] = 'Modtager';
+$PALANG['pSendmail_to'] = 'Afsender';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Modtager er tom eller en ugyldig email adresse!</span>';
+$PALANG['pSendmail_subject'] = 'Emne';
+$PALANG['pSendmail_subject_text'] = 'Velkommen';
+$PALANG['pSendmail_body'] = 'Meddelelse';
+$PALANG['pSendmail_button'] = 'Send email';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Kan ikke oprette postboks!</span>';
+$PALANG['pSendmail_result_succes'] = 'Postboksen er oprettet!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Administratorliste';
+$PALANG['pAdminMenu_list_domain'] = 'Dom&aelig;neliste';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtuel Liste';
+$PALANG['pAdminMenu_viewlog'] = 'Vis Log';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Dom&aelig;neadministrator';
+$PALANG['pAdminMenu_create_admin'] = 'Ny administrator';
+$PALANG['pAdminMenu_create_domain'] = 'Nyt dom&aelig;ne';
+$PALANG['pAdminMenu_create_alias'] = 'Tilf&oslash;j alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Tilf&oslash;j postboks';
+
+$PALANG['pAdminList_admin_domain'] = 'Dom&aelig;ne';
+$PALANG['pAdminList_admin_username'] = 'Administrator';
+$PALANG['pAdminList_admin_count'] = 'Dom&aelig;ner';
+$PALANG['pAdminList_admin_modified'] = 'Senest rettet';
+$PALANG['pAdminList_admin_active'] = 'Aktiv';
+
+$PALANG['pAdminList_domain_domain'] = 'Dom&aelig;ne';
+$PALANG['pAdminList_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminList_domain_aliases'] = 'Aliaser';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postbokse';
+$PALANG['pAdminList_domain_maxquota'] = 'Maks. kvota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Senest rettet';
+$PALANG['pAdminList_domain_active'] = 'Aktiv';
+
+$PALANG['pAdminList_virtual_button'] = 'Vis';
+$PALANG['pAdminList_virtual_welcome'] = 'Oversigt for ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliaser';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postbokse';
+$PALANG['pAdminList_virtual_alias_address'] = 'Fra';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Til';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Senest rettet';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Navn';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Senest rettet';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiv';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Tilf&oslash;j et nyt dom&aelig;ne';
+$PALANG['pAdminCreate_domain_domain'] = 'Dom&aelig;ne';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Dom&aelig;net eksisterer allerede!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliaser';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = annuller | 0 = uendeligt';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postbokse';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = annuller | 0 = uendeligt';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Maks. kvota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = annuller | 0 = uendeligt';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Tilf&oslash;j standard aliaser';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Tilf&oslash;j dom&aelig;ne';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Kan ikke tilf&oslash;je dom&aelig;ne!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Dom&aelig;net er tilf&oslash;jet!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Rediger et dom&aelig;ne';
+$PALANG['pAdminEdit_domain_domain'] = 'Dom&aelig;ne';
+$PALANG['pAdminEdit_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliaser';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = annuller | 0 = uendeligt';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postbokse';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = annuller | 0 = uendeligt';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Maks. kvota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = annuller | 0 = uendeligt';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiv';
+$PALANG['pAdminEdit_domain_button'] = 'Rediger dom&aelig;ne';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Kan ikke rette dom&aelig;ne!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Tilf&oslash;j ny dom&aelig;neadministrator';
+$PALANG['pAdminCreate_admin_username'] = 'Administrator';
+$PALANG['pAdminCreate_admin_username_text'] = 'Email adresse';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email adresse<br /><span class="error_msg">Administrator er ikke en gyldig email adresse!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email adresse<br /><span class="error_msg">Aministratoren findes allerede eller er ikke gyldig</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Kodeord';
+$PALANG['pAdminCreate_admin_password2'] = 'Kodeord (igen)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Kodeordene er ikke ens!<br />Eller er tomme!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Tilf&oslash;j administrator';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Kan ikke tilf&oslash;je administrator!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Administrator er tilf&oslash;jet!';
+$PALANG['pAdminCreate_admin_address'] = 'Dom&aelig;ne';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Rediger en dom&aelig;neadministrator';
+$PALANG['pAdminEdit_admin_username'] = 'Administrator';
+$PALANG['pAdminEdit_admin_password'] = 'Kodeord';
+$PALANG['pAdminEdit_admin_password2'] = 'Kodeord (igen)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Kodeordene er ikke ens!<br />Eller er tomme!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiv';
+$PALANG['pAdminEdit_admin_button'] = 'Rediger administrator';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Kan ikke rette administrator!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Administrator er rettet!';
+
+$PALANG['pUsersLogin_welcome'] = 'Postboksbruger: Login for at &aelig;ndre kodeord og viderestilling.';
+$PALANG['pUsersLogin_username'] = 'Brugernavn (email)';
+$PALANG['pUsersLogin_password'] = 'Kodeord';
+$PALANG['pUsersLogin_button'] = 'Log ind';
+$PALANG['pUsersLogin_username_incorrect'] = 'Dit brugernavn er forkert. Verificer at du bruger din email adresse som brugernavn!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Dit kodeord er ikke korrekt!';
+
+$PALANG['pUsersMenu_vacation'] = 'Autosvar';
+$PALANG['pUsersMenu_edit_alias'] = 'Rediger dine viderestillinger';
+$PALANG['pUsersMenu_password'] = 'Skift kodeord';
+
+$PALANG['pUsersMain_vacation'] = 'Tilf&oslash;j en "ikke tilstede" besked eller et autosvar til din email adresse.';
+$PALANG['pUsersMain_edit_alias'] = 'Skift dine viderestillinger for email.';
+$PALANG['pUsersMain_password'] = 'Skift dit nuv&aelig;rende kodeord.';
+
+$PALANG['pUsersVacation_welcome'] = 'Autosvar.';
+$PALANG['pUsersVacation_welcome_text'] = 'Du har allerede et autosvar indstillet!';
+$PALANG['pUsersVacation_subject'] = 'Emne';
+$PALANG['pUsersVacation_subject_text'] = 'Ikke tilstede';
+$PALANG['pUsersVacation_body'] = 'Meddelelse';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Jeg er ikke tilstede i perioden <dato> til <dato>.
+I n&oslash;dstilf&aelig;lde kan <kontaktperson> kontaktes.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Tager afsted';
+$PALANG['pUsersVacation_button_back'] = 'Kommer tilbage';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Kan ikke opdatere dine autosvar indstillinger!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Dit autosvar er fjernet!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/de.lang b/languages/de.lang
new file mode 100644
index 0000000..6706615
--- /dev/null
+++ b/languages/de.lang
@@ -0,0 +1,296 @@
+<?php
+//
+// Language file German
+// by Tobias
+//
+$PALANG['YES'] = 'JA';
+$PALANG['NO'] = 'NEIN';
+$PALANG['edit'] = 'editieren';
+$PALANG['del'] = 'l&ouml;schen';
+$PALANG['confirm'] = 'Sind Sie sicher dass Sie das l&ouml;schen wollen?\n';
+$PALANG['confirm_domain'] = 'Wollen Sie wirklich alle Eintr&auml;ge dieser Domain l&ouml;schen? Dies kann NICHT r&uuml;ckg&auml;ngig gemacht werden!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Mail-Administratoren loggen sich bitte hier ein.';
+$PALANG['pLogin_username'] = 'Login (eMail)';
+$PALANG['pLogin_password'] = 'Passwort';
+$PALANG['pLogin_button'] = 'Login';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Ihr Login-Name ist nicht korrekt. Bitte benutzen Sie die komplette eMail-Adresse</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Falsches Passwort!</span>';
+$PALANG['pLogin_login_users'] = 'eMail-Benutzer bitte hier einloggen.';
+
+$PALANG['pMenu_overview'] = '&Uuml;berblick';
+$PALANG['pMenu_create_alias'] = 'Alias hinzuf&uuml;gen';
+$PALANG['pMenu_create_mailbox'] = 'Mailbox hinzuf&uuml;gen';
+$PALANG['pMenu_sendmail'] = 'Email versenden';
+$PALANG['pMenu_password'] = 'Passwort &auml;ndern';
+$PALANG['pMenu_viewlog'] = 'Log ansehen';
+$PALANG['pMenu_logout'] = 'Logout';
+
+$PALANG['pMain_welcome'] = 'Willkommen zu Postfix Admin!';
+$PALANG['pMain_overview'] = 'Listet Ihre Aliase und Mailboxen auf. Sie k&ouml;nnen sie hier editieren und l&ouml;schen.';
+$PALANG['pMain_create_alias'] = 'Fgt einen neuen Alias f&uuml;r Ihre Domain hinzu.';
+$PALANG['pMain_create_mailbox'] = 'Legt eine neue Mailbox f&uuml;r Ihre Domain an.';
+$PALANG['pMain_sendmail'] = 'Versenden Sie eine Email.';
+$PALANG['pMain_password'] = '&Auml;ndern Sie Ihr Admin-Passwort.';
+$PALANG['pMain_viewlog'] = 'Lassen Sie sich das Log anzeigen.';
+$PALANG['pMain_logout'] = 'Ausloggen aus dem System';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Los';
+$PALANG['pOverview_welcome'] = '&Uuml;berblick &uuml;ber ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliase';
+$PALANG['pOverview_alias_mailbox_count'] = 'Mailboxen';
+$PALANG['pOverview_alias_address'] = 'Von';
+$PALANG['pOverview_alias_goto'] = 'An';
+$PALANG['pOverview_alias_modified'] = 'Zuletzt ver&auml;ndert';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Name';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Zuletzt ver&auml;ndert';
+$PALANG['pOverview_mailbox_active'] = 'Aktiv';
+
+$PALANG['pOverview_get_domain'] = 'Domain';
+$PALANG['pOverview_get_aliases'] = 'Aliases';
+$PALANG['pOverview_get_mailboxes'] = 'Mailboxes';
+$PALANG['pOverview_get_quota'] = 'Mailbox Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Zuletzt ver&auml;ndert';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Eintrag konnte nicht gel&ouml;scht werden ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Diese Domain geh&ouml;rt nicht Ihnen ';
+
+$PALANG['pCreate_alias_welcome'] = 'Neuen Alias f&uuml;r Ihre Domain anlegen';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Dieses ALIAS ist nicht erlaubt!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Diese eMail-Adresse existiert bereits. Bitte w&auml;hlen Sie eine andere!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Sie haben Ihr Limit f&uuml;r Aliase auf dieser Domain erreicht!</span>';
+$PALANG['pCreate_alias_goto'] = 'An';
+$PALANG['pCreate_alias_button'] = 'Alias hinzuf&uuml;gen';
+$PALANG['pCreate_alias_goto_text'] = 'Wohin soll die eMail weitergeleitet werden?';
+$PALANG['pCreate_alias_goto_text_error'] = 'Wohin die eMail weitergeleitet werden soll<br /><span class="error_msg">Das An-Feld ist falsch!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Unm&ouml;glich dieses Alias in die Alias-Tabelle einzutragen!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Das Alias wurde in die Alias-Tabelle hinzugef&uuml;gt!';
+$PALANG['pCreate_alias_catchall_text'] = 'Um alle Adressen abzudecken benutzen Sie einen "*" als Alias.<br />Um ganze Domains an andere Domains weiterzuleiten benutzen Sie "*@domain.tld" im "An"-Feld.';
+
+$PALANG['pEdit_alias_welcome'] = '&Auml;ndern Sie einen Alias f&uuml;r Ihre Domain<br />EIN Eintrag pro Zeile!';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Auffinden des Alias schlug fehl!</span>';
+$PALANG['pEdit_alias_goto'] = 'An';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Sie haben im "To"-Feld nichts angegeben!</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Die angegebene eMail-Adresse ist nicht korrekt: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Diese Domain geh&ouml;rt nicht Ihnen: ';
+$PALANG['pEdit_alias_button'] = 'Alias &auml;ndern';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">&Auml;ndern des Aliases nicht m&ouml;glich!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Legen Sie eine neue Mailbox f&uuml;r Ihre Domain an.';
+$PALANG['pCreate_mailbox_username'] = 'Benutzername';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Die EMAIL ist nicht korrekt!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Diese Email-Adresse existiert bereits. Bitte w&auml;hlen Sie eine andere!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Sie d&uuml;rfen leider nicht mehr Mailboxen f&uuml;r diese Domain anlegen!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Passwort';
+$PALANG['pCreate_mailbox_password2'] = 'Passwort (nochmal)';
+$PALANG['pCreate_mailbox_password_text'] = 'Passwort f&uuml;r POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Passwort f&uuml;r POP3/IMAP<br /><span class="error_msg">Die beiden Passw&ouml;rter sind nicht identisch!<br />Oder ganz leer!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Name';
+$PALANG['pCreate_mailbox_name_text'] = 'Voller Name';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Das angegebene Quota ist zu hoch!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiv';
+$PALANG['pCreate_mailbox_mail'] = 'Mailbox anlegen';
+$PALANG['pCreate_mailbox_button'] = 'Mailbox hinzuf&uuml;gen';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Unm&ouml;glich die Mailbox in die Mailbox-Tabelle einzutragen!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Die Mailbox wurde in die Mailbox-Tabelle eingetragen!';
+
+$PALANG['pEdit_mailbox_welcome'] = '&Auml;ndern Sie ihre Mailbox hier.';
+$PALANG['pEdit_mailbox_username'] = 'Benutzername';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Unm&ouml;glich die Mailbox aufzufinden!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Neues Passwort';
+$PALANG['pEdit_mailbox_password2'] = 'Neues Passwort (nochmal)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Die beiden Passw&ouml;rter sind nicht identisch!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Name';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Das angegebene Quota ist zu hoch!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Diese Domain geh&ouml;rt nicht Ihnen: ';
+$PALANG['pEdit_mailbox_button'] = 'Mailbox editieren';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Unm&ouml;glich das Passwort zu &auml;ndern!</span>';
+
+$PALANG['pPassword_welcome'] = '&Auml;ndern Sie Ihr Login-Passwort.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Das angegebene Login entspricht keiner Mailbox!</span>';
+$PALANG['pPassword_password_current'] = 'Jetziges Password';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Sie haben Ihr derzeitiges Passwort nicht angegeben!</span>';
+$PALANG['pPassword_password'] = 'Neues Passwort';
+$PALANG['pPassword_password2'] = 'Neues Password (nochmal)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Die beiden angegebenen Passw&ouml;rter sind nicht identische!<br />Oder leer!</span>';
+$PALANG['pPassword_button'] = 'Passwort &auml;ndern';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Unm&ouml;glich das Passwort zu &auml;ndern!</span>';
+$PALANG['pPassword_result_succes'] = 'Ihr Passwort wurde ge&auml;ndert!';
+
+$PALANG['pViewlog_welcome'] = 'Zeigt die letzten 10 Aktionen f&uuml;r ';
+$PALANG['pViewlog_timestamp'] = 'Zeitpunkt';
+$PALANG['pViewlog_username'] = 'Admin';
+$PALANG['pViewlog_domain'] = 'Domain';
+$PALANG['pViewlog_action'] = 'Aktion';
+$PALANG['pViewlog_data'] = 'Daten';
+
+$PALANG['pViewlog_button'] = 'Los';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Kann keine Eintr&auml;ge finden!</span>';
+
+$PALANG['pSendmail_welcome'] = 'eMail versenden.';
+$PALANG['pSendmail_admin'] = 'Von';
+$PALANG['pSendmail_to'] = 'An';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Das "An"-Feld ist leer bzw. ung&uuml;ltig!</span>';
+$PALANG['pSendmail_subject'] = 'Betreff';
+$PALANG['pSendmail_subject_text'] = 'Willkommen';
+$PALANG['pSendmail_body'] = 'Text';
+$PALANG['pSendmail_button'] = 'Versende Nachricht';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Kann Mailbox nicht anlegen!</span>';
+$PALANG['pSendmail_result_succes'] = 'Mailbox wurde angelegt!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Admin Liste';
+$PALANG['pAdminMenu_list_domain'] = 'Domain Liste';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual Liste';
+$PALANG['pAdminMenu_viewlog'] = 'Log ansehen';
+$PALANG['pAdminMenu_backup'] = 'Sicherung';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domain Admins';
+$PALANG['pAdminMenu_create_admin'] = 'Neuer Admin';
+$PALANG['pAdminMenu_create_domain'] = 'Neue Domain';
+$PALANG['pAdminMenu_create_alias'] = 'Alias hinzuf&uuml;gen';
+$PALANG['pAdminMenu_create_mailbox'] = 'Mailbox hinzuf&uuml;gen';
+
+$PALANG['pAdminList_admin_domain'] = 'Domain';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domains';
+$PALANG['pAdminList_admin_modified'] = 'zuletzt ge&auml;ndert';
+$PALANG['pAdminList_admin_active'] = 'Aktiv';
+
+$PALANG['pAdminList_domain_domain'] = 'Domain';
+$PALANG['pAdminList_domain_description'] = 'Beschreibung';
+$PALANG['pAdminList_domain_aliases'] = 'Aliase';
+$PALANG['pAdminList_domain_mailboxes'] = 'Mailboxen';
+$PALANG['pAdminList_domain_maxquota'] = 'Max Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'zuletzt ge&auml;ndert';
+$PALANG['pAdminList_domain_active'] = 'Aktiv';
+
+$PALANG['pAdminList_virtual_button'] = 'Los';
+$PALANG['pAdminList_virtual_welcome'] = '&Uuml;berblic f&uuml;r ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliase';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Mailboxen';
+$PALANG['pAdminList_virtual_alias_address'] = 'Von';
+$PALANG['pAdminList_virtual_alias_goto'] = 'An';
+$PALANG['pAdminList_virtual_alias_modified'] = 'zuletzt ge&auml;ndert';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Name';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'zuletzt ge&auml;ndert';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiv';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Domain hinzuf&uuml;gen';
+$PALANG['pAdminCreate_domain_domain'] = 'Domain';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Diese Domain existiert bereits!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Beschreibung';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliase';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Standard-Aliase hinzuf&uuml;gen';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Domain hinzuf&uuml;gen';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Konnte Domain nicht anlegen!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domain wurde angelegt!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Domain editieren';
+$PALANG['pAdminEdit_domain_domain'] = 'Domain';
+$PALANG['pAdminEdit_domain_description'] = 'Beschreibung';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliase';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = ausschalten | 0 = kein Limit';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiv';
+$PALANG['pAdminEdit_domain_button'] = 'Domain editieren';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Konnte Domain nicht editieren!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Neuen Domain-Admin hinzuf&uuml;gen';
+$PALANG['pAdminCreate_admin_username'] = 'Admin';
+$PALANG['pAdminCreate_admin_username_text'] = 'Email Adresse';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email Adresse<br /><span class="error_msg">Admin-Adresse ist keine echte Email-Adresse!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email Adresse<br /><span class="error_msg">Der Admin existiert bereits bzw. ist nicht korrekt</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Passwort';
+$PALANG['pAdminCreate_admin_password2'] = 'Passwort (nochmal)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Die angegebenen Passw&ouml;rter sind nicht identisch<br />Oder leer!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Admin hinzuf&uuml;gen';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Konnte den Admin nicht anlegen!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Admin angelegt!';
+$PALANG['pAdminCreate_admin_address'] = 'Domain';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Domain Admin editieren';
+$PALANG['pAdminEdit_admin_username'] = 'Admin';
+$PALANG['pAdminEdit_admin_password'] = 'Passwort';
+$PALANG['pAdminEdit_admin_password2'] = 'Passwort (nochmal)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Die beiden Passw&ouml;rter sind nicht identisch<br />Oder leer!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiv';
+$PALANG['pAdminEdit_admin_button'] = 'Admin editieren';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Konnte Admin nicht &auml;ndern</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Admin ge&auml;ndert!';
+
+$PALANG['pUsersLogin_welcome'] = 'Benutzer bitte hier einloggen, um Weiterleitungen bzw. das Passwort zu &auml;ndern.';
+$PALANG['pUsersLogin_username'] = 'Login (email)';
+$PALANG['pUsersLogin_password'] = 'Passwort';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Falscher Login! Bitte benutzen Sie ihre Email-Adresse als Login';
+$PALANG['pUsersLogin_password_incorrect'] = 'Falsches Passwort!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automatische Antwort';
+$PALANG['pUsersMenu_edit_alias'] = 'Weiterleitung &auml;ndern';
+$PALANG['pUsersMenu_password'] = 'Passwort &auml;ndern';
+
+$PALANG['pUsersMain_vacation'] = 'Geben Sie eine "Automatische Antwort" ein. Sinnvoll z.B. w&auml;hrend Sie im Urlaub sind';
+$PALANG['pUsersMain_edit_alias'] = '&Auml;ndern Sie Ihre Weiterleitung.';
+$PALANG['pUsersMain_password'] = '&Auml;ndern Sie Ihr Passwort.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automatische Antwort.';
+$PALANG['pUsersVacation_welcome_text'] = 'Sie haben schon eine Automatische Antwort konfiguriert!';
+$PALANG['pUsersVacation_subject'] = 'Betreff';
+$PALANG['pUsersVacation_subject_text'] = 'Ich bin weg...';
+$PALANG['pUsersVacation_body'] = 'Text';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Ich bin vom <date> bis <date> nicht zu Hause / im Bro.
+In dringenden Fllen setzen Sie sich bitte mit <contact person> in Verbindung.
+Vielen Dank fr Ihr Verstndniss.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Ich gehe weg';
+$PALANG['pUsersVacation_button_back'] = 'Ich bin zur&uuml;ck';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Konnte Ihre Automatische Antwort nicht einstellen!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Ihre Automatische Antwort wurde gel&ouml;scht!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/en.lang b/languages/en.lang
new file mode 100644
index 0000000..48d4160
--- /dev/null
+++ b/languages/en.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file English
+// by Mischa <mischa at high5 dot net>
+//
+$PALANG['YES'] = 'YES';
+$PALANG['NO'] = 'NO';
+$PALANG['edit'] = 'edit';
+$PALANG['del'] = 'del';
+$PALANG['confirm'] = 'Are you sure you want to delete this?\n';
+$PALANG['confirm_domain'] = 'Do you really want to delete all records for this domain? This can not be undone!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Mail admins login here to administer your domain.';
+$PALANG['pLogin_username'] = 'Login (email)';
+$PALANG['pLogin_password'] = 'Password';
+$PALANG['pLogin_button'] = 'Login';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Your login is not correct. Make sure that you login with your email address!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Your password is not correct!</span>';
+$PALANG['pLogin_login_users'] = 'Users click here to login to the user section.';
+
+$PALANG['pMenu_overview'] = 'Overview';
+$PALANG['pMenu_create_alias'] = 'Add Alias';
+$PALANG['pMenu_create_mailbox'] = 'Add Mailbox';
+$PALANG['pMenu_sendmail'] = 'Send Email';
+$PALANG['pMenu_password'] = 'Password';
+$PALANG['pMenu_viewlog'] = 'View Log';
+$PALANG['pMenu_logout'] = 'Logout';
+
+$PALANG['pMain_welcome'] = 'Welcome to Postfix Admin!';
+$PALANG['pMain_overview'] = 'List your aliases and mailboxes. You can edit / delete them from here.';
+$PALANG['pMain_create_alias'] = 'Create a new alias for your domain.';
+$PALANG['pMain_create_mailbox'] = 'Create a new mailbox for your domain.';
+$PALANG['pMain_sendmail'] = 'Send an email to one of your newly created mailboxes.';
+$PALANG['pMain_password'] = 'Change the password for your admin account.';
+$PALANG['pMain_viewlog'] = 'View the log files.';
+$PALANG['pMain_logout'] = 'Logout from the system';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Go';
+$PALANG['pOverview_welcome'] = 'Overview for ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliases';
+$PALANG['pOverview_alias_mailbox_count'] = 'Mailboxes';
+$PALANG['pOverview_alias_address'] = 'From';
+$PALANG['pOverview_alias_goto'] = 'To';
+$PALANG['pOverview_alias_modified'] = 'Last Modified';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Name';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Last Modified';
+$PALANG['pOverview_mailbox_active'] = 'Active';
+
+$PALANG['pOverview_get_domain'] = 'Domain';
+$PALANG['pOverview_get_aliases'] = 'Aliases';
+$PALANG['pOverview_get_mailboxes'] = 'Mailboxes';
+$PALANG['pOverview_get_quota'] = 'Mailbox Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Last Modified';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Unable to delete the entry ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">This domain is not yours ';
+
+$PALANG['pCreate_alias_welcome'] = 'Create a new alias for your domain.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">The ALIAS is not valid!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">This email address already exists, please choose a different one!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">You have reached your limit to create aliases!</span>';
+$PALANG['pCreate_alias_goto'] = 'To';
+$PALANG['pCreate_alias_button'] = 'Add Alias';
+$PALANG['pCreate_alias_goto_text'] = 'Where the mail needs to be send to.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Where the email needs to go.<br /><span class="error_msg">The TO is not valid!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Unable to add the alias to the alias table!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'The alias has been added to the alias table!';
+$PALANG['pCreate_alias_catchall_text'] = 'To create a catch-all use an "*" as alias.<br />For domain to domain forwarding use "*@domain.tld" as to.';
+
+$PALANG['pEdit_alias_welcome'] = 'Edit an alias for your domain.<br />One entry per line.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Unable to locate alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'To';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">You didn\'t enter anything at To</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">The email address that you have entered is not valid: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">This domain is not yours: ';
+$PALANG['pEdit_alias_button'] = 'Edit Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Unable to modify the alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Create a new mailbox for your domain.';
+$PALANG['pCreate_mailbox_username'] = 'Username';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">The EMAIL is not valid!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">This email address already exists, please choose a different one!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">You have reached your limit to create mailboxes!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Password';
+$PALANG['pCreate_mailbox_password2'] = 'Password (again)';
+$PALANG['pCreate_mailbox_password_text'] = 'Password for POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Password for POP3/IMAP<br /><span class="error_msg">The passwords that you supplied don\'t match!<br />Or are empty!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Name';
+$PALANG['pCreate_mailbox_name_text'] = 'Full name';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">The quota that you specified is to high!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Active';
+$PALANG['pCreate_mailbox_mail'] = 'Create mailbox';
+$PALANG['pCreate_mailbox_button'] = 'Add Mailbox';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Unable to add the mailbox to the mailbox table!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'The mailbox has been added to the mailbox table!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Edit a mailbox for your domain.';
+$PALANG['pEdit_mailbox_username'] = 'Username';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Unable to locate mailbox!</span>';
+$PALANG['pEdit_mailbox_password'] = 'New Password';
+$PALANG['pEdit_mailbox_password2'] = 'New Password (again)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">The passwords that you supplied don\'t match!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Name';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">The quota that you specified is to high!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">This domain is not yours: ';
+$PALANG['pEdit_mailbox_button'] = 'Edit Mailbox';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Unable to modify the mailbox!</span>';
+
+$PALANG['pPassword_welcome'] = 'Change your login password.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">The LOGIN that you supplied doesn\'t match a mailbox!</span>';
+$PALANG['pPassword_password_current'] = 'Current Password';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">You didn\'t supply your current password!</span>';
+$PALANG['pPassword_password'] = 'New Password';
+$PALANG['pPassword_password2'] = 'New Password (again)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">The passwords that you supplied don\'t match!<br />Or are empty!</span>';
+$PALANG['pPassword_button'] = 'Change Password';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Unable to change your password!</span>';
+$PALANG['pPassword_result_succes'] = 'Your password has been changed!';
+
+$PALANG['pViewlog_welcome'] = 'View the last 10 actions for ';
+$PALANG['pViewlog_timestamp'] = 'Timestamp';
+$PALANG['pViewlog_username'] = 'Admin';
+$PALANG['pViewlog_domain'] = 'Domain';
+$PALANG['pViewlog_action'] = 'Action';
+$PALANG['pViewlog_data'] = 'Data';
+
+$PALANG['pViewlog_button'] = 'Go';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Unable to find the logs!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Send an email.';
+$PALANG['pSendmail_admin'] = 'From';
+$PALANG['pSendmail_to'] = 'To';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">To is empty or is not a valid email address!</span>';
+$PALANG['pSendmail_subject'] = 'Subject';
+$PALANG['pSendmail_subject_text'] = 'Welcome';
+$PALANG['pSendmail_body'] = 'Body';
+$PALANG['pSendmail_button'] = 'Send Message';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Unable to create mailbox!</span>';
+$PALANG['pSendmail_result_succes'] = 'The mailbox has been created!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Admin List';
+$PALANG['pAdminMenu_list_domain'] = 'Domain List';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual List';
+$PALANG['pAdminMenu_viewlog'] = 'View Log';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domain Admins';
+$PALANG['pAdminMenu_create_admin'] = 'New Admin';
+$PALANG['pAdminMenu_create_domain'] = 'New Domain';
+$PALANG['pAdminMenu_create_alias'] = 'Add Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Add Mailbox';
+
+$PALANG['pAdminList_admin_domain'] = 'Domain';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domains';
+$PALANG['pAdminList_admin_modified'] = 'Last Modified';
+$PALANG['pAdminList_admin_active'] = 'Active';
+
+$PALANG['pAdminList_domain_domain'] = 'Domain';
+$PALANG['pAdminList_domain_description'] = 'Description';
+$PALANG['pAdminList_domain_aliases'] = 'Aliases';
+$PALANG['pAdminList_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminList_domain_maxquota'] = 'Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Last Modified';
+$PALANG['pAdminList_domain_active'] = 'Active';
+
+$PALANG['pAdminList_virtual_button'] = 'Go';
+$PALANG['pAdminList_virtual_welcome'] = 'Overview for ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliases';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Mailboxes';
+$PALANG['pAdminList_virtual_alias_address'] = 'From';
+$PALANG['pAdminList_virtual_alias_goto'] = 'To';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Last Modified';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Name';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Last Modified';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Active';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Add a new domain';
+$PALANG['pAdminCreate_domain_domain'] = 'Domain';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">The domain already exists!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Description';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliases';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = disable | 0 = unlimited';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = disable | 0 = unlimited';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = disable | 0 = unlimited';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Add default mail aliases';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Add Domain';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Unable to add domain!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domain has been added!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Edit a domain';
+$PALANG['pAdminEdit_domain_domain'] = 'Domain';
+$PALANG['pAdminEdit_domain_description'] = 'Description';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliases';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = disable | 0 = unlimited';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = disable | 0 = unlimited';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = disable | 0 = unlimited';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Active';
+$PALANG['pAdminEdit_domain_button'] = 'Edit Domain';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Unable to modify domain!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Add a new domain admin';
+$PALANG['pAdminCreate_admin_username'] = 'Admin';
+$PALANG['pAdminCreate_admin_username_text'] = 'Email address';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email address<br /><span class="error_msg">Admin is not a valid email address!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email address<br /><span class="error_msg">The admin already exists or is not valid</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Password';
+$PALANG['pAdminCreate_admin_password2'] = 'Password (again)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">The passwords that you supplied don\'t match!<br />Or are empty!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Add Admin';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Unable to add admin!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Admin has been added!';
+$PALANG['pAdminCreate_admin_address'] = 'Domain';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Edit a domain admin';
+$PALANG['pAdminEdit_admin_username'] = 'Admin';
+$PALANG['pAdminEdit_admin_password'] = 'Password';
+$PALANG['pAdminEdit_admin_password2'] = 'Password (again)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">The passwords that you supplied don\'t match!<br />Or are empty!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Active';
+$PALANG['pAdminEdit_admin_button'] = 'Edit Admin';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Unable to modify admin!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Admin has been modified!';
+
+$PALANG['pUsersLogin_welcome'] = 'Mailbox users login to change your password and aliases.';
+$PALANG['pUsersLogin_username'] = 'Login (email)';
+$PALANG['pUsersLogin_password'] = 'Password';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Your login is not correct. Make sure that you login with your email address!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Your password is not correct!';
+
+$PALANG['pUsersMenu_vacation'] = 'Auto Response';
+$PALANG['pUsersMenu_edit_alias'] = 'Change your forward';
+$PALANG['pUsersMenu_password'] = 'Change Password';
+
+$PALANG['pUsersMain_vacation'] = 'Set an "out of office" message or auto responder for your mail.';
+$PALANG['pUsersMain_edit_alias'] = 'Change your email forwarding.';
+$PALANG['pUsersMain_password'] = 'Change your current password.';
+
+$PALANG['pUsersVacation_welcome'] = 'Auto Response.';
+$PALANG['pUsersVacation_welcome_text'] = 'You already have an auto response configured!';
+$PALANG['pUsersVacation_subject'] = 'Subject';
+$PALANG['pUsersVacation_subject_text'] = 'Out of Office';
+$PALANG['pUsersVacation_body'] = 'Body';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+I will be away from <date> until <date>.
+For urgent matters you can contact <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Going Away';
+$PALANG['pUsersVacation_button_back'] = 'Coming Back';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Unable to update your auto response settings!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Your auto response has been removed!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/es.lang b/languages/es.lang
new file mode 100644
index 0000000..329a2ef
--- /dev/null
+++ b/languages/es.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Spanish
+// by Alvaro
+//
+$PALANG['YES'] = 'SI';
+$PALANG['NO'] = 'NO';
+$PALANG['edit'] = 'editar';
+$PALANG['del'] = 'borrar';
+$PALANG['confirm'] = 'Est seguro de que desea borrarlo?\n';
+$PALANG['confirm_domain'] = 'Est seguro de que desea borrar todos los registros de este dominio? Esto no puede ser deshecho!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Login de administrador para administracin de dominios.';
+$PALANG['pLogin_username'] = 'Usuario (e-mail)';
+$PALANG['pLogin_password'] = 'Contrasea';
+$PALANG['pLogin_button'] = 'Usuario';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">El login no es correcto. Asegurese de que ha hecho login con su e-mail.</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Su contrasea no es correcta!</span>';
+$PALANG['pLogin_login_users'] = 'Login para ir a la seccin de usuarios.';
+$PALANG['pMenu_overview'] = 'Resumen';
+$PALANG['pMenu_create_alias'] = 'Aadir alias';
+$PALANG['pMenu_create_mailbox'] = 'Aadir buzn';
+$PALANG['pMenu_sendmail'] = 'Enviar e-mail';
+$PALANG['pMenu_password'] = 'Contrasea';
+$PALANG['pMenu_viewlog'] = 'Ver Logs';
+$PALANG['pMenu_logout'] = 'Salir';
+
+$PALANG['pMain_welcome'] = 'Bienvenido a Postfix Admin!';
+$PALANG['pMain_overview'] = 'Listado de sus alias y buzones. Puede editarlos / borrarlos desde aqu.';
+$PALANG['pMain_create_alias'] = 'Creacin de un nuevo alias para su dominio.';
+$PALANG['pMain_create_mailbox'] = 'Creacin de un nuevo buzn para su dominio.';
+$PALANG['pMain_sendmail'] = 'Enviar un email a uno de los buzones recientemente creados.';
+$PALANG['pMain_password'] = 'Cambiar la contrasea para su cuenta de administracin.';
+$PALANG['pMain_viewlog'] = 'Ver Logs.';
+$PALANG['pMain_logout'] = 'Salir.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Ir';
+$PALANG['pOverview_welcome'] = 'Resumen de ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias';
+$PALANG['pOverview_alias_mailbox_count'] = 'Buzones';
+$PALANG['pOverview_alias_address'] = 'De';
+$PALANG['pOverview_alias_goto'] = 'Destino';
+$PALANG['pOverview_alias_modified'] = 'ltima modificacin';
+$PALANG['pOverview_mailbox_username'] = 'E-mail';
+$PALANG['pOverview_mailbox_name'] = 'Nombre';
+$PALANG['pOverview_mailbox_quota'] = 'Cuota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'ltima modificacin';
+$PALANG['pOverview_mailbox_active'] = 'Activo';
+
+$PALANG['pOverview_get_domain'] = 'Dominio';
+$PALANG['pOverview_get_aliases'] = 'Alias';
+$PALANG['pOverview_get_mailboxes'] = 'Buzones';
+$PALANG['pOverview_get_quota'] = 'Cuota de buzn (MB)';
+$PALANG['pOverview_get_modified'] = 'ltima Modificacin';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Imposible borrar el registro ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Este dominio no le pertenece ';
+
+$PALANG['pCreate_alias_welcome'] = 'Crear un nuevo alias para el dominio.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">El ALIAS no es vlido!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Esta direccin ya existe, elija otra diferente por favor!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Ha llegado a su lmite de creacin de alias!</span>';
+$PALANG['pCreate_alias_goto'] = 'Destino';
+$PALANG['pCreate_alias_button'] = 'Aadir alias';
+$PALANG['pCreate_alias_goto_text'] = 'A donde debe de ser enviado el e-mail.';
+$PALANG['pCreate_alias_goto_text_error'] = 'A donde debe de ser enviado el e-mail.<br /><span class="error_msg">El PARA no es vlido!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">No es posible aadir el alias a la tabla de alias!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'El alias ha sido aadido a la tabla de alias!';
+$PALANG['pCreate_alias_catchall_text'] = 'Para crear un alias general use "*" como alias.<br />Para una redireccin de dominio a dominio, use "*@domain.tld" como Destino.';
+
+$PALANG['pEdit_alias_welcome'] = 'Edite un alias para su dominio.<br />Una entrada por lnea.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Imposible de localizar el alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'Destino';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">No ha introducido nada en el destino</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">La direccin de e-mail introducida no es vlida: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Este dominio no le pertenece: ';
+$PALANG['pEdit_alias_button'] = 'Editar alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Imposible modificar el alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Crear un nuevo buzn para su dominio.';
+$PALANG['pCreate_mailbox_username'] = 'Usuario';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">El e-mail no es vlido!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Este e-mail ya existe, escoja uno diferente por favor!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Ha llegado al lmite de creacin de buzones!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Contrasea';
+$PALANG['pCreate_mailbox_password2'] = 'Contrasea (repetir)';
+$PALANG['pCreate_mailbox_password_text'] = 'Contrasea para POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Contrasea para POP3/IMAP<br /><span class="error_msg">Las contraseas introducidas no coinciden<br />o estn en blanco!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nombre';
+$PALANG['pCreate_mailbox_name_text'] = 'Nombre completo';
+$PALANG['pCreate_mailbox_quota'] = 'Cuota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La cuota especificada es demasiado alta!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Activo';
+$PALANG['pCreate_mailbox_mail'] = 'Crear buzn';
+$PALANG['pCreate_mailbox_button'] = 'Aadir buzn';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Imposible aadir un buzn a la tabla de buzones!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'El buzn ha sido aadido a la tabla de buzones!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Editar un buzn para su dominio.';
+$PALANG['pEdit_mailbox_username'] = 'Usuario';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Imposible localizar el buzn!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nueva contrasea';
+$PALANG['pEdit_mailbox_password2'] = 'Nueva contrasea (repetir)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Las contraseas introducidas no coinciden!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nombre';
+$PALANG['pEdit_mailbox_quota'] = 'Cuota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La cuota especificada es demasiado alta!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Este dominio no le pertenece: ';
+$PALANG['pEdit_mailbox_button'] = 'Editar buzn';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Imposible cambiar la contrasea!</span>';
+
+$PALANG['pPassword_welcome'] = 'Cambie su contrasea de login.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">El LOGIN suministrado no coincide con ningn buzn!</span>';
+$PALANG['pPassword_password_current'] = 'Contrasea actual';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">No ha introducido la contrasea actual!</span>';
+$PALANG['pPassword_password'] = 'Nueva contrasea';
+$PALANG['pPassword_password2'] = 'Nueva contrasea (repetir)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Las contraseas introducidas no coinciden<br />o estn en blanco!</span>';
+$PALANG['pPassword_button'] = 'Cambiar contrasea';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Imposible cambiar la contrasea!</span>';
+$PALANG['pPassword_result_succes'] = 'Su contrasea ha sido cambiada!';
+
+$PALANG['pViewlog_welcome'] = 'Ver las ltimas 10 acciones para ';
+$PALANG['pViewlog_timestamp'] = 'Fecha/Hora';
+$PALANG['pViewlog_username'] = 'Administrador';
+$PALANG['pViewlog_domain'] = 'Dominio';
+$PALANG['pViewlog_action'] = 'Accin';
+$PALANG['pViewlog_data'] = 'Datos';
+
+$PALANG['pViewlog_button'] = 'Ir';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Imposible encontrar los logs!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Enviar un e-mail.';
+$PALANG['pSendmail_admin'] = 'De';
+$PALANG['pSendmail_to'] = 'Destino';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">La direccin destino est vaca o es una direccin invlida!</span>';
+$PALANG['pSendmail_subject'] = 'Asunto';
+$PALANG['pSendmail_subject_text'] = 'Bienvenido';
+$PALANG['pSendmail_body'] = 'Cuerpo';
+$PALANG['pSendmail_button'] = 'Enviar mensaje';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Imposible crear el buzn!</span>';
+$PALANG['pSendmail_result_succes'] = 'El buzn ha sido creado!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Lista de administradores';
+$PALANG['pAdminMenu_list_domain'] = 'Lista de dominios';
+$PALANG['pAdminMenu_list_virtual'] = 'Lista de direcciones virtuales';
+$PALANG['pAdminMenu_viewlog'] = 'Ver Logs';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Administradores de dominio';
+$PALANG['pAdminMenu_create_admin'] = 'Nuevo administrador';
+$PALANG['pAdminMenu_create_domain'] = 'Nuevo dominio';
+$PALANG['pAdminMenu_create_alias'] = 'Aadir alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Aadir buzn';
+
+$PALANG['pAdminList_admin_domain'] = 'Dominio';
+$PALANG['pAdminList_admin_username'] = 'Administrador';
+$PALANG['pAdminList_admin_count'] = 'Dominios';
+$PALANG['pAdminList_admin_modified'] = 'ltima Modificacin';
+$PALANG['pAdminList_admin_active'] = 'Activo';
+
+$PALANG['pAdminList_domain_domain'] = 'Dominio';
+$PALANG['pAdminList_domain_description'] = 'Descripcin';
+$PALANG['pAdminList_domain_aliases'] = 'Alias';
+$PALANG['pAdminList_domain_mailboxes'] = 'Buzones';
+$PALANG['pAdminList_domain_maxquota'] = 'Cuota Mxima (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'ltima Modificacin';
+$PALANG['pAdminList_domain_active'] = 'Activo';
+
+$PALANG['pAdminList_virtual_button'] = 'Ir';
+$PALANG['pAdminList_virtual_welcome'] = 'Resumen de ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Buzones';
+$PALANG['pAdminList_virtual_alias_address'] = 'De';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Destino';
+$PALANG['pAdminList_virtual_alias_modified'] = 'ltima Modificacin';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-mail';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nombre';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Cuota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'ltima Modificacin';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Activo';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Aadir nuevo dominio';
+$PALANG['pAdminCreate_domain_domain'] = 'Dominio';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">El dominio ya existe!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Descripcin';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Buzones';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Cuota mxima';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Aadir alias por defecto';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Aadir dominio';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Imposible aadir el dominio!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'El dominio ha sido aadido!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Editar un dominio';
+$PALANG['pAdminEdit_domain_domain'] = 'Dominio';
+$PALANG['pAdminEdit_domain_description'] = 'Descripcin';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Buzones';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Cuota mxima';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = deshabilitar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Activo';
+$PALANG['pAdminEdit_domain_button'] = 'Editar dominio';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Imposible modificar el dominio!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Aadir un nuevo administrador de dominio';
+$PALANG['pAdminCreate_admin_username'] = 'Administrador';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-mail';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-mail<br /><span class="error_msg">Administrador no es un e-mail vlido!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-mail<br /><span class="error_msg">El administrador ya existe o no es vlido!</span>';
+
+$PALANG['pAdminCreate_admin_password'] = 'Contrasea';
+$PALANG['pAdminCreate_admin_password2'] = 'Contrasea (repetir)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Las contraseas introducidas no coinciden<br />o estn en blanco!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Aadir administrador';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Imposible aadir el administrador!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'El administrador ha sido aadido!';
+$PALANG['pAdminCreate_admin_address'] = 'Dominio';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Editar un administrador de dominio';
+$PALANG['pAdminEdit_admin_username'] = 'Administrador';
+$PALANG['pAdminEdit_admin_password'] = 'Contrasea';
+$PALANG['pAdminEdit_admin_password2'] = 'Contrasea (repetir)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Las contraseas introducidas no coinciden<br />o estn en blanco!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Activo';
+$PALANG['pAdminEdit_admin_button'] = 'Editar administrador';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Imposible modificar el administrador!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'El administrador ha sido modificado!';
+
+$PALANG['pUsersLogin_welcome'] = 'Login de usuarios para cambiar la contrasea y alias.';
+$PALANG['pUsersLogin_username'] = 'Login (e-mail)';
+$PALANG['pUsersLogin_password'] = 'Contrasea';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Su login no es correcto. Asegrese de haber introducido su direccin de e-mail como login!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Su contrasea no es correcta!';
+
+$PALANG['pUsersMenu_vacation'] = 'Respuesta automtica';
+$PALANG['pUsersMenu_edit_alias'] = 'Cambiar la redireccin';
+$PALANG['pUsersMenu_password'] = 'Cambiar la contrasea';
+
+$PALANG['pUsersMain_vacation'] = 'Configure un mensaje de "fuera del trabajo" o una respuesta automtica para su correo.';
+$PALANG['pUsersMain_edit_alias'] = 'Cambie su redireccin de correo.';
+$PALANG['pUsersMain_password'] = 'Cambie su contrasea.';
+
+$PALANG['pUsersVacation_welcome'] = 'Respuesta automtica.';
+$PALANG['pUsersVacation_welcome_text'] = 'Ya dispone de una respuesta automtica configurada!';
+$PALANG['pUsersVacation_subject'] = 'Asunto';
+$PALANG['pUsersVacation_subject_text'] = 'Fuera del trabajo';
+$PALANG['pUsersVacation_body'] = 'Cuerpo';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Estar fuera desde <date> hasta <date>.
+Para asuntos urgentes, puede contactar conmigo en <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Ausente';
+$PALANG['pUsersVacation_button_back'] = 'De vuelta';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Imposible actualizar la configuracin de su respuesta automtica!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Su respuesta automtica ha sido borrada!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/et.lang b/languages/et.lang
new file mode 100644
index 0000000..2bd3801
--- /dev/null
+++ b/languages/et.lang
@@ -0,0 +1,298 @@
+<?php
+//
+// Language file Estonian
+// by Peeter Partel <peeter at sigma dot ee>
+//
+$PALANG['YES'] = 'JAH';
+$PALANG['NO'] = 'EI';
+$PALANG['edit'] = 'Redigeeri';
+$PALANG['del'] = 'Kustuta';
+$PALANG['confirm'] = 'Oled kindel, et soovid seda kustutada?\n';
+$PALANG['confirm_domain'] = 'Oled testi kindel, et tahad kustutada kik kirjed sellele domeenile? Seda tegevust ei saa tagasi vtta!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'E-posti haldaja, logi siit domeeni administreerimiseks sisse.';
+$PALANG['pLogin_username'] = 'Kasutajanimi (e-postiaadress)';
+$PALANG['pLogin_password'] = 'Parool';
+$PALANG['pLogin_button'] = 'Logisisse';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Kasutajanimi pole ige. Veendu, et logid sisse korrektse e-posti aadressiga!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Parool pole ige!</span>';
+$PALANG['pLogin_login_users'] = 'Kasutaja, klpsa siia logimaks sisse kasutaja sektsiooni.';
+
+$PALANG['pMenu_overview'] = 'levaade';
+$PALANG['pMenu_create_alias'] = 'Lisa alias';
+$PALANG['pMenu_create_mailbox'] = 'Lisa postkast';
+$PALANG['pMenu_sendmail'] = 'Saadakiri';
+$PALANG['pMenu_password'] = 'Parool';
+$PALANG['pMenu_viewlog'] = 'Vaatalogi';
+$PALANG['pMenu_logout'] = 'Logivlja';
+
+$PALANG['pMain_welcome'] = 'Teretulemast domeeni(de) administreerimise liidesesse!';
+$PALANG['pMain_overview'] = 'Loetelu aliastest ja postkastidest. Siin saab neid muuta ja kustutada.';
+$PALANG['pMain_create_alias'] = 'Loo uus alias domeenile.';
+$PALANG['pMain_create_mailbox'] = 'Loo uus postkast domeenile.';
+$PALANG['pMain_sendmail'] = 'Saada kiri sjaloodud postkasti.';
+$PALANG['pMain_password'] = 'Muuda haldamise konto parool.';
+$PALANG['pMain_viewlog'] = 'Vaata logi faili.';
+$PALANG['pMain_logout'] = 'Logivlja liidesest.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Mine';
+$PALANG['pOverview_welcome'] = 'levaade domeenist: ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasi';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postkaste';
+$PALANG['pOverview_alias_address'] = 'Kellelt';
+$PALANG['pOverview_alias_goto'] = 'Kellele';
+$PALANG['pOverview_alias_modified'] = 'Viimatimuudetud';
+$PALANG['pOverview_mailbox_username'] = 'E-postiaadress';
+$PALANG['pOverview_mailbox_name'] = 'Nimi';
+$PALANG['pOverview_mailbox_quota'] = 'Kettaruumipiirang (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Viimatimuudetud';
+$PALANG['pOverview_mailbox_active'] = 'Aktiivne';
+
+$PALANG['pOverview_get_domain'] = 'Domeen';
+$PALANG['pOverview_get_aliases'] = 'Aliased';
+$PALANG['pOverview_get_mailboxes'] = 'Postkastid';
+$PALANG['pOverview_get_quota'] = 'Postkasti kettaruumipiirang (MB)';
+$PALANG['pOverview_get_modified'] = 'Viimatimuudetud';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Kustutamine ebannestus. Kirje: ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Puuduvad igused. Domeen: ';
+
+$PALANG['pCreate_alias_welcome'] = 'Loo uus alias domeenis.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">ALIAS pole kehtiv!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">See e-postiaadress eksisteeribjuba, palunvali erinev!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Oled kasutanud kogu aliaste arvu!</span>';
+$PALANG['pCreate_alias_goto'] = 'Kellele';
+$PALANG['pCreate_alias_button'] = 'Lisa alias';
+$PALANG['pCreate_alias_goto_text'] = 'Kuhu peab kirja saatma.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Kuhu peab kirja saatma.<br /><span class="error_msg">Kellele pole kehtiv!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Aliase lisamine tabelisse ebannestus!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias lisati aliaste tabelisse!';
+$PALANG['pCreate_alias_catchall_text'] = 'Loomaks pa-kik aadressi kasuta aliasena "*".<br />Domeenilt domeenile edasisaatmiseks kasuta kellele vljal "*@domeen.xx".';
+
+$PALANG['pEdit_alias_welcome'] = 'Muuda aliast.<br />ks kirje rea kohta.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Aliase muutmine ebannestus!</span>';
+$PALANG['pEdit_alias_goto'] = 'Kellele';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Kellele vli on thi.</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Sisestatud e/posti aadress pole kehtiv: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Puuduvad igused. Domeen: ';
+$PALANG['pEdit_alias_button'] = 'Muuda alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Aliase muutmine ebannestus!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Loo uus postkast domeenis.';
+$PALANG['pCreate_mailbox_username'] = 'Kasutajanimi';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">E-postiaadress pole kehtiv!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Selline e-postiaadress on juba olemas, palun vali erinev!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Oled kasutanud kogu postkastide arvu!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Parool';
+$PALANG['pCreate_mailbox_password2'] = 'Parool (uuesti)';
+$PALANG['pCreate_mailbox_password_text'] = 'Parool POP3/IMAP\'le';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Parool POP3/IMAP\'le<br /><span class="error_msg">Sisestatud paroolid ei kattu!<br />Vi on thjad!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nimi';
+$PALANG['pCreate_mailbox_name_text'] = 'Tieliknimi';
+$PALANG['pCreate_mailbox_quota'] = 'Kettaruumipiirang';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Sisestatud kettaruumipiirang on liiga krge!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiivne';
+$PALANG['pCreate_mailbox_mail'] = 'Loo postkast';
+$PALANG['pCreate_mailbox_button'] = 'Lisa postkast';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Postkasti lisamine tabelisse ebannestus!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Postkast lisati postkastide tabelisse!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Muuda postkasti.';
+$PALANG['pEdit_mailbox_username'] = 'Kasutajanimi';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Postkasti muutmine ebannestus!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Uus parool';
+$PALANG['pEdit_mailbox_password2'] = 'Uus parool (uuesti)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Sisestatud paroolid ei kattu!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nimi';
+$PALANG['pEdit_mailbox_quota'] = 'Kettaruumipiirang';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Sisestatud kettaruumipiirang on liiga krge!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Puuduvad igused. Domeen: ';
+$PALANG['pEdit_mailbox_button'] = 'Muuda postkast';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Postkasti muutmine ebannestus!</span>';
+
+$PALANG['pPassword_welcome'] = 'Muuda kasutajanime parool.';
+$PALANG['pPassword_admin'] = 'Kasutajanimi';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">KASUTAJANIMI pole kehtiv!</span>';
+$PALANG['pPassword_password_current'] = 'Praeguneparool';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Praegust parooli ei sisestatud!</span>';
+$PALANG['pPassword_password'] = 'Uus parool';
+$PALANG['pPassword_password2'] = 'Uus parool (uuesti)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Sisestatud paroolid ei kattu!<br />Vi on thjad!</span>';
+$PALANG['pPassword_button'] = 'Muuda parool';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Parooli muutmine ebannestus!</span>';
+$PALANG['pPassword_result_succes'] = 'Parool on muudetud!';
+
+$PALANG['pViewlog_welcome'] = 'Vaata 10 viimast muudatust domeeniga ';
+$PALANG['pViewlog_timestamp'] = 'Ajatempel';
+$PALANG['pViewlog_username'] = 'Haldaja';
+$PALANG['pViewlog_domain'] = 'Domeen';
+$PALANG['pViewlog_action'] = 'Toiming';
+$PALANG['pViewlog_data'] = 'Andmed';
+
+$PALANG['pViewlog_button'] = 'Mine';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Logi ei leitud!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Saada kiri.';
+$PALANG['pSendmail_admin'] = 'Kellelt';
+$PALANG['pSendmail_to'] = 'Kellele';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Kellele on thi vi ei sisalda kehtivat aadressi!</span>';
+$PALANG['pSendmail_subject'] = 'Teema';
+$PALANG['pSendmail_subject_text'] = 'Teretulemast';
+$PALANG['pSendmail_body'] = 'Phitekst';
+$PALANG['pSendmail_button'] = 'Saada teade';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Postkasti loomine ebannestus!</span>';
+$PALANG['pSendmail_result_succes'] = 'Postkast on loodud!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Haldajate loetelu';
+$PALANG['pAdminMenu_list_domain'] = 'Domeenide loetelu';
+$PALANG['pAdminMenu_list_virtual'] = 'Domeenide loetelu';
+$PALANG['pAdminMenu_viewlog'] = 'Vaata logi';
+$PALANG['pAdminMenu_backup'] = 'Varukoopia';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domeeni haldajad';
+$PALANG['pAdminMenu_create_admin'] = 'Lisa haldaja';
+$PALANG['pAdminMenu_create_domain'] = 'Lisa domeen';
+$PALANG['pAdminMenu_create_alias'] = 'Lisa alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Lisa postkast';
+
+$PALANG['pAdminList_admin_domain'] = 'Domeen';
+$PALANG['pAdminList_admin_username'] = 'Haldaja';
+$PALANG['pAdminList_admin_count'] = 'Domeenid';
+$PALANG['pAdminList_admin_modified'] = 'Viimati muudetud';
+$PALANG['pAdminList_admin_active'] = 'Aktiivne';
+
+$PALANG['pAdminList_domain_domain'] = 'Domeen';
+$PALANG['pAdminList_domain_description'] = 'Kirjeldus';
+$PALANG['pAdminList_domain_aliases'] = 'Aliased';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postkastid';
+$PALANG['pAdminList_domain_maxquota'] = 'Maksimaalne kettaruumipiirang (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Viimatimuudetud';
+$PALANG['pAdminList_domain_active'] = 'Aktiivne';
+
+$PALANG['pAdminList_virtual_button'] = 'Mine';
+$PALANG['pAdminList_virtual_welcome'] = 'levaade domeenist: ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliasi';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postkaste';
+$PALANG['pAdminList_virtual_alias_address'] = 'Kellelt';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Kellele';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Viimatimuudetud';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-postiaadress';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nimi';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kettaruumipiirang (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Viimatimuudetud';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiivne';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Lisa uus domeen';
+$PALANG['pAdminCreate_domain_domain'] = 'Domeen';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Selline domeen on juba olemas!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Kirjeldus';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliasi';
+$PALANG['pAdminCreate_domain_aliases_text'] = '0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postkaste';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Maksimaalne kettaruum';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> 0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Lisa vaikimisi aliased';
+$PALANG['pAdminCreate_domain_backupmx'] = 'E-posti server on varuserver (backup MX)';
+$PALANG['pAdminCreate_domain_button'] = 'Lisa domeen';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domeeni lisamine ebannestus!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domeen on lisatud!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Redigeeri domeeni';
+$PALANG['pAdminEdit_domain_domain'] = 'Domeen';
+$PALANG['pAdminEdit_domain_description'] = 'Kirjeldus';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliasi';
+$PALANG['pAdminEdit_domain_aliases_text'] = '0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postkaste';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Maksimaalne kettaruum';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> 0 = keelatud | -1 = piiramatult';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'E-posti server on varuserver (backup MX)';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiivne';
+$PALANG['pAdminEdit_domain_button'] = 'Muuda domeen';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Domeeni muutmine ebannestus!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Lisa uus domeeni haldaja';
+$PALANG['pAdminCreate_admin_username'] = 'Haldaja';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-postiaadress';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-postiaadress<br /><span class="error_msg">Vljal haldaja pole kehtiv e-postiaadress!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-postiaadress<br /><span class="error_msg">Selline haldaja on juba olemas</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Parool';
+$PALANG['pAdminCreate_admin_password2'] = 'Parool (uuesti)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Sisestatud paroolid ei kattu!<br />Vi on thjad!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Lisa haldaja';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Haldaja lisamine ebannestus!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Haldaja on lisatud!';
+$PALANG['pAdminCreate_admin_address'] = 'Domeen';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Muuda domeeni haldajat';
+$PALANG['pAdminEdit_admin_username'] = 'Haldaja';
+$PALANG['pAdminEdit_admin_password'] = 'Parool';
+$PALANG['pAdminEdit_admin_password2'] = 'Parool (uuesti)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Sisestatud paroolid ei kattu!<br />Vi on thjad!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiivne';
+$PALANG['pAdminEdit_admin_button'] = 'Muuda haldaja';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Haldaja muutmine ebannestus!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Haldaja on muudetud!';
+
+$PALANG['pUsersLogin_welcome'] = 'Postkasti kasutaja sisse logimine muutmaks parooli ja aliast.';
+$PALANG['pUsersLogin_username'] = 'Kasutajanimi (e-postiaadress)';
+$PALANG['pUsersLogin_password'] = 'Parool';
+$PALANG['pUsersLogin_button'] = 'Logisisse';
+$PALANG['pUsersLogin_username_incorrect'] = 'Kasutajanimi pole ige. Veendu, et sisestatud kasutajanimi on e-postiaadress!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Parool pole ige!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automaatne vastus';
+$PALANG['pUsersMenu_edit_alias'] = 'Muuda edasisaatmist';
+$PALANG['pUsersMenu_password'] = 'Muuda parool';
+
+$PALANG['pUsersMain_vacation'] = 'Mra "kontorist vljas" teade vi automaatne vastaja e-postiaadressile.';
+$PALANG['pUsersMain_edit_alias'] = 'Muuda e-postiedasisaatmist.';
+$PALANG['pUsersMain_password'] = 'Muuda praegustparooli.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automaatne vastus.';
+$PALANG['pUsersVacation_welcome_text'] = 'Automaatne vastus on juba seadistatud!';
+$PALANG['pUsersVacation_subject'] = 'Teema';
+$PALANG['pUsersVacation_subject_text'] = 'Kontorist vljas';
+$PALANG['pUsersVacation_body'] = 'Phitekst';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Olen kontorist eemal alates <date> kuni <date>.
+Kiireloomuliste asjade korral palun kontakteeru <kontakt isik>.
+
+I will be away from <date> until <date>.
+For urgent matters you can contact <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Olen eemal alates';
+$PALANG['pUsersVacation_button_back'] = 'Tulen tagasi';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Automaatse vastuse uuendamine ebannestus!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Automaatne vastus on eemaldatud!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/eu.lang b/languages/eu.lang
new file mode 100644
index 0000000..89c8019
--- /dev/null
+++ b/languages/eu.lang
@@ -0,0 +1,294 @@
+<?php
+//
+// Language file Euskara
+// by Julen
+//
+$PALANG['YES'] = 'BAI';
+$PALANG['NO'] = 'EZ';
+$PALANG['edit'] = 'aldatu';
+$PALANG['del'] = 'ezabatu';
+$PALANG['confirm'] = 'Ziur al zaude ezabatu nahi duzula?\n';
+$PALANG['confirm_domain'] = 'Ziur al zaude domeinu honetako erregistro guztiak ezbatu nahi dituzula? Hau ezin izango da desegin!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Kudeatzailearen logina domeinuak kudeatzeko.';
+$PALANG['pLogin_username'] = 'Erabiltzailea (e-mail)';
+$PALANG['pLogin_password'] = 'Pasahitza';
+$PALANG['pLogin_button'] = 'Erabiltzailea';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Logina ez da zuzena. Ziurtatu zaitez logina zeure e-mailarekin egin duzula.</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Pasahitz okerra!</span>';
+$PALANG['pLogin_login_users'] = 'Erabiltzaileen gunera joateko logina.';
+$PALANG['pMenu_overview'] = 'Laburpena';
+$PALANG['pMenu_create_alias'] = 'Aliasa gehitu';
+$PALANG['pMenu_create_mailbox'] = 'Postontzia gehitu';
+$PALANG['pMenu_sendmail'] = 'e-maila bidali';
+$PALANG['pMenu_password'] = 'Pasahitza';
+$PALANG['pMenu_viewlog'] = 'Logak ikusi';
+$PALANG['pMenu_logout'] = 'Irten';
+
+$PALANG['pMain_welcome'] = 'Ongietorri Postfix Adminera!';
+$PALANG['pMain_overview'] = 'Alias eta postontzien zerrenda. Hemendik aldatu / ezabatu ditzakezu.';
+$PALANG['pMain_create_alias'] = 'Zure domeinuarentzako alias berri baten sorkuntza.';
+$PALANG['pMain_create_mailbox'] = 'Zure domeinuarentzako postontzi berri baten sorkuntza.';
+$PALANG['pMain_sendmail'] = 'Duela gutxi sorturiko postontziren batera e-mail bat bidali.';
+$PALANG['pMain_password'] = 'Kudeatzaile konturako pasahitza aldatu.';
+$PALANG['pMain_viewlog'] = 'Logak ikusi.';
+$PALANG['pMain_logout'] = 'Irten.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Joan';
+$PALANG['pOverview_welcome'] = 'Laburpena ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasa';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postontziak';
+$PALANG['pOverview_alias_address'] = 'Igorlea';
+$PALANG['pOverview_alias_goto'] = 'Norakoa';
+$PALANG['pOverview_alias_modified'] = 'Azken aldaketa';
+$PALANG['pOverview_mailbox_username'] = 'E-mail';
+$PALANG['pOverview_mailbox_name'] = 'Izena';
+$PALANG['pOverview_mailbox_quota'] = 'Kuota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Azken aldaketa';
+$PALANG['pOverview_mailbox_active'] = 'Aktibatua';
+
+$PALANG['pOverview_get_domain'] = 'Domeinua';
+$PALANG['pOverview_get_aliases'] = 'Aliasa';
+$PALANG['pOverview_get_mailboxes'] = 'Postontziak';
+$PALANG['pOverview_get_quota'] = 'Postontzi kuota (MB)';
+$PALANG['pOverview_get_modified'] = 'Azken aldaketa';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Ezinezkoa sarrera ezabatzea ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Ez zara domeinu honen jabe';
+$PALANG['pCreate_alias_welcome'] = 'Domeinuarentzat alias berri bat sortu.';
+$PALANG['pCreate_alias_address'] = 'Aliasa';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">ALIASa okerra da!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Helbide hau existitzen da, ezberdin bat aukera ezazu mesedez!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Alias sortze mugara heldu zara!</span>';
+$PALANG['pCreate_alias_goto'] = 'Norakoa';
+$PALANG['pCreate_alias_button'] = 'Aliasa gehitu';
+$PALANG['pCreate_alias_goto_text'] = 'Nora bidali behar den e-maila.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Nora bidali behar den e-maila.<br /><span class="error_msg">NORAKO okerra!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Ezinezkoa aliasa alias taulan sartzea!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Aliasa alias taulan gehituta!';
+$PALANG['pCreate_alias_catchall_text'] = 'Alias orokor bat sortzeko "*" erabil ezazu alias gisa.<br />Domeinuz domeinurako birbideraketa baterako Norako gisa "*@domain.tld" erabil ezazu.';
+
+$PALANG['pEdit_alias_welcome'] = 'Domeinuarentzat aliasa aldatu.<br />Lerroko sarrera bat.';
+$PALANG['pEdit_alias_address'] = 'Aliasa';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Ezinezkoa aliasa aurkitzea!</span>';
+$PALANG['pEdit_alias_goto'] = 'Norakoa';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Norakoan ez duzu ezer jarri</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Sartutako e-mail helbidea baliiogabekoa da: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Ez zara domeinu honen jabe: ';
+$PALANG['pEdit_alias_button'] = 'Aliasa aldatu';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Ezinezkoa aliasa aldatzea!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Postontzi berri bat sortu domeinuarentzat.';
+$PALANG['pCreate_mailbox_username'] = 'Erabiltzailea';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">E-maila baliogabekoa da!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">E-mail hau existitzen da. Ezberdin bat aukera ezazu, mesedez!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Postontzi sorkuntza mugara iritsi zara!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Pasahitza';
+$PALANG['pCreate_mailbox_password2'] = 'Pasahitza (errepikatu)';
+$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP-entzat pasahitza';
+$PALANG['pCreate_mailbox_password_text_error'] = 'POP3/IMAP-entzat pasahitza<br /><span class="error_msg">Sartutako pasahitzak ez datoz bat<br />edo zuriz daude!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Izena';
+$PALANG['pCreate_mailbox_name_text'] = 'Izen osoa';
+$PALANG['pCreate_mailbox_quota'] = 'Kuota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Zehazturiko kuota altuegia da!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktibatua';
+$PALANG['pCreate_mailbox_mail'] = 'Postontzia sortu';
+$PALANG['pCreate_mailbox_button'] = 'Postontzia gehitu';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Ezinezkoa postontzi taulara postontzia gehitzea!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Postontzia postontzi taulara sartu da!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Domeinuarentzat postontzi bat aldatu.';
+$PALANG['pEdit_mailbox_username'] = 'Erabiltzailea';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Ezinezkoa postontzia aurkitzea!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Pasahitz berria';
+$PALANG['pEdit_mailbox_password2'] = 'Pasahitz berria (errepikatu)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Sartutako pasahitzak ez datoz bat!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Izena';
+$PALANG['pEdit_mailbox_quota'] = 'Kuota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Zehazturiko kuota altuegia da!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Ez zara domeinu honen jabe: ';
+$PALANG['pEdit_mailbox_button'] = 'Postontzia aldatu';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Ezinezkoa pasahitza aldatzea!</span>';
+
+$PALANG['pPassword_welcome'] = 'Login pasahitza aldatu.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Emandako LOGINa ez dator inolako postontziekin bat!</span>';
+$PALANG['pPassword_password_current'] = 'Egungo pasahitza';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Ez duzu egungo pasahitzik sartu!</span>';
+$PALANG['pPassword_password'] = 'Pasahitz berria';
+$PALANG['pPassword_password2'] = 'Pasahitz berria (errepikatu)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Sarturiko pasahitzak ez datoz bat<br />edo zuriz daude!</span>';
+$PALANG['pPassword_button'] = 'Pasahitza aldatu';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Ezinezkoa pasahitza aldatzea!</span>';
+$PALANG['pPassword_result_succes'] = 'Pasahitza aldatuta!';
+
+$PALANG['pViewlog_welcome'] = 'Honen azken 10 ekintzak ikusi ';
+$PALANG['pViewlog_timestamp'] = 'Data/ordua';
+$PALANG['pViewlog_username'] = 'Kudeatzailea';
+$PALANG['pViewlog_domain'] = 'Domeinua';
+$PALANG['pViewlog_action'] = 'Ekintza';
+$PALANG['pViewlog_data'] = 'Datuak';
+
+$PALANG['pViewlog_button'] = 'Joan';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Ezinezkoa logak aurkitzea!</span>';
+
+$PALANG['pSendmail_welcome'] = 'e-mail bat bidali.';
+$PALANG['pSendmail_admin'] = 'Igorlea';
+$PALANG['pSendmail_to'] = 'Norakoa';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Norako helbidea hutsa dago edo okerra da!</span>';
+$PALANG['pSendmail_subject'] = 'Gaia';
+$PALANG['pSendmail_subject_text'] = 'Ongi etorri';
+$PALANG['pSendmail_body'] = 'Gorputza';
+$PALANG['pSendmail_button'] = 'Mezua bidali';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Ezinezkoa postontzia sortzea!</span>';
+$PALANG['pSendmail_result_succes'] = 'Postontzia sortuta!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Kudeatzaile zerrenda';
+$PALANG['pAdminMenu_list_domain'] = 'Domeinu zerrenda';
+$PALANG['pAdminMenu_list_virtual'] = 'Helbide birtualen zerrenda';
+$PALANG['pAdminMenu_viewlog'] = 'Logak ikusi';
+$PALANG['pAdminMenu_backup'] = 'Segurtasun kopia';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domeinu kudeatzaileak';
+$PALANG['pAdminMenu_create_admin'] = 'Kudeatzaile berria';
+$PALANG['pAdminMenu_create_domain'] = 'Domeinu berria';
+$PALANG['pAdminMenu_create_alias'] = 'Aliasa gehitu';
+$PALANG['pAdminMenu_create_mailbox'] = 'Postontzia gehitu';
+
+$PALANG['pAdminList_admin_domain'] = 'Domeinua';
+$PALANG['pAdminList_admin_username'] = 'Kudeatzailea';
+$PALANG['pAdminList_admin_count'] = 'Domeinuak';
+$PALANG['pAdminList_admin_modified'] = 'Azken aldaketa';
+$PALANG['pAdminList_admin_active'] = 'Aktibatua';
+
+$PALANG['pAdminList_domain_domain'] = 'Domeinua';
+$PALANG['pAdminList_domain_description'] = 'Deskripzioa';
+$PALANG['pAdminList_domain_aliases'] = 'Aliasa';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postontziak';
+$PALANG['pAdminList_domain_maxquota'] = 'Gehienezko kuota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Azken aldaketa';
+$PALANG['pAdminList_domain_active'] = 'Aktibatua';
+
+$PALANG['pAdminList_virtual_button'] = 'Joan';
+$PALANG['pAdminList_virtual_welcome'] = 'Laburpena ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliasa';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postontziak';
+$PALANG['pAdminList_virtual_alias_address'] = 'Igorlea';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Norakoa';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Azken aldaketa';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-mail';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Izena';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kuota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Azken aldaketa';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktibatua';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Domeinu berria gehitu';
+$PALANG['pAdminCreate_domain_domain'] = 'Domeinua';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Domeinua existitzen da!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Deskripzioa';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliasa';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postontziak';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Gehienezko kuota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Aurremugatutako aliasa gehitu';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Domeinua gehitu';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Ezinezkoa domeinua gehitzea!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domeinua gehituta!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Domeinu bat aldatu';
+$PALANG['pAdminEdit_domain_domain'] = 'Domeinua';
+$PALANG['pAdminEdit_domain_description'] = 'Deskripzioa';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliasa';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postontziak';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Gehienezko kuota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = desegokitu | 0 = mugagabea';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktibatua';
+$PALANG['pAdminEdit_domain_button'] = 'Domeinua aldatu';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Ezinezkoa domeinua aldatzea!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Domeinu kudeatzaile berri bat gehitu';
+$PALANG['pAdminCreate_admin_username'] = 'Kudeatzailea';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-mail helbidea';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-mail helbidea<br /><span class="error_msg">Kudeatzaile e-mailak ez du balio!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-mail<br /><span class="error_msg">Kudeatzailea existitzen da edo ez du balio!</span>';
+
+$PALANG['pAdminCreate_admin_password'] = 'Pasahitza';
+$PALANG['pAdminCreate_admin_password2'] = 'Pasahitza (errepikatu)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Sartutako pasahitzak ez datoz bat<br />edo zuriz daude!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Kudeatzailea gehitu';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Ezinezkoa kudeatzailea gehitzea!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Kudeatzailea gehituta1';
+$PALANG['pAdminCreate_admin_address'] = 'Domeinua';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Domeinu kudeatzaile bat aldatu';
+$PALANG['pAdminEdit_admin_username'] = 'Kudeatzailea';
+$PALANG['pAdminEdit_admin_password'] = 'Pasahitza';
+$PALANG['pAdminEdit_admin_password2'] = 'Pasahitza (errepikatu)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Sartutako pasahitzak ez datoz bat<br />edo zuriz daude!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktibatua';
+$PALANG['pAdminEdit_admin_button'] = 'Kudeatzailea aldatu';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Ezinezkoa kudeatzailea aldatzea!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Kudeatzailea aldatu da!';
+
+$PALANG['pUsersLogin_welcome'] = 'Erabiltzaileen logina pasahitz eta aliasa aldatzeko.';
+$PALANG['pUsersLogin_username'] = 'Login (e-mail)';
+$PALANG['pUsersLogin_password'] = 'Pasahitza';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Login okerra. Ziurta zaitez posta helbidea login gisa sartu duzula!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Pasahitz okerra!';
+
+$PALANG['pUsersMenu_vacation'] = 'Erantzun automatikoa';
+$PALANG['pUsersMenu_edit_alias'] = 'Berbiderapen helbidea aldatu';
+$PALANG['pUsersMenu_password'] = 'Pasahitza aldatu';
+
+$PALANG['pUsersMain_vacation'] = 'Konfigura ezazu "lanetik kanpo" motako mezu bat edo erantzun automatikoa zure postarentzat.';
+$PALANG['pUsersMain_edit_alias'] = 'Alda ezazu posta helbidea.';
+$PALANG['pUsersMain_password'] = 'Alda ezazu pasahitza.';
+
+$PALANG['pUsersVacation_welcome'] = 'Erantzun automatikoa.';
+$PALANG['pUsersVacation_welcome_text'] = 'Erantzun automatiko bat konfiguratuta duzu!';
+$PALANG['pUsersVacation_subject'] = 'Gaia';
+$PALANG['pUsersVacation_subject_text'] = 'Lanetik kanpo';
+$PALANG['pUsersVacation_body'] = 'Gorputza';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+<date>-tik <date> arte kanpoan egongo naiz.
+Larrialdiko gaientzat, hemen <contact person> kontakta dezakezu nirekin.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Aldeginda';
+$PALANG['pUsersVacation_button_back'] = 'Itzulita';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Ezinezkoa zure erantzun atomatikoaren konfigurazioa eguneratzea!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Zure erantzun automatikoa borratu da!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/fi.lang b/languages/fi.lang
new file mode 100644
index 0000000..39954d8
--- /dev/null
+++ b/languages/fi.lang
@@ -0,0 +1,294 @@
+<?php
+//
+// Language file Finnish
+// by Palo
+//
+$PALANG['YES'] = 'Kyll';
+$PALANG['NO'] = 'Ei';
+$PALANG['edit'] = 'muokkaa';
+$PALANG['del'] = 'poista';
+$PALANG['confirm'] = 'Oletko varma ett haluat poistaa tmn?\n';
+$PALANG['confirm_domain'] = 'Oletko varma ett haluat poistaa kaikki tietueet tst domainista? Tt komentoa ei voi perua!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Kirjautuminen';
+$PALANG['pLogin_username'] = 'Tunnus';
+$PALANG['pLogin_password'] = 'Salasana';
+$PALANG['pLogin_button'] = 'Kirjaudu';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Tunnus tai salasana vrin!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Tunnus tai salasana vrin!</span>';
+$PALANG['pLogin_login_users'] = 'Kyttjien kirjautuminen.';
+
+$PALANG['pMenu_overview'] = 'Yleisnkym';
+$PALANG['pMenu_create_alias'] = 'Lis alias';
+$PALANG['pMenu_create_mailbox'] = 'Lis postilaatikko';
+$PALANG['pMenu_sendmail'] = 'Lhet postia';
+$PALANG['pMenu_password'] = 'Salasana';
+$PALANG['pMenu_viewlog'] = 'Nyt loki';
+$PALANG['pMenu_logout'] = 'Kirjaudu ulos';
+
+$PALANG['pMain_welcome'] = 'Tervetuloa shkpostin hallintaan.';
+$PALANG['pMain_overview'] = 'Listaa aliakset ja postilaatikot. Voit muokata ja poistaa niit tst.';
+$PALANG['pMain_create_alias'] = 'Luo uusi alias domainiin.';
+$PALANG['pMain_create_mailbox'] = 'Luo uusi postilaatikko domainiin.';
+$PALANG['pMain_sendmail'] = 'Lhet shkpostia juuri luotuun postilaatikkoon.';
+$PALANG['pMain_password'] = 'Vaihda hallintatunnuksen salasanaa.';
+$PALANG['pMain_viewlog'] = 'Nyt lokitiedostot.';
+$PALANG['pMain_logout'] = 'Kirjaudu ulos jrjestelmst';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Siirry';
+$PALANG['pOverview_welcome'] = 'Yleisnkym ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliakset';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postilaatikot';
+$PALANG['pOverview_alias_address'] = 'Kenelt';
+$PALANG['pOverview_alias_goto'] = 'Kenelle';
+$PALANG['pOverview_alias_modified'] = 'Viimeksi muokattu';
+$PALANG['pOverview_mailbox_username'] = 'Shkposti';
+$PALANG['pOverview_mailbox_name'] = 'Nimi';
+$PALANG['pOverview_mailbox_quota'] = 'Kiinti (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Viimeksi muokattu';
+$PALANG['pOverview_mailbox_active'] = 'Aktiivinen';
+
+$PALANG['pOverview_get_domain'] = 'Domain';
+$PALANG['pOverview_get_aliases'] = 'Aliakset';
+$PALANG['pOverview_get_mailboxes'] = 'Postilaatikot';
+$PALANG['pOverview_get_quota'] = 'Postilaatikon kiinti (MB)';
+$PALANG['pOverview_get_modified'] = 'Viimeksi muokattu';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Tietueen poisto ei onnistu ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Tm ei ole sinun domainisi ';
+
+$PALANG['pCreate_alias_welcome'] = 'Luo uusi alias.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Alias ei ole oikean muotoinen!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Tm shkpostiosoite on jo kytss, ole hyv ja valitse jokin toinen!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Aliasten maksimimr saavutettu. Et voi list aliaksia en!</span>';
+$PALANG['pCreate_alias_goto'] = 'Kenelle';
+$PALANG['pCreate_alias_button'] = 'Lis alias';
+$PALANG['pCreate_alias_goto_text'] = 'Minne posti lhetetn.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Minne shkposti lhetetn.<br /><span class="error_msg">"Kenelle" osoite ei ole oikean muotoinen!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Aliaksen lisys alias tauluun eponnistui!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias on listty!';
+$PALANG['pCreate_alias_catchall_text'] = 'Jos haluat luoda catch-all osoitteen kyt "*" merkki aliaksena.<br />Ohjaus domainista domainiin tapahtuu kyttmll "*@domain.tld" Kenelle: -osoitteena.';
+$PALANG['pEdit_alias_welcome'] = 'Muokkaa aliasta.<br />Yksi kohta per rivi.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Aliasta ei lydy!</span>';
+$PALANG['pEdit_alias_goto'] = 'Kenelle';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Et kirjoitanut mitn Kenelle: -riville</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Antamasi shkpostiosoite ei ole oikean muotoinen: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Tm ei ole sinun domainisi: ';
+$PALANG['pEdit_alias_button'] = 'Muokkaa aliasta';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Aliasta ei voi muokata!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Luo uusi paikallinen postilaatikko.';
+$PALANG['pCreate_mailbox_username'] = 'Kyttjtunnus';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Shkpostiosoite ei ole oikean muotoinen!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Shkpostiosoite on jo kytss, ole hyv ja valitse jokin toinen!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Postilaatikoiden maksimimr saavutettu!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Salasana';
+$PALANG['pCreate_mailbox_password2'] = 'Salasana (toistamiseen)';
+$PALANG['pCreate_mailbox_password_text'] = 'POP3/IMAP salasana';
+$PALANG['pCreate_mailbox_password_text_error'] = 'POP3/IMAP salasana<br /><span class="error_msg">Antamasi salasanat eivt tsm!<br />tai ne ovat tyhjt!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nimi';
+$PALANG['pCreate_mailbox_name_text'] = 'Koko nimi';
+$PALANG['pCreate_mailbox_quota'] = 'Kiinti';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Antamasi kiinti on liian korkea!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiivinen';
+$PALANG['pCreate_mailbox_mail'] = 'Luo postilaatikko';
+$PALANG['pCreate_mailbox_button'] = 'Lis postilaatikko';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Postilaatikon lisminen ei onnistu!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Postilaatikko on listty!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Muokkaa postilaatikkoa.';
+$PALANG['pEdit_mailbox_username'] = 'Kyttjtunnus';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Postilaatikkoa ei lydy!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Uusi salasana';
+$PALANG['pEdit_mailbox_password2'] = 'Uusi salasana (toistamiseen)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Antamasi salasanat eivt tsm!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nimi';
+$PALANG['pEdit_mailbox_quota'] = 'Kiinti';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Antamasi kiinti on liian korkea!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Tm domaini ei ole sinun: ';
+$PALANG['pEdit_mailbox_button'] = 'Muokkaa postilaatikkoa';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Postilaatikon muokkaus ei onnistunut!</span>';
+
+$PALANG['pPassword_welcome'] = 'Vaihda tunnuksesi salasana.';
+$PALANG['pPassword_admin'] = 'Tunnus';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Antamaasi tunnusta ei ole olemassa!</span>';
+$PALANG['pPassword_password_current'] = 'Nykyinen salasanasi';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Et antanut nykyist salasanaasi!</span>';
+$PALANG['pPassword_password'] = 'Uusi salasana';
+$PALANG['pPassword_password2'] = 'Uusi salasana (toistamiseen)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Antamasi salasanat eivt tsm!<br />Tai ovat tyhji!</span>';
+$PALANG['pPassword_button'] = 'Vaihda salasana';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Salasanan vaihto ei onnistunut!</span>';
+$PALANG['pPassword_result_succes'] = 'Salasana vaihdettu!';
+
+$PALANG['pViewlog_welcome'] = 'Nyt viimeiset kymmenen tapahtumaa domainille ';
+$PALANG['pViewlog_timestamp'] = 'Aikaleima';
+$PALANG['pViewlog_username'] = 'Admin';
+$PALANG['pViewlog_domain'] = 'Domain';
+$PALANG['pViewlog_action'] = 'Tapahtuma';
+$PALANG['pViewlog_data'] = 'Tiedot';
+
+$PALANG['pViewlog_button'] = 'Siirry';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Lokeja ei lydy!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Lhet shkpostia.';
+$PALANG['pSendmail_admin'] = 'Kenelt';
+$PALANG['pSendmail_to'] = 'Kenelle';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Kenelle on tyhj tai osoite ei ole toimiva shkpostiosoite!</span>';
+$PALANG['pSendmail_subject'] = 'Otsikko';
+$PALANG['pSendmail_subject_text'] = 'Tervetuloa';
+$PALANG['pSendmail_body'] = 'Viesti';
+$PALANG['pSendmail_button'] = 'Lhet viesti';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Postilaatikon luonti ei onnistunut!</span>';
+$PALANG['pSendmail_result_succes'] = 'Postilaatikko on luotu!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Admin Lista';
+$PALANG['pAdminMenu_list_domain'] = 'Domain Lista';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual Lista';
+$PALANG['pAdminMenu_viewlog'] = 'Nyt loki';
+$PALANG['pAdminMenu_backup'] = 'Varmistus';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domainin yllpitjt';
+$PALANG['pAdminMenu_create_admin'] = 'Uusi yllpitj';
+$PALANG['pAdminMenu_create_domain'] = 'Uusi domain';
+$PALANG['pAdminMenu_create_alias'] = 'Lis alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Lis postilaatikko';
+
+$PALANG['pAdminList_admin_domain'] = 'Domain';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domainit';
+$PALANG['pAdminList_admin_modified'] = 'Viimeksi muokattu';
+$PALANG['pAdminList_admin_active'] = 'Aktiivinen';
+
+$PALANG['pAdminList_domain_domain'] = 'Domain';
+$PALANG['pAdminList_domain_description'] = 'Kuvaus';
+$PALANG['pAdminList_domain_aliases'] = 'Aliakset';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postilaatikot';
+$PALANG['pAdminList_domain_maxquota'] = 'Suurin sallittu kiinti (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Viimeksi muokattu';
+$PALANG['pAdminList_domain_active'] = 'Atiivinen';
+
+$PALANG['pAdminList_virtual_button'] = 'Siirry';
+$PALANG['pAdminList_virtual_welcome'] = 'Yleisnkym ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliakset';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postilaatikot';
+$PALANG['pAdminList_virtual_alias_address'] = 'Kenelt';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Kenelle';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Viimeksi muokattu';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Shkposti';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nimi';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kiinti (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Viimeksi muokattu';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Atiivinen';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Lis uusi domain';
+$PALANG['pAdminCreate_domain_domain'] = 'Domain';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Domain on jo jrjestelmss!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Kuvaus';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliakset';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postilaatikot';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max kiinti';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB <br /> -1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Lis oletus aliakset';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Lis domain';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domainin lisys ei onnistunut!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domain on listty!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Muokkaa domainia';
+$PALANG['pAdminEdit_domain_domain'] = 'Domain';
+$PALANG['pAdminEdit_domain_description'] = 'Kuvaus';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliakset';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postilaatikot';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max kiinti';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = ei kytss | 0 = rajoittamaton';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiivinen';
+$PALANG['pAdminEdit_domain_button'] = 'Muokkaa domainia';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Domainin muokkaus ei onnistu!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Lis uusi domainin yllpitj';
+$PALANG['pAdminCreate_admin_username'] = 'Admin';
+$PALANG['pAdminCreate_admin_username_text'] = 'Shkpostiosoite';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Shkpostiosoite<br /><span class="error_msg">Yllpitjn shkpostiosoite ei ole oikeanmuotoinen!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Shkpostiosoite<br /><span class="error_msg">Yllpitjn shkpostiosoite on jo olemassa tai se ei ole oikean muotoinen</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Salasana';
+$PALANG['pAdminCreate_admin_password2'] = 'Salasana (toistamiseen)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Antamasi salasanat eivt tsm<br />Tai ne ovat tyhji!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Lis yllpitj';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Yllpitjn lisys ei onnistu!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Yllpitj on listty!';
+$PALANG['pAdminCreate_admin_address'] = 'Domain';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Muokkaa domainin yllpitj';
+$PALANG['pAdminEdit_admin_username'] = 'Yllpitj';
+$PALANG['pAdminEdit_admin_password'] = 'Salasana';
+$PALANG['pAdminEdit_admin_password2'] = 'Salasana (toistamiseen)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Antamasi salasanat eivt tsm!<br />Tai ne ovat tyhji!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiivinen';
+$PALANG['pAdminEdit_admin_button'] = 'Muokkaa yllpitj';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Yllpitjn muokkaaminen ei onnistu!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Yllpitjn muokkaus onnistui!';
+
+$PALANG['pUsersLogin_welcome'] = 'Salasanan vaihto.';
+$PALANG['pUsersLogin_username'] = 'Tunnus';
+$PALANG['pUsersLogin_password'] = 'Salasana';
+$PALANG['pUsersLogin_button'] = 'Kirjaudu';
+$PALANG['pUsersLogin_username_incorrect'] = 'Kyttjtunnus tai salasana vrin!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Kyttjtunnus tai salasana vrin!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automaattivastaus';
+$PALANG['pUsersMenu_edit_alias'] = 'Muokkaa uudelleenohjausta';
+$PALANG['pUsersMenu_password'] = 'Vaihda salasana';
+
+$PALANG['pUsersMain_vacation'] = 'Aseta lomavastaaja tai automaattivastaus shkpostiisi.';
+$PALANG['pUsersMain_edit_alias'] = 'Muuta uudelleenohjauksen osoitetta.';
+$PALANG['pUsersMain_password'] = 'Vaihda nykyinen salasanasi.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automaattivastaus.';
+$PALANG['pUsersVacation_welcome_text'] = 'Sinulla on jo automaattivastaus pll!';
+$PALANG['pUsersVacation_subject'] = 'Otsikko';
+$PALANG['pUsersVacation_subject_text'] = 'Lomalla';
+$PALANG['pUsersVacation_body'] = 'Viesti';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Olen lomalla <pivys> <pivys> vlisen ajan.
+Kiireellisiss asioissa voitte ottaa yhteytt <shkpostiosoite>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Lomalle';
+$PALANG['pUsersVacation_button_back'] = 'Takaisin lomalta';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Automaattivastauksen asettaminen eponnistui!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Automaattivastaus on poistettu kytst!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/fo.lang b/languages/fo.lang
new file mode 100644
index 0000000..d3154cb
--- /dev/null
+++ b/languages/fo.lang
@@ -0,0 +1,300 @@
+<?php
+//
+// Language file Faroese
+// by Danial
+//
+$PALANG['YES'] = 'JA';
+$PALANG['NO'] = 'NEI';
+$PALANG['edit'] = 'broyt';
+$PALANG['del'] = 'strika';
+$PALANG['confirm'] = 'Ert t vs(ur) at t vilt strika hetta?\n';
+$PALANG['confirm_domain'] = 'Vilt t veruliga strika allar upplsingar fyri hetta navnaki? Her kann ikki vendast aftur!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Umsitarar kunnu logga inn her fyri at umsita tykkara navnaki.';
+$PALANG['pLogin_username'] = 'Login (e-post)';
+$PALANG['pLogin_password'] = 'Loynior';
+$PALANG['pLogin_button'] = 'Logga inn';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Ttt login er skeivt. Minst til at skriva fulla e-post adressu!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Ttt loynior er skeivt!</span>';
+$PALANG['pLogin_login_users'] = 'Brkarar kunnu logga inn her.';
+
+$PALANG['pMenu_overview'] = 'Yvirlit';
+$PALANG['pMenu_create_alias'] = 'Stovna Dulnevni';
+$PALANG['pMenu_create_mailbox'] = 'Stovna Postkassa';
+$PALANG['pMenu_sendmail'] = 'Send E-post';
+$PALANG['pMenu_password'] = 'Loynior';
+$PALANG['pMenu_viewlog'] = 'Vs Logg';
+$PALANG['pMenu_logout'] = 'Logga t';
+
+$PALANG['pMain_welcome'] = 'Vlkomin til Postfix Admin!';
+$PALANG['pMain_overview'] = 'Vs tni dulnevni og postkassar. T kanst broyta / strika tey her.';
+$PALANG['pMain_create_alias'] = 'Stovna eitt ntt dulnevni tnum navnaki.';
+$PALANG['pMain_create_mailbox'] = 'Stovna ein nggjan postkassa tnum navnaki.';
+$PALANG['pMain_sendmail'] = 'Send ein e-post til ein av tnum nstovnau postkassum.';
+$PALANG['pMain_password'] = 'Broyt loyniori tni umsitara konto.';
+$PALANG['pMain_viewlog'] = 'Vs logg flurnar.';
+$PALANG['pMain_logout'] = 'Logga t r skipanini';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Vel';
+$PALANG['pOverview_welcome'] = 'Yvirlit yvir ';
+$PALANG['pOverview_alias_alias_count'] = 'Dulnevni';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postkassar';
+$PALANG['pOverview_alias_address'] = 'Fr';
+$PALANG['pOverview_alias_goto'] = 'Til';
+$PALANG['pOverview_alias_modified'] = 'Sst broytt';
+$PALANG['pOverview_mailbox_username'] = 'E-post';
+$PALANG['pOverview_mailbox_name'] = 'Navn';
+$PALANG['pOverview_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Sst broytt';
+$PALANG['pOverview_mailbox_active'] = 'Virkin';
+
+$PALANG['pOverview_get_domain'] = 'Navnaki';
+$PALANG['pOverview_get_aliases'] = 'Dulnevni';
+$PALANG['pOverview_get_mailboxes'] = 'Postkassar';
+$PALANG['pOverview_get_quota'] = 'Postkassa kvota (MB)';
+$PALANG['pOverview_get_modified'] = 'Sst broytt';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Fi ikki strika ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Hetta er ikki ttt navnaki ';
+
+$PALANG['pCreate_alias_welcome'] = 'Stovna eitt ntt dulnevni tnum navnaki.';
+$PALANG['pCreate_alias_address'] = 'Dulnevni';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">DULNEVNI er gyldugt!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Hendan e-post adressa finst longu, vinarliga vel eina ara!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">T hevur ntt tnum marki at stovna dulnevni!</span>';
+$PALANG['pCreate_alias_goto'] = 'Til';
+$PALANG['pCreate_alias_button'] = 'Stovna Dulnevni';
+$PALANG['pCreate_alias_goto_text'] = 'Har posturin skal sendast til.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Har posturin verur sendur til.<br /><span class="error_msg">TIL er gyldugt!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Fi ikki stovna dulnevni!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Dulnevni er stovna!';
+$PALANG['pCreate_alias_catchall_text'] = 'Fyri at stovna eitt i fangar alt, brka eina "*" sum dulnevni.<br />Fyri navnaki til navnaki varisending brka "*@navnaki.fo" til hetta.';
+
+$PALANG['pEdit_alias_welcome'] = 'Broyt eitt dulnevni tnum navnaki.<br />Eina adressu pr. linju.';
+$PALANG['pEdit_alias_address'] = 'Dulnevni';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Finni ikki dulnevni!</span>';
+$PALANG['pEdit_alias_goto'] = 'Til';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">T skrivai onki Til teigin</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">E-post adressan t skrivai er gyldug: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Hetta navnaki er ikki ttt: ';
+$PALANG['pEdit_alias_button'] = 'Broyt Dulnevni';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Fi ikki broytt dulnevni!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Stovna ein nggjan postkassa tnum navnaki.';
+$PALANG['pCreate_mailbox_username'] = 'Brkaranavn';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">E-post adressan er gyldug!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Hendan e-post adressan finst longu, vinarliga vel eina ara!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">T hevur ntt tnum marki at stovna postkassar!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Loynior';
+$PALANG['pCreate_mailbox_password2'] = 'Loynior (umaftur)';
+$PALANG['pCreate_mailbox_password_text'] = 'Loynior til POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Loynior til POP3/IMAP<br /><span class="error_msg">Loyniorini t skrivai samsvara ikki!<br />Ella eru tm!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Navn';
+$PALANG['pCreate_mailbox_name_text'] = 'Fult navn';
+$PALANG['pCreate_mailbox_quota'] = 'Kvota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Kvotan t skrivai er ov hg!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Virkin';
+$PALANG['pCreate_mailbox_mail'] = 'Stovna postkassa';
+$PALANG['pCreate_mailbox_button'] = 'Stovna postkassa';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Fi ikki stovna postkassa!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Postkassin er stovnaur!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Broyt postkassa tnum navnaki.';
+$PALANG['pEdit_mailbox_username'] = 'Brkaranavn';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Finni ikki postkassa!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Ntt loynior';
+$PALANG['pEdit_mailbox_password2'] = 'Ntt loynior (umaftur)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Loyniorini t skrivai samsvara ikki!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Navn';
+$PALANG['pEdit_mailbox_quota'] = 'Kvota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Kvotan t skrivai er ov hg!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Hetta navnaki er ikki ttt: ';
+$PALANG['pEdit_mailbox_button'] = 'Broyt postkassa';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Fi ikki broytt loyniori!</span>';
+
+$PALANG['pPassword_welcome'] = 'Broyt ttt login loynior.';
+$PALANG['pPassword_admin'] = 'Logga inn';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Navni t skrivai samsvarar ikki vi nakran postkassa!</span>';
+$PALANG['pPassword_password_current'] = 'Nverandi loynior';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">T skrivai ikki ttt nverandi loynior!</span>';
+$PALANG['pPassword_password'] = 'Ntt loynior';
+$PALANG['pPassword_password2'] = 'Ntt loynior (umaftur)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Loyniorini t skrivai samsvara ikki!<br />Ella eru tm!</span>';
+$PALANG['pPassword_button'] = 'Broyt loynior';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Fi ikki broytt ttt loynior!</span>';
+$PALANG['pPassword_result_succes'] = 'Ttt loynior er broytt!';
+
+$PALANG['pViewlog_welcome'] = 'Vs seinastu 10 hendingarnar fyri ';
+$PALANG['pViewlog_timestamp'] = 'Tarstempul';
+$PALANG['pViewlog_username'] = 'Umsitari';
+$PALANG['pViewlog_domain'] = 'Navnaki';
+$PALANG['pViewlog_action'] = 'Hending';
+$PALANG['pViewlog_data'] = 'Dta';
+
+$PALANG['pViewlog_button'] = 'Vel';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Finni ikki loggarnar!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Send ein e-post.';
+$PALANG['pSendmail_admin'] = 'Fr';
+$PALANG['pSendmail_to'] = 'Til';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Til er tmt ella gyldug e-post adressa!</span>';
+$PALANG['pSendmail_subject'] = 'Evni';
+$PALANG['pSendmail_subject_text'] = 'Vlkomin';
+$PALANG['pSendmail_body'] = 'Bo';
+$PALANG['pSendmail_button'] = 'Send bo';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Fi ikki stovna postkassa!</span>';
+$PALANG['pSendmail_result_succes'] = 'Postkassin er stovnaur!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Umsitara listi';
+$PALANG['pAdminMenu_list_domain'] = 'Navnakja listi';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual listi';
+$PALANG['pAdminMenu_viewlog'] = 'Vs logg';
+$PALANG['pAdminMenu_backup'] = 'Trygdaravrit';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Umsitarar fyri Navnaki';
+$PALANG['pAdminMenu_create_admin'] = 'Nggjan Umsitara';
+$PALANG['pAdminMenu_create_domain'] = 'Ntt Navnaki';
+$PALANG['pAdminMenu_create_alias'] = 'Stovna Dulnevni';
+$PALANG['pAdminMenu_create_mailbox'] = 'Stovna Postkassa';
+
+$PALANG['pAdminList_admin_domain'] = 'Navnaki';
+$PALANG['pAdminList_admin_username'] = 'Umsitari';
+$PALANG['pAdminList_admin_count'] = 'Navnaki';
+$PALANG['pAdminList_admin_modified'] = 'Sst broytt';
+$PALANG['pAdminList_admin_active'] = 'Virkin';
+
+$PALANG['pAdminList_domain_domain'] = 'Navnaki';
+$PALANG['pAdminList_domain_description'] = 'Frgreiing';
+$PALANG['pAdminList_domain_aliases'] = 'Dulnevni';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postkassar';
+$PALANG['pAdminList_domain_maxquota'] = 'Hgsta Kvota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Sst broytt';
+$PALANG['pAdminList_domain_active'] = 'Virki';
+
+$PALANG['pAdminList_virtual_button'] = 'Vel';
+$PALANG['pAdminList_virtual_welcome'] = 'Yvirlit yvir ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Dulnevni';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postkassar';
+$PALANG['pAdminList_virtual_alias_address'] = 'Fr';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Til';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Sst broytt';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-post';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Navn';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Sst broytt';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Virkin';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Stova ntt navnaki';
+$PALANG['pAdminCreate_domain_domain'] = 'Navnaki';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Navnaki finst longu!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Frgreiing';
+$PALANG['pAdminCreate_domain_aliases'] = 'Dulnevni';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = virkja | 0 = avmarka';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postkassar';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = virkja | 0 = avmarka';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Hgsta kvota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = virkja | 0 = avmarka';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Stovna sjlvvirkin e-post dulnevni';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Post servari er "backup MX"';
+$PALANG['pAdminCreate_domain_button'] = 'Stovna navnaki';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Fi ikki stovna navnaki!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Navnaki er stovna!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Broyt navnaki';
+$PALANG['pAdminEdit_domain_domain'] = 'Navnaki';
+$PALANG['pAdminEdit_domain_description'] = 'Frgreiing';
+$PALANG['pAdminEdit_domain_aliases'] = 'Dulnevni';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = virkja | 0 = avmarka';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postkassar';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = virkja | 0 = avmarka';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Hgsta kvota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = virkja | 0 = avmarka';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Post servari er "backup MX"';
+$PALANG['pAdminEdit_domain_active'] = 'Virki';
+$PALANG['pAdminEdit_domain_button'] = 'Broyt navnaki';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Fi ikki broytt navnaki!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Stovna navnaki umsitara';
+$PALANG['pAdminCreate_admin_username'] = 'Umsitari';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-post adressa';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-post adressa<br /><span class="error_msg">Umsitari er gyldug e-post adressa!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-post adressa<br /><span class="error_msg">Umsitari finst longu ella er gyldugur</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Loynior';
+$PALANG['pAdminCreate_admin_password2'] = 'Loynior (umaftur)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Loyniorini t skrivai samsvara ikki!<br />Ella eru tm!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Stovna umsitara';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Fi ikki stovna umsitara!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Umsitari er stovnaur!';
+$PALANG['pAdminCreate_admin_address'] = 'Navnaki';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Broyt navnaki umsitara';
+$PALANG['pAdminEdit_admin_username'] = 'Umsitari';
+$PALANG['pAdminEdit_admin_password'] = 'Loynior';
+$PALANG['pAdminEdit_admin_password2'] = 'Loynior (umaftur)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Loyniorini t skrivai samsvara ikki!<br />Ella eru tm!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Virkin';
+$PALANG['pAdminEdit_admin_button'] = 'Broyt umsitara';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Fi ikki broytt umsitara!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Umsitari er broyttur!';
+
+$PALANG['pUsersLogin_welcome'] = 'Postkassa brkarar loggi inn fyri at broyta loynior, varisending ella frtarbo.';
+$PALANG['pUsersLogin_username'] = 'Login (e-post)';
+$PALANG['pUsersLogin_password'] = 'Loynior';
+$PALANG['pUsersLogin_button'] = 'Logga inn';
+$PALANG['pUsersLogin_username_incorrect'] = 'Ttt login er skeivt. Minst til at logga inn vi tni e-post adressu!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Ttt loynior er skeivt!';
+
+$PALANG['pUsersMenu_vacation'] = 'Frtarbo';
+$PALANG['pUsersMenu_edit_alias'] = 'Broyt varisending';
+$PALANG['pUsersMenu_password'] = 'Broyt loynior';
+
+$PALANG['pUsersMain_vacation'] = 'Set eini frtarbo ella svarbo fyri tn post.';
+$PALANG['pUsersMain_edit_alias'] = 'Send tn post vari til ara adressu.';
+$PALANG['pUsersMain_password'] = 'Broyt ttt nverandi loynior.';
+
+$PALANG['pUsersVacation_welcome'] = 'Sjlvvirki svar.';
+$PALANG['pUsersVacation_welcome_text'] = 'T hevur longu eini frtarbo uppsett!';
+$PALANG['pUsersVacation_subject'] = 'Evni';
+$PALANG['pUsersVacation_subject_text'] = 'Out of Office';
+$PALANG['pUsersVacation_body'] = 'Bo';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+I will be away from <dagfesting> until <dagfesting>.
+
+For urgent matters you can contact <firmanavn>.
+
+---
+
+Ttt navn
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Burtur';
+$PALANG['pUsersVacation_button_back'] = 'Heima';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Fi ikki broytt tnar frtarbo uppsetingar!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Ttt frtarbo er strika!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/fr.lang b/languages/fr.lang
new file mode 100644
index 0000000..bd507ee
--- /dev/null
+++ b/languages/fr.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file French
+// by Kuthz
+//
+$PALANG['YES'] = 'Oui';
+$PALANG['NO'] = 'Non';
+$PALANG['edit'] = 'Modifier';
+$PALANG['del'] = 'Effacer';
+$PALANG['confirm'] = 'Est-ce que vous voulez effacer cet enregistrement\n';
+$PALANG['confirm_domain'] = 'Etes-vous sur d\'effacer tous les enregistrements dans le domaine?\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Entrez votre couriel pour administrer votre domaine.';
+$PALANG['pLogin_username'] = 'Entrer (couriel)';
+$PALANG['pLogin_password'] = 'Mot de passe';
+$PALANG['pLogin_button'] = 'Entrer';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Votre couriel est invalide.Assurez-vous d\'avoir le bon couriel</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Votre mot de passe est invalide!</span>';
+$PALANG['pLogin_login_users'] = 'Utilisateurs, cliquez ici pour vos options';
+
+$PALANG['pMenu_overview'] = 'Vue d\'ensemble';
+$PALANG['pMenu_create_alias'] = 'Ajouter un aliase';
+$PALANG['pMenu_create_mailbox'] = 'Ajouter un compte couriel';
+$PALANG['pMenu_sendmail'] = 'Envoyer un couriel';
+$PALANG['pMenu_password'] = 'Mot de passe';
+$PALANG['pMenu_viewlog'] = 'Visualiser vnement';
+$PALANG['pMenu_logout'] = 'Sortir';
+
+$PALANG['pMain_welcome'] = 'Bienvenue sur Postfix Admin!';
+$PALANG['pMain_overview'] = 'Visualiser les aliases et les comptes couriels.(Modifier/Effacer)';
+$PALANG['pMain_create_alias'] = 'Ajouter un nouveau alias pour votre domaine.';
+$PALANG['pMain_create_mailbox'] = 'Ajouter un nouveau compte couriel pour votre domaine.';
+$PALANG['pMain_sendmail'] = 'Envoyer un couriel un compte couriel.';
+$PALANG['pMain_password'] = 'Changer votre mot de passe pour le compte administrateur.';
+$PALANG['pMain_viewlog'] = 'Visualiser le fichier d\'vnements.';
+$PALANG['pMain_logout'] = 'Sortir du systme';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Aller';
+$PALANG['pOverview_welcome'] = 'Vue d\'ensemble pour ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliases';
+$PALANG['pOverview_alias_mailbox_count'] = 'Comptes couriels';
+$PALANG['pOverview_alias_address'] = 'De';
+$PALANG['pOverview_alias_goto'] = 'A';
+$PALANG['pOverview_alias_modified'] = 'Dernire Modification';
+$PALANG['pOverview_mailbox_username'] = 'Couriel';
+$PALANG['pOverview_mailbox_name'] = 'Nom';
+$PALANG['pOverview_mailbox_quota'] = 'Limite (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Dernire Modification';
+$PALANG['pOverview_mailbox_active'] = 'Actif';
+
+$PALANG['pOverview_get_domain'] = 'Domaine';
+$PALANG['pOverview_get_aliases'] = 'Aliases';
+$PALANG['pOverview_get_mailboxes'] = 'Comptes couriels';
+$PALANG['pOverview_get_quota'] = 'Limite compte couriels (MB)';
+$PALANG['pOverview_get_modified'] = 'Dernire Modification';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Impossible d\'ffacer cette entre ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre ';
+
+$PALANG['pCreate_alias_welcome'] = 'Crer un nouveau alias pour votre domaine.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br><span class="error_msg">Cet ALIAS n\'est pas valide!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br><span class="error_msg">Ce couriel existe deja, svp choisissez-en un autre!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br><span class="error_msg">Vous avez atteint votre limite d\'aliases!</span>';
+$PALANG['pCreate_alias_goto'] = 'A';
+$PALANG['pCreate_alias_button'] = 'Ajouter un alias';
+$PALANG['pCreate_alias_goto_text'] = 'Envoyer les couriels A.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Ou les couriels doivent aller.<br /><span class="error_msg">A est invalide!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Impossible d\'ajouter un alias dans la table!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'L\'alias a t ajout!';
+$PALANG['pCreate_alias_catchall_text'] = 'Pour ajouter un alias global tout, utilisez "*".<br />Pour un transfert de domaine domaine, utilisez "*@domain.tld" dans le champs A.';
+
+$PALANG['pEdit_alias_welcome'] = 'Modifier un alias dans votre domaine.<br>Une entre par ligne.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Impossible de localiser l\'alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'A';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Vous devez entrer quelques choses dans le champs </span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Le couriel que vous avez entr est invalide: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre: ';
+$PALANG['pEdit_alias_button'] = 'Modifier cet alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Impossible de modifier cet alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Ajouter un nouveau compte couriel dans votre domaine.';
+$PALANG['pCreate_mailbox_username'] = 'Nom d\'utilisateur';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br><span class="error_msg">Le couriel est invalide!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br><span class="error_msg">Ce couriel existe deja, svp entrez un autre couriel!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br><span class="error_msg">Vous avez atteint la limite de compte couriel!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Mot de passe';
+$PALANG['pCreate_mailbox_password2'] = 'Mote de passe(confirmation)';
+$PALANG['pCreate_mailbox_password_text'] = 'Mot de passe pour compte POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Mot de passe pour compte POP3/IMAP<br /><span class="error_msg">Le mot de passe ne correspond pas!<br />ou est vide!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nom';
+$PALANG['pCreate_mailbox_name_text'] = 'Nom complet';
+$PALANG['pCreate_mailbox_quota'] = 'Limite';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La limite que vous avez specifie est trop haute!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Actif';
+$PALANG['pCreate_mailbox_mail'] = 'Ajouter un compte couriel';
+$PALANG['pCreate_mailbox_button'] = 'Ajouter un compte couriel';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Impossible d\'ajouter un compte couriel dans la table!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Le compte couriel a t ajout!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Modifier un compte couriel.';
+$PALANG['pEdit_mailbox_username'] = 'Nom d\'utilisateur';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Impossible de localiser le compte couriel!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nouveau mot de passe';
+$PALANG['pEdit_mailbox_password2'] = 'Nouveau mot de passe(confirmation)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Le mot de passe entr ne correspond pas!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nom';
+$PALANG['pEdit_mailbox_quota'] = 'Limite';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La limite fournit est trop haute!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Ce domaine n\'est pas le votre: ';
+$PALANG['pEdit_mailbox_button'] = 'Modifier un compte couriel';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Impossible de changer votre mot de passe!</span>';
+
+$PALANG['pPassword_welcome'] = 'Changer votre mot de passe.';
+$PALANG['pPassword_admin'] = 'Entrer';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Les informations entres ne correspondent pas a un compte couriel!</span>';
+$PALANG['pPassword_password_current'] = 'Mot de passe present';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Vous n\'avez pas fournit de mot de passe present!</span>';
+$PALANG['pPassword_password'] = 'Nouveau mot de passe';
+$PALANG['pPassword_password2'] = 'Nouveau mot de passe(confirmation)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Le mot de passe fournit ne correspond pas!<br />Ou est vide!</span>';
+$PALANG['pPassword_button'] = 'Changer mot de passe';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Impossible de changer votre mot de passe!</span>';
+$PALANG['pPassword_result_succes'] = 'Votre mot de passe a ete change!';
+
+$PALANG['pViewlog_welcome'] = 'Visualiser les 10 dernires action pour ';
+$PALANG['pViewlog_timestamp'] = 'Date/Heure';
+$PALANG['pViewlog_username'] = 'Administrateur';
+$PALANG['pViewlog_domain'] = 'Domaine';
+$PALANG['pViewlog_action'] = 'Action';
+$PALANG['pViewlog_data'] = 'Information';
+
+$PALANG['pViewlog_button'] = 'Aller';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Impossible de trouver les vnements!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Envoyer un couriel.';
+$PALANG['pSendmail_admin'] = 'De';
+$PALANG['pSendmail_to'] = 'A';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">A est vide ou ce n\'est pas un couriel valide!</span>';
+$PALANG['pSendmail_subject'] = 'Sujet';
+$PALANG['pSendmail_subject_text'] = 'Bienvenue';
+$PALANG['pSendmail_body'] = 'Message';
+$PALANG['pSendmail_button'] = 'Envoyer le message';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Erreur lors de l\'envoit du message!</span>';
+$PALANG['pSendmail_result_succes'] = 'Le message a t envoy!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Liste Administrateur';
+$PALANG['pAdminMenu_list_domain'] = 'Liste Domaine';
+$PALANG['pAdminMenu_list_virtual'] = 'Liste Virtuel';
+$PALANG['pAdminMenu_viewlog'] = 'Visualiser vnement';
+$PALANG['pAdminMenu_backup'] = 'Sauvegarde';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Administrateurs de domaines';
+$PALANG['pAdminMenu_create_admin'] = 'Nouveau administrateur';
+$PALANG['pAdminMenu_create_domain'] = 'Nouveau domaine';
+$PALANG['pAdminMenu_create_alias'] = 'Ajouter un Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Ajouter un compte couriel';
+
+$PALANG['pAdminList_admin_domain'] = 'Domaine';
+$PALANG['pAdminList_admin_username'] = 'Administrateur';
+$PALANG['pAdminList_admin_count'] = 'Domaines';
+$PALANG['pAdminList_admin_modified'] = 'Dernire modification';
+$PALANG['pAdminList_admin_active'] = 'Actif';
+
+$PALANG['pAdminList_domain_domain'] = 'Domaine';
+$PALANG['pAdminList_domain_description'] = 'Description';
+$PALANG['pAdminList_domain_aliases'] = 'Aliases';
+$PALANG['pAdminList_domain_mailboxes'] = 'Comptes couriels';
+$PALANG['pAdminList_domain_maxquota'] = 'Limite maximum (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Dernire modification';
+$PALANG['pAdminList_domain_active'] = 'Actif';
+
+$PALANG['pAdminList_virtual_button'] = 'Aller';
+$PALANG['pAdminList_virtual_welcome'] = 'Vue gnral pour ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliases';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Comptes couriels';
+$PALANG['pAdminList_virtual_alias_address'] = 'De';
+$PALANG['pAdminList_virtual_alias_goto'] = 'A';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Dernire modification';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Couriel';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nom';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Limite (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Dernire modification';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Actif';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Ajouter un nouveau domaine';
+$PALANG['pAdminCreate_domain_domain'] = 'Domaine';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Le domaine existe deja!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Description';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliases';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = dsactiver | 0 = infini';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Comptes couriels';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = dsactiver | 0 = infini';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Limite maximum';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = dsactiver | 0 = infini';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Ajouter les aliases par defaut';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Ajouter un domaine';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Impossible d\'ajouter le domaine!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Le domaine a t ajout!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Modifier un domaine';
+$PALANG['pAdminEdit_domain_domain'] = 'Domaine';
+$PALANG['pAdminEdit_domain_description'] = 'Description';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliases';
+$PALANG['pAdminCEdit_domain_aliases_text'] = '-1 = dsactiver | 0 = infini';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Comptes couriels';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = dsactiver | 0 = infini';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Limite maximum';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = dsactiver | 0 = infini';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Actif';
+$PALANG['pAdminEdit_domain_button'] = 'Modifier un domaine';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Impossible de moficier le domain!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Ajouter un nouveau administrateur de domaine';
+$PALANG['pAdminCreate_admin_username'] = 'Administrateur';
+$PALANG['pAdminCreate_admin_username_text'] = 'Couriel';
+$PALANG['pAdminCreate_admin_username_text_error1'] = '<span class="error_msg">Ce n\'est pas un couriel administrateur valide!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = '<span class="error_msg">Cet administrateur existe dj ou n\'est pas valide</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Mot de passe';
+$PALANG['pAdminCreate_admin_password2'] = 'Mot de passe (confirmation)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Le mot de passe fournit ne correspond pas<br> ou est vide!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Ajouter un administrateur';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Impossible d\'ajouter un administrateur!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'L\'administrateur a t ajout!';
+$PALANG['pAdminCreate_admin_address'] = 'Domaine';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Modifier un domaine';
+$PALANG['pAdminEdit_admin_username'] = 'Administrateur';
+$PALANG['pAdminEdit_admin_password'] = 'Mot de passe';
+$PALANG['pAdminEdit_admin_password2'] = 'Mot de passe(confirmation)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Le mot de passe fournit ne correspond pas<br /> ou est vide!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Actif';
+$PALANG['pAdminEdit_admin_button'] = 'Editer un administrater';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Impossible de modifier l\'administrateur!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'L\'administrateur a t ajout!';
+
+$PALANG['pUsersLogin_welcome'] = 'Entrer votre couriel pour modifier votre mot de passe et vos transferts.';
+$PALANG['pUsersLogin_username'] = 'Entrer(couriel)';
+$PALANG['pUsersLogin_password'] = 'Mot de passe';
+$PALANG['pUsersLogin_button'] = 'Entrer';
+$PALANG['pUsersLogin_username_incorrect'] = 'Votre couriel est invalide. Assurez-vous d\'avoir le bon couriel!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Votre mot de passe est invalide!';
+
+$PALANG['pUsersMenu_vacation'] = 'Rponse Automatique';
+$PALANG['pUsersMenu_edit_alias'] = 'Modifier votre transfert';
+$PALANG['pUsersMenu_password'] = 'Modifier votre mot de passe';
+
+$PALANG['pUsersMain_vacation'] = 'Configurer votre rponse automatique(auto-reply).';
+$PALANG['pUsersMain_edit_alias'] = 'Modifier vos transferts de couriel.';
+$PALANG['pUsersMain_password'] = 'Changer votre mot de passe.';
+
+$PALANG['pUsersVacation_welcome'] = 'Rponse Automatique.';
+$PALANG['pUsersVacation_welcome_text'] = 'Votre reponse automatique est deja configuree!';
+$PALANG['pUsersVacation_subject'] = 'Sujet';
+$PALANG['pUsersVacation_subject_text'] = 'En dehors du bureau';
+$PALANG['pUsersVacation_body'] = 'Message';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Je serais absent(e) de <date> jusqu\'au <date>.
+Pour urgence communiquez avec mon collegue <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Absence';
+$PALANG['pUsersVacation_button_back'] = 'De retour';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Impossible de mettre jour vos configuration pour votre reponse automatique!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Votre reponse automatique a ete enlevee!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/hu.lang b/languages/hu.lang
new file mode 100644
index 0000000..f7ddf26
--- /dev/null
+++ b/languages/hu.lang
@@ -0,0 +1,298 @@
+<?php
+//
+// Language file Hungarian
+// by Christian Hamar <krics at linuxforum dot hu>
+//
+$PALANG['YES'] = 'IGEN';
+$PALANG['NO'] = 'NEM';
+$PALANG['edit'] = 'szerkeszt';
+$PALANG['del'] = 'trl';
+$PALANG['confirm'] = 'Biztos vagy benne hogy trld ezt?\n';
+$PALANG['confirm_domain'] = 'Biztos hogy trlni akarod az sszes bejegyzst ez all a domain all? Nem lehet visszahozni ksbb!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Mail admins login here to administrate your domain.';
+$PALANG['pLogin_username'] = 'Login (email)';
+$PALANG['pLogin_password'] = 'Jelsz';
+$PALANG['pLogin_button'] = 'Bejelentkezs';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">A bejelentkezs rvnytelen. Biztos, hogy a sajt email cmeddel akarsz belpni?!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Nem j a jelsz!</span>';
+$PALANG['pLogin_login_users'] = 'A felhasznlk kattintsanak ide a felhasznli fellethez.';
+
+$PALANG['pMenu_overview'] = 'ttekints';
+$PALANG['pMenu_create_alias'] = 'Alias felvtele';
+$PALANG['pMenu_create_mailbox'] = 'Felhasznl felvtele';
+$PALANG['pMenu_sendmail'] = 'Email kldse';
+$PALANG['pMenu_password'] = 'Jelsz';
+$PALANG['pMenu_viewlog'] = 'Napl megtekintse';
+$PALANG['pMenu_logout'] = 'Kilps';
+
+$PALANG['pMain_welcome'] = 'dvzllek a Postfix Adminisztrcis rendszerben!';
+$PALANG['pMain_overview'] = 'Listzd az alias-okat s a postafikokat. Innen tudod ket trlni / mdostani.';
+$PALANG['pMain_create_alias'] = 'j alias ksztse az adott domainhez.';
+$PALANG['pMain_create_mailbox'] = 'j felhasznl felvtele az adott domainhez.';
+$PALANG['pMain_sendmail'] = 'Kldjn a rendszer emailt minden egyes j felhasznlnak.';
+$PALANG['pMain_password'] = 'Admin jelsz megvltoztatsa.';
+$PALANG['pMain_viewlog'] = 'Naplfjlok megtekintse.';
+$PALANG['pMain_logout'] = 'Kijelentkezs a rendszerbl';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Gyernk';
+$PALANG['pOverview_welcome'] = 'ttekints: ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias-ok';
+$PALANG['pOverview_alias_mailbox_count'] = 'Postafikok';
+$PALANG['pOverview_alias_address'] = 'Honnan';
+$PALANG['pOverview_alias_goto'] = 'Hova';
+$PALANG['pOverview_alias_modified'] = 'Utols mdosts';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Nv';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Utols mdosts';
+$PALANG['pOverview_mailbox_active'] = 'Aktv';
+
+$PALANG['pOverview_get_domain'] = 'Domain';
+$PALANG['pOverview_get_aliases'] = 'Alias-ok';
+$PALANG['pOverview_get_mailboxes'] = 'Postafikok';
+$PALANG['pOverview_get_quota'] = 'Postafik Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Utols mdosts';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Nem sikerlt trlni a bejegyzst ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Ehhez a domainhez nincs jogosultsgod ';
+
+$PALANG['pCreate_alias_welcome'] = 'j alias ksztse az adott domainhez';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Az ALIAS rvnytelen!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Ez az email cm mr ltezik, krlek vlassz msikat!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Elrted a maximlis alias limitet!</span>';
+$PALANG['pCreate_alias_goto'] = 'Hova';
+$PALANG['pCreate_alias_button'] = 'Alias felvtele';
+$PALANG['pCreate_alias_goto_text'] = 'Ahova a levlnek mennie kell.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Ahova a levlnek mennie kell.<br /><span class="error_msg">rvnytelen a HOVA mez!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Nemsikerlt hozzadni az aliast az alias tblhoz!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Az aliast felvettk az alias tblba!';
+$PALANG['pCreate_alias_catchall_text'] = 'A catch-all (*@valami.hu) belltshoz hasznlj "*" -ot az alias meznl.<br />A domain-domain kztti tirnytshoz hasznld a "*@akarmi.hu" cmet.';
+
+$PALANG['pEdit_alias_welcome'] = 'Alias szerkesztse a domainhez.<br />Soronknt egy.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Nemsikerlt megtallni az aliast!</span>';
+$PALANG['pEdit_alias_goto'] = 'Hova';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Nem rtl semmit a \'Hova\' mezbe</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Az email cm amit bertl rvnytelen: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Ehhez a domainhez nincs jogosultsgod: ';
+$PALANG['pEdit_alias_button'] = 'Alias szerkesztse';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Nemsikerlt mdostani az Aliast!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'j postafik ltrehozsa az adott domainhez.';
+$PALANG['pCreate_mailbox_username'] = 'Felhasznlnv';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">rvnytelen EMAIL !</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Ez az email cm mr ltezik, krlek vlassz msikat!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Elrted a maximlis postafik szmot!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Jelsz';
+$PALANG['pCreate_mailbox_password2'] = 'Jelsz (mgegyszer)';
+$PALANG['pCreate_mailbox_password_text'] = 'Jelsz a POP3/IMAP -hoz';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Jelsz a POP3/IMAP -hoz<br /><span class="error_msg">A jelszavak amiket megadtl nem egyeznek!<br />Vagy resek!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nv';
+$PALANG['pCreate_mailbox_name_text'] = 'Teljes nv';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Tl magas quota rtket adtl meg!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktv';
+$PALANG['pCreate_mailbox_mail'] = 'Postafik ltrehozsa';
+$PALANG['pCreate_mailbox_button'] = 'Postafik ltrehozsa';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Nemsikerlt a postafikot felvenni a mailbox adatbzis tblba!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'A postafikot sikeresen felvettk a mailbox adatbzis tblba!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Postafik szerkesztse az adott domainhez.';
+$PALANG['pEdit_mailbox_username'] = 'Felhasznlnv';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Nem sikerlt megtallni a postafikot!</span>';
+$PALANG['pEdit_mailbox_password'] = 'j jelsz';
+$PALANG['pEdit_mailbox_password2'] = 'j jelsz (mgegyszer)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">A bert jelszavak nem egyeznek!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nv';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">A megadott quota rtk tl magas!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Ehhez a domainhez nincs jogosultsgod: ';
+$PALANG['pEdit_mailbox_button'] = 'Postafik szerkesztse';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Nemsikerlt megvltoztatni a jelszt!</span>';
+
+$PALANG['pPassword_welcome'] = 'Bejelentkezsi jelsz megvltoztatsa';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">A LOGIN amit megadtl egyetlen postafikkal sem egyezik!</span>';
+$PALANG['pPassword_password_current'] = 'Rgi jelsz';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Nem adtad meg a rgi jelszavadat!</span>';
+$PALANG['pPassword_password'] = 'j jelsz';
+$PALANG['pPassword_password2'] = 'j jelsz (mgegyszer)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">A jelszavak amiket megadtl nem egyeznek!<br />Vagy resek!</span>';
+$PALANG['pPassword_button'] = 'Jelsz megvltoztatsa';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Nemsikerlt megvltoztatni a jelszavad!</span>';
+$PALANG['pPassword_result_succes'] = 'A jelszavad megvltozott!';
+
+$PALANG['pViewlog_welcome'] = 'Az utols 10 esemny megtekintse: ';
+$PALANG['pViewlog_timestamp'] = 'Idblyeg';
+$PALANG['pViewlog_username'] = 'Admin';
+$PALANG['pViewlog_domain'] = 'Domain';
+$PALANG['pViewlog_action'] = 'Akci';
+$PALANG['pViewlog_data'] = 'Adat';
+
+$PALANG['pViewlog_button'] = 'Gyernk';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Nemsikerlt megtallni a napl fjlokat!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Email kldse.';
+$PALANG['pSendmail_admin'] = 'Felad';
+$PALANG['pSendmail_to'] = 'Cmzett';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Ez egy res, vagy nem megfelel email cm!</span>';
+$PALANG['pSendmail_subject'] = 'Trgy';
+$PALANG['pSendmail_subject_text'] = 'Postafikja sikeresen elkszlt!';
+$PALANG['pSendmail_body'] = 'zenet';
+$PALANG['pSendmail_button'] = 'zenet kldse';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Postafik ltrehozsa sikertelen!</span>';
+$PALANG['pSendmail_result_succes'] = 'A postafik sikeresen elkszlt!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Admin Lista';
+$PALANG['pAdminMenu_list_domain'] = 'Domain Lista';
+$PALANG['pAdminMenu_list_virtual'] = 'Postafik Lista';
+$PALANG['pAdminMenu_viewlog'] = 'Napl';
+$PALANG['pAdminMenu_backup'] = 'Adatbzis ments';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domain Adminok';
+$PALANG['pAdminMenu_create_admin'] = 'j Admin';
+$PALANG['pAdminMenu_create_domain'] = 'j Domain';
+$PALANG['pAdminMenu_create_alias'] = 'j Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'j Postafik';
+
+$PALANG['pAdminList_admin_domain'] = 'Domain';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domain-ek';
+$PALANG['pAdminList_admin_modified'] = 'Utols mdosts';
+$PALANG['pAdminList_admin_active'] = 'Aktv';
+
+$PALANG['pAdminList_domain_domain'] = 'Domain';
+$PALANG['pAdminList_domain_description'] = 'Lers';
+$PALANG['pAdminList_domain_aliases'] = 'Alias-ok';
+$PALANG['pAdminList_domain_mailboxes'] = 'Postafikok';
+$PALANG['pAdminList_domain_maxquota'] = 'Max Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Utols mdosts';
+$PALANG['pAdminList_domain_active'] = 'Aktv';
+
+$PALANG['pAdminList_virtual_button'] = 'Tovbb';
+$PALANG['pAdminList_virtual_welcome'] = 'ttekints: ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias-ok';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Postafikok';
+$PALANG['pAdminList_virtual_alias_address'] = 'Honnan';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Hova';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Utols mdosts';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nv';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Utols mdosts';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktv';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'j domain felvtele';
+$PALANG['pAdminCreate_domain_domain'] = 'Domain';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">A domain mr ltezik!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Lers';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias-ok';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Postafikok';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Alaprtelmezett alias-ok hozzadsa';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Domain felvtele';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">A domain felvtele sikertelen!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'A domain-t felvettk az adatbzisba!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Domain szerkesztse';
+$PALANG['pAdminEdit_domain_domain'] = 'Domain';
+$PALANG['pAdminEdit_domain_description'] = 'Lers';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias-ok';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Postafikok';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = kikapcsol | 0 = vgtelen';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktv';
+$PALANG['pAdminEdit_domain_button'] = 'Domain szerkesztse';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">A domain mdostsa sikertelen!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'j domain admin felvtele';
+$PALANG['pAdminCreate_admin_username'] = 'Admin';
+$PALANG['pAdminCreate_admin_username_text'] = 'Email cm';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email cm<br /><span class="error_msg">Az Admin nem vals email cm!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email cm<br /><span class="error_msg">Az Admin mr ltezik, vagy nem vals a cm!</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Jelsz';
+$PALANG['pAdminCreate_admin_password2'] = 'Jelsz (mgegyszer)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">A bert jelszavak nem egyeznek!<br />Vagy resek!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Admin felvtele';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Nemsikerlt az Admint felvenni!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Az Admin sikeresen bekerlt az adatbzisba!';
+$PALANG['pAdminCreate_admin_address'] = 'Domain';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Domain admin szerkesztse';
+$PALANG['pAdminEdit_admin_username'] = 'Admin';
+$PALANG['pAdminEdit_admin_password'] = 'Jelsz';
+$PALANG['pAdminEdit_admin_password2'] = 'Jelsz (mgegyszer)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">A bert jelszavak nem egyeznek!<br />Vagy resek!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktv';
+$PALANG['pAdminEdit_admin_button'] = 'Admin szerkesztse';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Nemsikerlt mdostani az admint!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Az Admin mdostsa megtrtnt!';
+
+$PALANG['pUsersLogin_welcome'] = 'A felhasznlk ezen a felleten tudnak bejelentkezni a levelez rendszerbe a sajt<br>felhasznl nevkkel (azaz email cmkkel) s itt tudjk megvltoztatni az aliasokat, stb..';
+$PALANG['pUsersLogin_username'] = 'Login (email)';
+$PALANG['pUsersLogin_password'] = 'Jelsz';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Nem megfelel a Login (email) cm! Krlek pontostsd!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Nem megfelel a jelszavad!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automatikus Vlasz';
+$PALANG['pUsersMenu_edit_alias'] = 'tirnyts belltsa';
+$PALANG['pUsersMenu_password'] = 'Jelsz megvltoztatsa';
+
+$PALANG['pUsersMain_vacation'] = 'Itt lehet belltani az automatikus vlasz levl szvegt, ha az ember tvol van.';
+$PALANG['pUsersMain_edit_alias'] = 'Email tirnyts belltsa.';
+$PALANG['pUsersMain_password'] = 'Jelenlegi jelsz megvltoztatsa.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automatikus vlasz.';
+$PALANG['pUsersVacation_welcome_text'] = 'Mr van be lltva automatikus vlasz !';
+$PALANG['pUsersVacation_subject'] = 'Trgy';
+$PALANG['pUsersVacation_subject_text'] = 'Sajnlom, de jelenleg nem vagyok email kzelben!';
+$PALANG['pUsersVacation_body'] = 'zenet';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+dvzlm. Sajnlom de jelenleg nem vagyok email kzelben.
+Ettl - Eddig.
+
+Ez egy automatikus zenet.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Automatikus vlaszads bekapcsolsa';
+$PALANG['pUsersVacation_button_back'] = 'Automatikus vlaszads kikapcsolsa';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nem sikerlt megvltoztatni az automatikus vlasz konfigurcidat!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Az automatikus vlaszads sikeresen kikapcsolva!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'postafik ltrehozsa';
+$PALANG['pCreate_dbLog_createalias'] = 'alias ltrehozsa';
+$PALANG['pDelete_dbLog_deletealias'] = 'alias trlse';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'postafik trlse';
+
+$PALANG['pEdit_dbLog_editactive'] = 'aktv sttusz megvltoztatsa';
+$PALANG['pEdit_dbLog_editalias'] = 'alias szerkesztse';
+$PALANG['pEdit_dbLog_editmailbox'] = 'postafik szerkesztse';
+
+$PALANG['pSearch_welcome'] = 'Keresend kulcssz: ';
+?>
+
diff --git a/languages/index.php b/languages/index.php
new file mode 100644
index 0000000..673ed9e
--- /dev/null
+++ b/languages/index.php
@@ -0,0 +1,22 @@
+<?php
+//
+// Postfix Admin
+// by Mischa Peters <mischa at high5 dot net>
+// Copyright (c) 2002 - 2005 High5!
+// License Info: http://www.postfixadmin.com/?file=LICENSE.TXT
+//
+// File: index.php
+//
+// Template File: -none-
+//
+// Template Variables:
+//
+// -none-
+//
+// Form POST \ GET Variables:
+//
+// -none-
+//
+header ("Location: ../login.php");
+exit;
+?>
diff --git a/languages/is.lang b/languages/is.lang
new file mode 100644
index 0000000..1478df6
--- /dev/null
+++ b/languages/is.lang
@@ -0,0 +1,294 @@
+<?php
+//
+// Language file Icelandic
+// by Gestur
+//
+$PALANG['YES'] = 'J';
+$PALANG['NO'] = 'NEI';
+$PALANG['edit'] = 'skrifa ';
+$PALANG['del'] = 'eya';
+$PALANG['confirm'] = 'Ertu viss um a viljir eya essu?\n';
+$PALANG['confirm_domain'] = 'Ertu viss um a viljir eya llu sem tengist essu lni? a er ekki hgt a bakka me agerina!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Pst kerfisstjri tengist hr til a vihalda pstkerfi lnsins ins.';
+$PALANG['pLogin_username'] = 'Aukenni(email)';
+$PALANG['pLogin_password'] = 'Lykilor';
+$PALANG['pLogin_button'] = 'Tengjast';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Aukenni itt er rangt, ath hvort hafir slegi a rangt inn og prfau aftur, ath notau fullt email til a tengjas!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Lykilori var rangt!</span>';
+$PALANG['pLogin_login_users'] = 'Notendur smelli hr til a opna almennt notendavimt.';
+
+$PALANG['pMenu_overview'] = 'Yfirlit';
+$PALANG['pMenu_create_alias'] = 'Bta vi alias';
+$PALANG['pMenu_create_mailbox'] = 'Bta vi psthlf';
+$PALANG['pMenu_sendmail'] = 'Senda Email';
+$PALANG['pMenu_password'] = 'Lykilor';
+$PALANG['pMenu_viewlog'] = 'Skoa Log';
+$PALANG['pMenu_logout'] = 'Aftengjast';
+
+$PALANG['pMain_welcome'] = 'Velkomin Postfix Kerfistlin!';
+$PALANG['pMain_overview'] = 'Lista t aliasa og pstfng. getur breytt / eytt og laga hrna.';
+$PALANG['pMain_create_alias'] = 'Stofna njan alias fyrir lni itt.';
+$PALANG['pMain_create_mailbox'] = 'Stofna ntt pstfang fyrir lni itt.';
+$PALANG['pMain_sendmail'] = 'Senda tlvupst til eins af nju psthlfin.';
+$PALANG['pMain_password'] = 'Breyta lykilorinu fyrir kerfisstjra aganginn.';
+$PALANG['pMain_viewlog'] = 'Skoa log skrrnar.';
+$PALANG['pMain_logout'] = 'Aftengjast fr kerfinu';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'fram';
+$PALANG['pOverview_welcome'] = 'Yfirlit fyrir ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasar';
+$PALANG['pOverview_alias_mailbox_count'] = 'Psthlf';
+$PALANG['pOverview_alias_address'] = 'Pstur fyrir';
+$PALANG['pOverview_alias_goto'] = 'framsendist til';
+$PALANG['pOverview_alias_modified'] = 'Sast breytt';
+$PALANG['pOverview_mailbox_username'] = 'Pstfang';
+$PALANG['pOverview_mailbox_name'] = 'Nafn notanda';
+$PALANG['pOverview_mailbox_quota'] = 'Heimild kvta (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Sast breytt';
+$PALANG['pOverview_mailbox_active'] = 'Virkur';
+
+$PALANG['pOverview_get_domain'] = 'Ln';
+$PALANG['pOverview_get_aliases'] = 'Aliasar';
+$PALANG['pOverview_get_mailboxes'] = 'Psthlf';
+$PALANG['pOverview_get_quota'] = 'Psthlfs kvti (MB)';
+$PALANG['pOverview_get_modified'] = 'Sast breytt';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Get ekki eytt frslunni ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">etta er ekki itt ln ';
+
+$PALANG['pCreate_alias_welcome'] = 'tba njan alias fyrir itt ln.'; $PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Aliasinn er ekki lagi!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">etta psthlf er n egar til, veldu anna!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg"> hefur stofna ann fjlda psthlfa sem hefur heimild til!</span>';
+$PALANG['pCreate_alias_goto'] = 'Til';
+$PALANG['pCreate_alias_button'] = 'Bta vi alias';
+$PALANG['pCreate_alias_goto_text'] = 'anga sem psturinn a sendast.';
+$PALANG['pCreate_alias_goto_text_error'] = 'anga sem psturinn arf a sendast.<br /><span class="error_msg">Til lnan er ekki gild!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Get ekki btt vi alias alias tflu!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Nr alias hefur veri btt vi alias tfluna!';
+$PALANG['pCreate_alias_catchall_text'] = 'Til a tba alias fyrir ll netfng lninu, geturu tbi "*" alias.<br />Til a framsenda me alias anna ln ea psthlf, notau "*@domain.tld til.';
+
+$PALANG['pEdit_alias_welcome'] = 'Breyta alias lninu.<br />Ein frsla einu.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Get ekki fundi aliasinn!</span>';
+$PALANG['pEdit_alias_goto'] = 'To';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg"> gafst ekki upp neitt Til</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Psthlfi sem reynir a nota er ekki til: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg"> tt ekki etta ln: ';
+$PALANG['pEdit_alias_button'] = 'Breyta Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Get ekki breytt alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Create a new local mailbox for your domain.';
+$PALANG['pCreate_mailbox_username'] = 'notandanafn';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Netfangi er ekki til!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">etta psthlf er til negar, veldu r anna!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg"> hefur stofna au pstholf sem hefur heimild til!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Lykilor';
+$PALANG['pCreate_mailbox_password2'] = 'Lykilor (aftur)';
+$PALANG['pCreate_mailbox_password_text'] = 'Lykilor til a opna POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Lykilor fyrir POP3/IMAP<br /><span class="error_msg">Lykilorin sem skrifair inn passa ekki saman!<br />Ea gafst ekkert lykilor upp!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nafn';
+$PALANG['pCreate_mailbox_name_text'] = 'Fullt nafn';
+$PALANG['pCreate_mailbox_quota'] = 'kvti';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Kvtinn sem skilgreindir er meiri en heimild n gefur!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Virkur';
+$PALANG['pCreate_mailbox_mail'] = 'Stofna psthlf';
+$PALANG['pCreate_mailbox_button'] = 'bta vi psthlfi';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Get ekki btt vi psthlfi mailbox tfluna!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Psthlfinu hefur veri btt vi mailbox tfluna!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Breyta psthlfi i lninu nu.';
+$PALANG['pEdit_mailbox_username'] = 'Aukenni';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Finn ekki psthlfi!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Ntt lykilor';
+$PALANG['pEdit_mailbox_password2'] = 'Nja lykilori aftur';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Lykilori sem skrifair inn passar ekki saman!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nafn';
+$PALANG['pEdit_mailbox_quota'] = 'kvti';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Kvtinn sem skilgreindir er of hr fyrir heimildina na!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">etta ln er ekki num vegum: ';
+$PALANG['pEdit_mailbox_button'] = 'Breyta psthlfi';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Get ekki breytt lykilorinu!</span>';
+
+$PALANG['pPassword_welcome'] = 'Breyta aukenninu nu til a tengjast.';
+$PALANG['pPassword_admin'] = 'Tengjast';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Aukenni sem gafst upp, passar ekki vi psthlfi!</span>';
+$PALANG['pPassword_password_current'] = 'gamla lykilori';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg"> gafst ekki upp nverandi lykilor itt!</span>';
+$PALANG['pPassword_password'] = 'Ntt lykilor';
+$PALANG['pPassword_password2'] = 'Ntt lykilor (aftur)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Lykilorin sem gafst upp passa ekki saman!<br />Ea gefur upp tmt lykilor!</span>';
+$PALANG['pPassword_button'] = 'Breyta lykilori';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Get ekki breytt lykilori!</span>';
+$PALANG['pPassword_result_succes'] = 'Lykilorinu hefur veri breytt!';
+
+$PALANG['pViewlog_welcome'] = 'Skoa sustu 10 agerir fyrir ';
+$PALANG['pViewlog_timestamp'] = 'Tmi';
+$PALANG['pViewlog_username'] = 'kerfisstjri';
+$PALANG['pViewlog_domain'] = 'ln';
+$PALANG['pViewlog_action'] = 'ager';
+$PALANG['pViewlog_data'] = 'ggn';
+
+$PALANG['pViewlog_button'] = 'fram';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Get ekki fundi log skrningu!</span>';
+
+$PALANG['pSendmail_welcome'] = 'sendu tlvupst.';
+$PALANG['pSendmail_admin'] = 'fr';
+$PALANG['pSendmail_to'] = 'til';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">til er tmt ea ekki uppgefi gilt netfang!</span>';
+$PALANG['pSendmail_subject'] = 'Efni brfs';
+$PALANG['pSendmail_subject_text'] = 'Velkomin';
+$PALANG['pSendmail_body'] = 'Meginml';
+$PALANG['pSendmail_button'] = 'Senda skilabo';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Get ekki bi til ntt psthlf!</span>';
+$PALANG['pSendmail_result_succes'] = 'Psthlfi hefur veri stofna!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Kerfisstjralisti';
+$PALANG['pAdminMenu_list_domain'] = 'Lnalisti';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual Listi';
+$PALANG['pAdminMenu_viewlog'] = 'Skoa Log';
+$PALANG['pAdminMenu_backup'] = 'Afritun';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Ln kerfisstjrar';
+$PALANG['pAdminMenu_create_admin'] = 'Nr kerfisstjri';
+$PALANG['pAdminMenu_create_domain'] = 'Ntt ln';
+$PALANG['pAdminMenu_create_alias'] = 'Bta vi alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Bta vi psthlfi';
+
+$PALANG['pAdminList_admin_domain'] = 'Ln';
+$PALANG['pAdminList_admin_username'] = 'Notandi';
+$PALANG['pAdminList_admin_count'] = 'Ln';
+$PALANG['pAdminList_admin_modified'] = 'Sast breytt';
+$PALANG['pAdminList_admin_active'] = 'Virkt';
+
+$PALANG['pAdminList_domain_domain'] = 'Ln';
+$PALANG['pAdminList_domain_description'] = 'Lsing';
+$PALANG['pAdminList_domain_aliases'] = 'Aliasar';
+$PALANG['pAdminList_domain_mailboxes'] = 'Pstbox';
+$PALANG['pAdminList_domain_maxquota'] = 'Hm. kvti (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Sast breytt';
+$PALANG['pAdminList_domain_active'] = 'Virkt';
+
+$PALANG['pAdminList_virtual_button'] = 'fram';
+$PALANG['pAdminList_virtual_welcome'] = 'Yfirlit fyrir ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliasar';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Pstbox';
+$PALANG['pAdminList_virtual_alias_address'] = 'Fr';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Til';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Sast breytt';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nafn';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kvti (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Sast breytt';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Virkt';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Bta vi lni';
+$PALANG['pAdminCreate_domain_domain'] = 'Ln';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Lni er til n egar!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Lsing';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliasar';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = virkt | 0 = takmarka';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Pstbox';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = virkt | 0 = takmarka';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Hmarks kvti';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = virkt | 0 = takmarka';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Setja sjlfgefinn pstalias';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Bta vi lni';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Get ekki btt vi lni!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Ln hefur veri btt inn!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Breyta lni';
+$PALANG['pAdminEdit_domain_domain'] = 'Ln';
+$PALANG['pAdminEdit_domain_description'] = 'Lsing';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliasar';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = virkt | 0 = takmarka';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Pstbox';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = virkt | 0 = takmarka';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Hmarks kvti';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = virkt | 0 = takmarka';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Virkt';
+$PALANG['pAdminEdit_domain_button'] = 'Breyta lni';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Get ekki breytt lni!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Bta nju lni vi';
+$PALANG['pAdminCreate_admin_username'] = 'Kerfisstjri';
+$PALANG['pAdminCreate_admin_username_text'] = 'Pstfang';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Pstfang<br /><span class="error_msg">Kerfisstjri er ekki rtt pstfang!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Pstfang<br /><span class="error_msg">Kerfisstjri er til n egar ea er ekki leyfilegt</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Lykilor';
+$PALANG['pAdminCreate_admin_password2'] = 'Lykilor (aftur)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Lykilori sem gafst upp passar ekki!<br />Ea var tmt!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Bta vi kerfisstjra';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Get ekki btt vi kerfisstjra!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Kerfisstjrinn hefur veri skrur!';
+$PALANG['pAdminCreate_admin_address'] = 'Ln';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Breyta kerfisstjra lns';
+$PALANG['pAdminEdit_admin_username'] = 'Kerfisstjri';
+$PALANG['pAdminEdit_admin_password'] = 'Lykilor';
+$PALANG['pAdminEdit_admin_password2'] = 'Lykilor (aftur)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Lykilori sem gafst upp passar ekki!<br />Ea var tmt!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Virkt';
+$PALANG['pAdminEdit_admin_button'] = 'Breyta kerfisstjra';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Get ekki breytt kerfisstjra!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Kerfisstjrinn hefur veri breyttur!';
+
+$PALANG['pUsersLogin_welcome'] = 'Psthlf notenda til a tengjast svo hgt er a breyta lykilori ea alias.';
+$PALANG['pUsersLogin_username'] = 'Innskr (email)';
+$PALANG['pUsersLogin_password'] = 'Lykilor';
+$PALANG['pUsersLogin_button'] = 'Innskr';
+$PALANG['pUsersLogin_username_incorrect'] = 'Innskrning n er rng, gaktu r skugga um a tengist me rttu pstfangi (email address)!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Lykilor itt er rangt!';
+
+$PALANG['pUsersMenu_vacation'] = 'Sjlfvirk svrun';
+$PALANG['pUsersMenu_edit_alias'] = 'Breyta framsendingu';
+$PALANG['pUsersMenu_password'] = 'Breyta lykilori';
+
+$PALANG['pUsersMain_vacation'] = 'Setja "er ekki vi" skilabo sem sjlfvikt svrun psthlfi itt.';
+$PALANG['pUsersMain_edit_alias'] = 'Breyta framsendingu pstfangs. (email forward).';
+$PALANG['pUsersMain_password'] = 'Breyta nverandi lykilori.';
+
+$PALANG['pUsersVacation_welcome'] = 'sjlfvirk skilabo.';
+$PALANG['pUsersVacation_welcome_text'] = ' hefur n egar skilgreint sjlfvirk skilabo!';
+$PALANG['pUsersVacation_subject'] = 'Meginml - Subject';
+$PALANG['pUsersVacation_subject_text'] = 'Er ekki vi - Out of Office';
+$PALANG['pUsersVacation_body'] = 'Meginml';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+g er ekki vi fr <date> og til <date>. I will be away from <date> until <date>.
+Ef miki liggur vi, geturu haft samaband vi <contact person>. For urgent matters you can contact <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Ver burtu';
+$PALANG['pUsersVacation_button_back'] = 'Kem aftur';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Get ekki uppfrt sjlfvirk skilabo n!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Sjlfvirk skilabo n (svar) hefur veri fjarlgt!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/it.lang b/languages/it.lang
new file mode 100644
index 0000000..4a99930
--- /dev/null
+++ b/languages/it.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Italian
+// by Massimiliano Stucchi <max at gufi dot org>
+//
+$PALANG['YES'] = 'SI';
+$PALANG['NO'] = 'NO';
+$PALANG['edit'] = 'modifica';
+$PALANG['del'] = 'cancella';
+$PALANG['confirm'] = 'Sei sicuro di volerlo cancellare?\n';
+$PALANG['confirm_domain'] = 'Sei sicuro di voler cancellare tutti gli indirizzi di questo dominio? Questa modifica sar&agrave; permanente!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'GLi amministratori di posta devono effettuare il login qui per amministrare il proprio dominio.';
+$PALANG['pLogin_username'] = 'Nome utente (email)';
+$PALANG['pLogin_password'] = 'Password';
+$PALANG['pLogin_button'] = 'Entra';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Il tuo nome utente non &egrave; corretto. Assicurati di avere inserito il tuo indirizzo email corretto!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">La tua password non &egrave; corretta!</span>';
+$PALANG['pLogin_login_users'] = 'GLi utenti devono cliccare qui per entrare nella propria sezione.';
+
+$PALANG['pMenu_overview'] = 'Resoconto';
+$PALANG['pMenu_create_alias'] = 'Aggiungi Alias';
+$PALANG['pMenu_create_mailbox'] = 'Aggiungi casella di posta';
+$PALANG['pMenu_sendmail'] = 'Spedisci Email';
+$PALANG['pMenu_password'] = 'Password';
+$PALANG['pMenu_viewlog'] = 'Vedi Log';
+$PALANG['pMenu_logout'] = 'Esci';
+
+$PALANG['pMain_welcome'] = 'Benvenuti a Postfix Admin!';
+$PALANG['pMain_overview'] = 'Elenco dei tuoi alias e delle caselle di posta. Puoi modificarli / aggiungerli da qui.';
+$PALANG['pMain_create_alias'] = 'Crea nuovi alias per il tuo dominio.';
+$PALANG['pMain_create_mailbox'] = 'Crea una nuova casella di posta per il tuo dominio.';
+$PALANG['pMain_sendmail'] = 'Spedisci una email ad una delle nuove casella di posta che hai creato.';
+$PALANG['pMain_password'] = 'Cambia la password per il tuo account di amministratore.';
+$PALANG['pMain_viewlog'] = 'Guarda i files di log.';
+$PALANG['pMain_logout'] = 'Esci dal sistema';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Vai';
+$PALANG['pOverview_welcome'] = 'Resoconto per ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias';
+$PALANG['pOverview_alias_mailbox_count'] = 'Caselle di posta';
+$PALANG['pOverview_alias_address'] = 'Da';
+$PALANG['pOverview_alias_goto'] = 'a';
+$PALANG['pOverview_alias_modified'] = 'Ultima modifica';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Nome';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Ultima modifica';
+$PALANG['pOverview_mailbox_active'] = 'Attivo';
+
+$PALANG['pOverview_get_domain'] = 'Dominio';
+$PALANG['pOverview_get_aliases'] = 'Alias';
+$PALANG['pOverview_get_mailboxes'] = 'Caselle di posta';
+$PALANG['pOverview_get_quota'] = 'Quota delle caselle di posta (MB)';
+$PALANG['pOverview_get_modified'] = 'Ultima modifica';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Impossibile cancellare ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Questo dominio non &egrave; tuo ';
+
+$PALANG['pCreate_alias_welcome'] = 'Crea un nuovo alias per il tuo dominio.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">L\' Alias non &egrave; valido!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Questo indirizzo di post esiste gi&agrave;, perfavore sceglierne uno diverso!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Hai raggiunto il tuo limite per creare alias.!</span>';
+$PALANG['pCreate_alias_goto'] = 'A';
+$PALANG['pCreate_alias_button'] = 'Aggiungi Alias';
+$PALANG['pCreate_alias_goto_text'] = 'Dove la mail deve essere spedita.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Dove l\'email deve andare.<br /><span class="error_msg">Il campo A non &egrave; valido!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Non sono riuscito ad aggiungere l\'alias alla tabella degli alias!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'L\'alias &egrave; stato aggiunto alla tabella degli alias!';
+$PALANG['pCreate_alias_catchall_text'] = 'Per creare un account universale, usare "*" come alias.<br />Per fare forwarding da dominio a dominio, usare "*@domain.tld" come campo \"a\".';
+
+$PALANG['pEdit_alias_welcome'] = 'Modifica un alias per il tuo dominio.<br />Un indirizzo per linea.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Impossibile allocare alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'A';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Non hai inserito nulla nel campo To</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">L\'indirizzo email che hai inserito non &egrave; valido : ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Questo dominio non &egrave; tuo: ';
+$PALANG['pEdit_alias_button'] = 'Modifica Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Impossibile modificare alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Crea una nuova casella di posta locale per il tuo dominio.';
+$PALANG['pCreate_mailbox_username'] = 'Nome utente';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">L\'indirizzo EMAIL non &egrave; valido!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Questo indirizzo email esiste gi&agrave;, perfavore scegline uno diverso!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Hai raggiunto il limite per creare caselle di posta!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Password';
+$PALANG['pCreate_mailbox_password2'] = 'Password (ripeti)';
+$PALANG['pCreate_mailbox_password_text'] = 'Password per POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Password per POP3/IMAP<br /><span class="error_msg">Le password che hai fornito non sono uguali!<br />O sono vuote!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nome';
+$PALANG['pCreate_mailbox_name_text'] = 'Nome completo';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La quota che hai specificato &egrave; troppo alta!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Attiva';
+$PALANG['pCreate_mailbox_mail'] = 'Crea casella di posta';
+$PALANG['pCreate_mailbox_button'] = 'Aggiungi casella di posta';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Impossibile aggiungere la casella di posta alla tabella delle caselle di posta!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'La casella di posta &egrave; stata aggiunta alla tabella!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Modifica una casella di posta per il tuo dominio.';
+$PALANG['pEdit_mailbox_username'] = 'Nome utente';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Impossibile trovare la casella di posta!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nuova Password';
+$PALANG['pEdit_mailbox_password2'] = 'Nuova Password (ripeti)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Le password che hai fornito non sono uguali!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nome';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">La quota che hai specificato &egrave; troppo alta!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Questo dominio non &egrave; tuo: ';
+$PALANG['pEdit_mailbox_button'] = 'Modifica casella di posta';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Impossibile cambiare la password!</span>';
+
+$PALANG['pPassword_welcome'] = 'Cambia la tua password per entrare.';
+$PALANG['pPassword_admin'] = 'Nome utente';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Il NOME UTENTE che hai fornito non &egrave; associato a nessuna casella di posta!</span>';
+$PALANG['pPassword_password_current'] = 'Password Corrente';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Non hai fornito una password corretta!</span>';
+$PALANG['pPassword_password'] = 'Nuova Password';
+$PALANG['pPassword_password2'] = 'Nuova Password (ripeti)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Le password che hai fornito non sono uguali!<br />O sono vuote!</span>';
+$PALANG['pPassword_button'] = 'Cambia Password';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Impossibile cambiare password!</span>';
+$PALANG['pPassword_result_succes'] = 'La tua password &egrave; stata modificata!';
+
+$PALANG['pViewlog_welcome'] = 'Vedi le ultime dieci azioni di ';
+$PALANG['pViewlog_timestamp'] = 'Orario';
+$PALANG['pViewlog_username'] = 'Amministratore';
+$PALANG['pViewlog_domain'] = 'Dominio';
+$PALANG['pViewlog_action'] = 'Azione';
+$PALANG['pViewlog_data'] = 'Dati';
+
+$PALANG['pViewlog_button'] = 'Vai';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Impossibile trovare i file di log!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Spedisci una email.';
+$PALANG['pSendmail_admin'] = 'Da';
+$PALANG['pSendmail_to'] = 'A';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Il campo \"A\" &egrave; vuoto o non &egrave; un indirizzo valido!</span>';
+$PALANG['pSendmail_subject'] = 'Oggetto';
+$PALANG['pSendmail_subject_text'] = 'Benvenuto';
+$PALANG['pSendmail_body'] = 'Corpo';
+$PALANG['pSendmail_button'] = 'Spedisci messaggio';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Impossibile creare la casella di posta!</span>';
+$PALANG['pSendmail_result_succes'] = 'La casella di posta&egrave; stata creata!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Lista degli amministratori';
+$PALANG['pAdminMenu_list_domain'] = 'Lista dei domini';
+$PALANG['pAdminMenu_list_virtual'] = 'Lista virtuale';
+$PALANG['pAdminMenu_viewlog'] = 'Vedi Log';
+$PALANG['pAdminMenu_backup'] = 'Fai Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Amministratori del dominio';
+$PALANG['pAdminMenu_create_admin'] = 'Nuovo Amministratore';
+$PALANG['pAdminMenu_create_domain'] = 'Nuovo Dominio';
+$PALANG['pAdminMenu_create_alias'] = 'Aggiungi Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Aggiungi casella di posta';
+
+$PALANG['pAdminList_admin_domain'] = 'Dominio';
+$PALANG['pAdminList_admin_username'] = 'Amministratori';
+$PALANG['pAdminList_admin_count'] = 'Domini';
+$PALANG['pAdminList_admin_modified'] = 'Ultima modifica';
+$PALANG['pAdminList_admin_active'] = 'Attivo';
+
+$PALANG['pAdminList_domain_domain'] = 'Dominio';
+$PALANG['pAdminList_domain_description'] = 'Descrizione';
+$PALANG['pAdminList_domain_aliases'] = 'Alias';
+$PALANG['pAdminList_domain_mailboxes'] = 'Caselle di posta';
+$PALANG['pAdminList_domain_maxquota'] = 'Quota massima (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Ultima modifica';
+$PALANG['pAdminList_domain_active'] = 'Attivo';
+
+$PALANG['pAdminList_virtual_button'] = 'Vai';
+$PALANG['pAdminList_virtual_welcome'] = 'Resoconto per ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Caselle di posta';
+$PALANG['pAdminList_virtual_alias_address'] = 'Da';
+$PALANG['pAdminList_virtual_alias_goto'] = 'A';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Ultima modifica';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nome';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Ultima modifica';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Acttivo';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Aggiungi nuovo dominio';
+$PALANG['pAdminCreate_domain_domain'] = 'Dominio';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Il dominio esiste di gi&agrave;!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Descri<ione';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = disabilita | 0 = illimitati';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Caselle di posta';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = disabilita | 0 = illimitate';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Quota Massima';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = disabilita | 0 = illimitata';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Aggiungi gli alias di default';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Aggiungi dominio';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Impossibile aggiungere il dominio!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Il dominio &egrave; stato aggiunto!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Modifica un domain';
+$PALANG['pAdminEdit_domain_domain'] = 'Dominio';
+$PALANG['pAdminEdit_domain_description'] = 'Descrizione';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = disabilita | 0 = illimitati';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Caselle di posta';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = disabilita | 0 = illimitate';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Quota massima';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = disabilita | 0 = illimitato';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Attivo';
+$PALANG['pAdminEdit_domain_button'] = 'Modifica dominio';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Impossibile modificare il dominio!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Aggiungi un nuovo amministratore per il dominio';
+$PALANG['pAdminCreate_admin_username'] = 'Amministratore';
+$PALANG['pAdminCreate_admin_username_text'] = 'Indirizzo email';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email address<br /><span class="error_msg">Admin is not a valid email address!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Indirizzo Email<br /><span class="error_msg">L\'amministatore esiste di gi&agrave;, oppure non &egrave; valido</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Password';
+$PALANG['pAdminCreate_admin_password2'] = 'Password (ancora)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Le password che hai fornito non sono uguali!<br />Oppure sono vuote!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Aggiungi amministratore';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Impossibile aggiungere amministratore!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'L\'amministratore &egrave; stato aggiunto!';
+$PALANG['pAdminCreate_admin_address'] = 'Dominio';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Modifica l\'amministratore del dominio';
+$PALANG['pAdminEdit_admin_username'] = 'Amministratore';
+$PALANG['pAdminEdit_admin_password'] = 'Password';
+$PALANG['pAdminEdit_admin_password2'] = 'Password (ancora)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Le password che hai fornito non sono uguali!<br />Oppure sono vuote!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Attivo';
+$PALANG['pAdminEdit_admin_button'] = 'Modifica amministratore';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Impossibile modificare amministratore!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'L\'amministratore &egrave; stato modificato!';
+
+$PALANG['pUsersLogin_welcome'] = 'Gli utenti di caselle di posta devono entrare qui per modificare le proprie opzioni.';
+$PALANG['pUsersLogin_username'] = 'Nome utente (email)';
+$PALANG['pUsersLogin_password'] = 'Password';
+$PALANG['pUsersLogin_button'] = 'Entra';
+$PALANG['pUsersLogin_username_incorrect'] = 'Il tuo nome utente non &egrave; corretto. Assicurati di avere inserito il tuo indirizzo email!';
+$PALANG['pUsersLogin_password_incorrect'] = 'La tua password non &egrave; corretta!';
+
+$PALANG['pUsersMenu_vacation'] = 'Risposta automatica';
+$PALANG['pUsersMenu_edit_alias'] = 'Cambia il tuo inoltro';
+$PALANG['pUsersMenu_password'] = 'Cambia password';
+
+$PALANG['pUsersMain_vacation'] = 'Setta un messaggio di "Fuori ufficio" o un risponditore automatico per la tua email';
+$PALANG['pUsersMain_edit_alias'] = 'Cambia le impostazioni di inoltro della tua email.';
+$PALANG['pUsersMain_password'] = 'Cambia la tua password corrente.';
+
+$PALANG['pUsersVacation_welcome'] = 'Risposta automatica.';
+$PALANG['pUsersVacation_welcome_text'] = 'Hai gi$agrave; una risposta automatica configurata';
+$PALANG['pUsersVacation_subject'] = 'Soggetto';
+$PALANG['pUsersVacation_subject_text'] = 'Fuori dall\'ufficio';
+$PALANG['pUsersVacation_body'] = 'Corpo';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Sar&ograve; via dal <data> al <data>.
+Per problemi urgenti potete contattare <persona da contattare>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Sto andando via';
+$PALANG['pUsersVacation_button_back'] = 'Sto tornando';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Impossibile aggiornare i tuoi dettagli di away!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'La tua risposta automatica &egrave; stata tolta!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/mk.lang b/languages/mk.lang
new file mode 100644
index 0000000..c61823f
--- /dev/null
+++ b/languages/mk.lang
@@ -0,0 +1,298 @@
+<?php
+//
+// Language file Macedonian
+// by Damjan Georgiev <dame at mol dot com dot mk>
+// Encoding iso-8859-5
+//
+$PALANG['charset'] = 'iso-8859-5';
+$PALANG['YES'] = '';
+$PALANG['NO'] = '';
+$PALANG['edit'] = '';
+$PALANG['del'] = '';
+$PALANG['confirm'] = ' ?\n';
+$PALANG['confirm_domain'] = ' ? !\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = ' ( !)';
+$PALANG['pLogin_username'] = ' (email)';
+$PALANG['pLogin_password'] = '';
+$PALANG['pLogin_button'] = '';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg"> . e-mail !</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg"> !</span>';
+$PALANG['pLogin_login_users'] = ' .';
+
+$PALANG['pMenu_overview'] = '';
+$PALANG['pMenu_create_alias'] = ' ';
+$PALANG['pMenu_create_mailbox'] = ' ';
+$PALANG['pMenu_sendmail'] = ' ';
+$PALANG['pMenu_password'] = ' ';
+$PALANG['pMenu_viewlog'] = ' ';
+$PALANG['pMenu_logout'] = '';
+
+$PALANG['pMain_welcome'] = ' Postfix!';
+$PALANG['pMain_overview'] = ' . .';
+$PALANG['pMain_create_alias'] = ' .';
+$PALANG['pMain_create_mailbox'] = ' .';
+$PALANG['pMain_sendmail'] = ' .';
+$PALANG['pMain_password'] = ' .';
+$PALANG['pMain_viewlog'] = ' .';
+$PALANG['pMain_logout'] = ' ';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = '';
+$PALANG['pOverview_welcome'] = ' ';
+$PALANG['pOverview_alias_alias_count'] = '';
+$PALANG['pOverview_alias_mailbox_count'] = ' ';
+$PALANG['pOverview_alias_address'] = '';
+$PALANG['pOverview_alias_goto'] = '';
+$PALANG['pOverview_alias_modified'] = ' ';
+$PALANG['pOverview_mailbox_username'] = '';
+$PALANG['pOverview_mailbox_name'] = '';
+$PALANG['pOverview_mailbox_quota'] = ' (MB)';
+$PALANG['pOverview_mailbox_modified'] = ' ';
+$PALANG['pOverview_mailbox_active'] = '';
+
+$PALANG['pOverview_get_domain'] = '';
+$PALANG['pOverview_get_aliases'] = '';
+$PALANG['pOverview_get_mailboxes'] = ' ';
+$PALANG['pOverview_get_quota'] = ' (MB)';
+$PALANG['pOverview_get_modified'] = ' ';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg"> ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg"> ';
+
+$PALANG['pCreate_alias_welcome'] = ' .';
+$PALANG['pCreate_alias_address'] = '';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg"> . !</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_goto'] = '';
+$PALANG['pCreate_alias_button'] = ' ';
+$PALANG['pCreate_alias_goto_text'] = ' .';
+$PALANG['pCreate_alias_goto_text_error'] = ' .<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_result_succes'] = ' !';
+$PALANG['pCreate_alias_catchall_text'] = ' catch-all "*" .<br /> "*@domain.tld" .';
+
+$PALANG['pEdit_alias_welcome'] = ' .<br /> .';
+$PALANG['pEdit_alias_address'] = '';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_alias_goto'] = '';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg"> </span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_alias_button'] = ' ';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = ' .';
+$PALANG['pCreate_mailbox_username'] = ' ';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">EMAIL !</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg"> , !</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_password'] = '';
+$PALANG['pCreate_mailbox_password2'] = ' ()';
+$PALANG['pCreate_mailbox_password_text'] = ' POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = ' POP3/IMAP<br /><span class="error_msg"> !<br /> !</span>';
+$PALANG['pCreate_mailbox_name'] = '';
+$PALANG['pCreate_mailbox_name_text'] = ' ';
+$PALANG['pCreate_mailbox_quota'] = '';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_active'] = '';
+$PALANG['pCreate_mailbox_mail'] = ' ';
+$PALANG['pCreate_mailbox_button'] = ' ';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_result_succes'] = ' !';
+
+$PALANG['pEdit_mailbox_welcome'] = ' .';
+$PALANG['pEdit_mailbox_username'] = ' ';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_password'] = ' ';
+$PALANG['pEdit_mailbox_password2'] = ' ()';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_name'] = '';
+$PALANG['pEdit_mailbox_quota'] = '';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_mailbox_button'] = ' ';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pPassword_welcome'] = ' .';
+$PALANG['pPassword_admin'] = '';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg"> LOGIN !</span>';
+$PALANG['pPassword_password_current'] = ' ';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_password'] = ' ';
+$PALANG['pPassword_password2'] = ' ()';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg"> !<br /> !</span>';
+$PALANG['pPassword_button'] = ' ';
+$PALANG['pPassword_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_result_succes'] = ' !';
+
+$PALANG['pViewlog_welcome'] = ' 10 : ';
+$PALANG['pViewlog_timestamp'] = ' (Timestamp)';
+$PALANG['pViewlog_username'] = '';
+$PALANG['pViewlog_domain'] = '';
+$PALANG['pViewlog_action'] = '';
+$PALANG['pViewlog_data'] = '';
+
+$PALANG['pViewlog_button'] = '';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pSendmail_welcome'] = ' .';
+$PALANG['pSendmail_admin'] = '';
+$PALANG['pSendmail_to'] = '';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pSendmail_subject'] = '';
+$PALANG['pSendmail_subject_text'] = ' ';
+$PALANG['pSendmail_body'] = '';
+$PALANG['pSendmail_button'] = ' ';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pSendmail_result_succes'] = ' !';
+
+$PALANG['pAdminMenu_list_admin'] = ' ';
+$PALANG['pAdminMenu_list_domain'] = ' ';
+$PALANG['pAdminMenu_list_virtual'] = ' ';
+$PALANG['pAdminMenu_viewlog'] = ' ';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = ' ';
+$PALANG['pAdminMenu_create_admin'] = ' ';
+$PALANG['pAdminMenu_create_domain'] = ' ';
+$PALANG['pAdminMenu_create_alias'] = ' ';
+$PALANG['pAdminMenu_create_mailbox'] = ' ';
+
+$PALANG['pAdminList_admin_domain'] = '';
+$PALANG['pAdminList_admin_username'] = ' ';
+$PALANG['pAdminList_admin_count'] = '';
+$PALANG['pAdminList_admin_modified'] = ' ';
+$PALANG['pAdminList_admin_active'] = '';
+
+$PALANG['pAdminList_domain_domain'] = '';
+$PALANG['pAdminList_domain_description'] = '';
+$PALANG['pAdminList_domain_aliases'] = '';
+$PALANG['pAdminList_domain_mailboxes'] = ' ';
+$PALANG['pAdminList_domain_maxquota'] = ' (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = ' ';
+$PALANG['pAdminList_domain_active'] = '';
+
+$PALANG['pAdminList_virtual_button'] = '';
+$PALANG['pAdminList_virtual_welcome'] = ' ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = '';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = ' ';
+$PALANG['pAdminList_virtual_alias_address'] = '';
+$PALANG['pAdminList_virtual_alias_goto'] = '';
+$PALANG['pAdminList_virtual_alias_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_username'] = '';
+$PALANG['pAdminList_virtual_mailbox_name'] = '';
+$PALANG['pAdminList_virtual_mailbox_quota'] = ' (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_active'] = '';
+
+$PALANG['pAdminCreate_domain_welcome'] = ' ';
+$PALANG['pAdminCreate_domain_domain'] = '';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_description'] = '';
+$PALANG['pAdminCreate_domain_aliases'] = '';
+$PALANG['pAdminCreate_domain_aliases_text'] = '0 = | -1 = ';
+$PALANG['pAdminCreate_domain_mailboxes'] = ' ';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '0 = | -1 = ';
+$PALANG['pAdminCreate_domain_maxquota'] = ' ';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> 0 = | -1 = ';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = ' ';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail backup MX';
+$PALANG['pAdminCreate_domain_button'] = ' ';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = ' !';
+
+$PALANG['pAdminEdit_domain_welcome'] = ' ';
+$PALANG['pAdminEdit_domain_domain'] = '';
+$PALANG['pAdminEdit_domain_description'] = '';
+$PALANG['pAdminEdit_domain_aliases'] = '';
+$PALANG['pAdminEdit_domain_aliases_text'] = '0 = | -1 = ';
+$PALANG['pAdminEdit_domain_mailboxes'] = ' ';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '0 = | -1 = ';
+$PALANG['pAdminEdit_domain_maxquota'] = ' ';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> 0 = | -1 = ';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail backup MX';
+$PALANG['pAdminEdit_domain_active'] = '';
+$PALANG['pAdminEdit_domain_button'] = ' ';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = ' ';
+$PALANG['pAdminCreate_admin_username'] = '';
+$PALANG['pAdminCreate_admin_username_text'] = 'Email ';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email <br /><span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email <br /><span class="error_msg"> </span>';
+$PALANG['pAdminCreate_admin_password'] = '';
+$PALANG['pAdminCreate_admin_password2'] = ' ()';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg"> !<br /> !</span>';
+$PALANG['pAdminCreate_admin_button'] = ' ';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = ' !';
+$PALANG['pAdminCreate_admin_address'] = '';
+
+$PALANG['pAdminEdit_admin_welcome'] = ' ';
+$PALANG['pAdminEdit_admin_username'] = '';
+$PALANG['pAdminEdit_admin_password'] = '';
+$PALANG['pAdminEdit_admin_password2'] = ' ()';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg"> !<br /> !</span>';
+$PALANG['pAdminEdit_admin_active'] = '';
+$PALANG['pAdminEdit_admin_button'] = ' ';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = ' !';
+
+$PALANG['pUsersLogin_welcome'] = ' . ';
+$PALANG['pUsersLogin_username'] = ' (email)';
+$PALANG['pUsersLogin_password'] = '';
+$PALANG['pUsersLogin_button'] = '';
+$PALANG['pUsersLogin_username_incorrect'] = ' . email !';
+$PALANG['pUsersLogin_password_incorrect'] = ' !';
+
+$PALANG['pUsersMenu_vacation'] = ' ';
+$PALANG['pUsersMenu_edit_alias'] = ' (forward)';
+$PALANG['pUsersMenu_password'] = ' ';
+
+$PALANG['pUsersMain_vacation'] = ' .';
+$PALANG['pUsersMain_edit_alias'] = ' (email forwarding).';
+$PALANG['pUsersMain_password'] = ' .';
+
+$PALANG['pUsersVacation_welcome'] = ' .';
+$PALANG['pUsersVacation_welcome_text'] = ' !';
+$PALANG['pUsersVacation_subject'] = '';
+$PALANG['pUsersVacation_subject_text'] = '';
+$PALANG['pUsersVacation_body'] = '';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+ <date> <date>.
+ <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = '';
+$PALANG['pUsersVacation_button_back'] = ' :)';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pUsersVacation_result_succes'] = ' !';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
+
diff --git a/languages/nl.lang b/languages/nl.lang
new file mode 100644
index 0000000..36ea8d4
--- /dev/null
+++ b/languages/nl.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Dutch
+// by Mourik
+//
+$PALANG['YES'] = 'Ja';
+$PALANG['NO'] = 'Nee';
+$PALANG['edit'] = 'bewerk';
+$PALANG['del'] = 'verwijder';
+$PALANG['confirm'] = 'Weet u het zeker dat u wilt verwijderen?\n';
+$PALANG['confirm_domain'] = 'Weet u zeker dat u ALLE waardes van het domein wilt verwijderen? Dit kan niet ongedaan worden gemaakt!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Mail beheerders log hier in om uw domeinen te beheren.';
+$PALANG['pLogin_username'] = 'Login (e-mail)';
+$PALANG['pLogin_password'] = 'Wachtwoord';
+$PALANG['pLogin_button'] = 'Login';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Foutieve login. U dient in te loggen met uw e-mail adres!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Foutief wachtwoord.!</span>';
+$PALANG['pLogin_login_users'] = 'Gebruikers klik hier om in te loggen.';
+
+$PALANG['pMenu_overview'] = 'Overzicht';
+$PALANG['pMenu_create_alias'] = 'Alias toevoegen';
+$PALANG['pMenu_create_mailbox'] = 'Mailbox toevoegen';
+$PALANG['pMenu_sendmail'] = 'Verstuur E-mail';
+$PALANG['pMenu_password'] = 'Wachtwoord';
+$PALANG['pMenu_viewlog'] = 'Laat log zien';
+$PALANG['pMenu_logout'] = 'Uitloggen';
+
+$PALANG['pMain_welcome'] = 'Welkom bij Postfix Admin!';
+$PALANG['pMain_overview'] = 'Laat uw aliassen en mailboxen zien. U kunt ze vanaf hier bewerken / verwijderen.';
+$PALANG['pMain_create_alias'] = 'Maak een nieuwe alias aan voor uw domein.';
+$PALANG['pMain_create_mailbox'] = 'Maak een nieuwe mailbox aan voor uw domein.';
+$PALANG['pMain_sendmail'] = 'Verstuur een e-mail naar 1 van de nieuwe mailboxen.';
+$PALANG['pMain_password'] = 'Wijzig uw wachtwoord.';
+$PALANG['pMain_viewlog'] = 'Laat de log files zien';
+$PALANG['pMain_logout'] = 'Uitloggen';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Ga';
+$PALANG['pOverview_welcome'] = 'Overzicht voor ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasen';
+$PALANG['pOverview_alias_mailbox_count'] = 'Mailboxes';
+$PALANG['pOverview_alias_address'] = 'Van';
+$PALANG['pOverview_alias_goto'] = 'Naar';
+$PALANG['pOverview_alias_modified'] = 'Laatst Bewerkt';
+$PALANG['pOverview_mailbox_username'] = 'E-mail';
+$PALANG['pOverview_mailbox_name'] = 'Naam';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Laatst Bewerkt';
+$PALANG['pOverview_mailbox_active'] = 'Actief';
+
+$PALANG['pOverview_get_domain'] = 'Domein';
+$PALANG['pOverview_get_aliases'] = 'Aliassen';
+$PALANG['pOverview_get_mailboxes'] = 'Mailboxes';
+$PALANG['pOverview_get_quota'] = 'Mailbox Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Laatst bewerkt';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Mislukt te verwijderen ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Dit is niet uw domein ';
+
+$PALANG['pCreate_alias_welcome'] = 'Maak een nieuw alias aan voor uw domein.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">De ALIAS is niet geldig!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Dit e-mail aders bestaat al, kies aub een andere.</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">U bezit het maximum aantal aliassen.</span>';
+$PALANG['pCreate_alias_goto'] = 'Naar';
+$PALANG['pCreate_alias_button'] = 'Voeg alias toe';
+$PALANG['pCreate_alias_goto_text'] = 'Waar de e-mails naar gestuurd worden.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Waar de e-mail naar toe moet.<br /><span class="error_msg">De NAAR is niet geldig.</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Mislukt om de alias toe te voegen.</span>';
+$PALANG['pCreate_alias_result_succes'] = 'De alias is toegevoegd.';
+$PALANG['pCreate_alias_catchall_text'] = 'Om een catch-all te gebruiken, dient u een "*" (asteric) in te vullen als alias.<br />Voor domein naar domein forwarding gebruik "*@domein.tld" als naar.';
+
+$PALANG['pEdit_alias_welcome'] = 'Bewerk een alias voor uw domein.<br />Een alias per regel.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Mislukt om alias te vinden!</span>';
+$PALANG['pEdit_alias_goto'] = 'Naar';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">U heeft geen Naar opgegeven.</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Het e-mail adres wat u opgaf is niet geldig: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Dit domein is niet van u: ';
+$PALANG['pEdit_alias_button'] = 'Bewerk Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Mislukt om de alias te bewerken!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Maak een nieuw lokale mailbox voor uw domein.';
+$PALANG['pCreate_mailbox_username'] = 'Gebruikersnaam';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Het e-mail adres is niet geldig.</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Dit e-mail adres is al ingebruik. Kies aub een andere.</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">U bezit het maximum aantal mailboxen.</span>';
+$PALANG['pCreate_mailbox_password'] = 'Wachtwoord';
+$PALANG['pCreate_mailbox_password2'] = 'Wachtwoord nogmaals';
+$PALANG['pCreate_mailbox_password_text'] = 'Wachtwoord voor POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Wachtwoord voor POP3/IMAP<br /><span class="error_msg">De wachtwoorden die u opgaf komen niet overeen.<br />Of zijn leeg.</span>';
+$PALANG['pCreate_mailbox_name'] = 'Naam';
+$PALANG['pCreate_mailbox_name_text'] = 'Volledige naam';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">De quota die opgaf is te hoog.</span>';
+$PALANG['pCreate_mailbox_active'] = 'Actief';
+$PALANG['pCreate_mailbox_mail'] = 'Mailbox toevoegen';
+$PALANG['pCreate_mailbox_button'] = 'Mailbox toevoegen';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Mislukt om de mailbox toe te voegen.</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'De mailbox is toegevoegd.';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Bewerk een mailbox voor uw domein.';
+$PALANG['pEdit_mailbox_username'] = 'Gebruikersnaam';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Mislukt om mailbox te vinden!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nieuw wachtwoord';
+$PALANG['pEdit_mailbox_password2'] = 'Nieuw wachtwoord (nogmaails)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">De wachtwoorden die u opgaf komen niet overeen.</span>';
+$PALANG['pEdit_mailbox_name'] = 'Naam';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">De quota die opgaf is te hoog.</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Dit domein is niet van nu: ';
+$PALANG['pEdit_mailbox_button'] = 'Bewerk Mailbox';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Mislukt om het wachtwoorden te wijzigen.</span>';
+
+$PALANG['pPassword_welcome'] = 'Bewerk u login wachtwoord.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">De login die u opgaf komt niet overeen met een mailbox.</span>';
+$PALANG['pPassword_password_current'] = 'Huidig wachtwoord';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">U heeft uw huidige wachtwoord niet opgegeven.</span>';
+$PALANG['pPassword_password'] = 'Nieuw wachtwoord';
+$PALANG['pPassword_password2'] = 'Nieuw wachtwoord (nogmaals)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">De wachtwoorden komen niet overeen.<br />Of zijn leeg.</span>';
+$PALANG['pPassword_button'] = 'Wijzig wachtwoord';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Mislukt om uw wachtwoord te veranderen.</span>';
+$PALANG['pPassword_result_succes'] = 'Uw wachtwoord is veranderd.';
+
+$PALANG['pViewlog_welcome'] = 'Laat de laaste 10 actie\'s zien van ';
+$PALANG['pViewlog_timestamp'] = 'Tijd';
+$PALANG['pViewlog_username'] = 'Beheerder';
+$PALANG['pViewlog_domain'] = 'Domein';
+$PALANG['pViewlog_action'] = 'Actie';
+$PALANG['pViewlog_data'] = 'Datum';
+
+$PALANG['pViewlog_button'] = 'Ga';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Mislukt om de logs te vinden!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Verstuur een e-mail.';
+$PALANG['pSendmail_admin'] = 'Van';
+$PALANG['pSendmail_to'] = 'Naar';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Naar is leeg of een ongeldig adres.</span>';
+$PALANG['pSendmail_subject'] = 'Onderwerp';
+$PALANG['pSendmail_subject_text'] = 'Welkom';
+$PALANG['pSendmail_body'] = 'Inhoud';
+$PALANG['pSendmail_button'] = 'Verstuur bericht';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Mistlukt om mailbox te maken!</span>';
+$PALANG['pSendmail_result_succes'] = 'De mailbox is aangemaakt.';
+
+$PALANG['pAdminMenu_list_admin'] = 'Beheerders overzicht';
+$PALANG['pAdminMenu_list_domain'] = 'Domein overzicht';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtueel overzicht';
+$PALANG['pAdminMenu_viewlog'] = 'Laat Log zien';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domein Beheerders';
+$PALANG['pAdminMenu_create_admin'] = 'Nieuwe beheerder';
+$PALANG['pAdminMenu_create_domain'] = 'Voeg Domein toe';
+$PALANG['pAdminMenu_create_alias'] = 'Voeg Alias toe';
+$PALANG['pAdminMenu_create_mailbox'] = 'Voeg Mailbox toe';
+
+$PALANG['pAdminList_admin_domain'] = 'Domein';
+$PALANG['pAdminList_admin_username'] = 'Beheerder';
+$PALANG['pAdminList_admin_count'] = 'Domeinen';
+$PALANG['pAdminList_admin_modified'] = 'Laatst bewerkt';
+$PALANG['pAdminList_admin_active'] = 'Actief';
+
+$PALANG['pAdminList_domain_domain'] = 'Domein';
+$PALANG['pAdminList_domain_description'] = 'Omschrijving';
+$PALANG['pAdminList_domain_aliases'] = 'Aliassen';
+$PALANG['pAdminList_domain_mailboxes'] = 'Mailboxen';
+$PALANG['pAdminList_domain_maxquota'] = 'Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Laatst bewerkt';
+$PALANG['pAdminList_domain_active'] = 'Actief';
+
+$PALANG['pAdminList_virtual_button'] = 'Ga';
+$PALANG['pAdminList_virtual_welcome'] = 'Overzicht voor ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliassen';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Mailboxen';
+$PALANG['pAdminList_virtual_alias_address'] = 'Van';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Naar';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Laatst bewerkt';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-mail';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Naam';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Laatst bewerkt';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Actief';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Voeg een nieuw domein toe';
+$PALANG['pAdminCreate_domain_domain'] = 'Domein';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Het domein bestaat al.</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Omschrijving';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliassen';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = uit | 0 = onbeperkt';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Mailboxen';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = uit | 0 = onbeperkt';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = uit | 0 = onbeperkt';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Gebruik standaard aliassen';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Voeg Domein toe';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Mislukt om het domein toe te voegen.</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domein is toegevoegd!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Bewerk een domein';
+$PALANG['pAdminEdit_domain_domain'] = 'Domein';
+$PALANG['pAdminEdit_domain_description'] = 'Omschrijving';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliassen';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = uit | 0 = onbeperkt';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Mailboxen';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = uit | 0 = onbeperkt';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = uit | 0 = onbeperkt';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Actief';
+$PALANG['pAdminEdit_domain_button'] = 'Bewerk domein';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Mislukt het domein te bewerken.</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Voeg een nieuw domein beheerder toe';
+$PALANG['pAdminCreate_admin_username'] = 'Beheerder';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-mail adres';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-mail adres<br /><span class="error_msg">Beheerder is geen geldig e-mail adres!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-mail adres<br /><span class="error_msg">De beheerder bestaat al of is niet geldig</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Wachtwoord';
+$PALANG['pAdminCreate_admin_password2'] = 'Wachtwoord (nogmaals)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">De wachtwoorden die u opgaf komen niet overeen.<br />Of zijn leeg.</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Voeg beheerder toe';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Mislukt om beheerder toe te voegen!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Beheerder is toegevoegd.';
+$PALANG['pAdminCreate_admin_address'] = 'Domein';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Bewerk een domein beheerder';
+$PALANG['pAdminEdit_admin_username'] = 'Beheerder';
+$PALANG['pAdminEdit_admin_password'] = 'Wachtwoord';
+$PALANG['pAdminEdit_admin_password2'] = 'Wachtwoord (nogmaals)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">De wachtwoorden die u opgaf komen niet overeen.<br />Of zijn leeg.</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Actief';
+$PALANG['pAdminEdit_admin_button'] = 'Bewerk beheerder';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Mislukt om beheerder te bewerken</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Beheerder is bewerkt!';
+
+$PALANG['pUsersLogin_welcome'] = 'Mailbox gebruikers login om uw wachtwoord en aliassen te bewerken.';
+$PALANG['pUsersLogin_username'] = 'Login (email)';
+$PALANG['pUsersLogin_password'] = 'Wachtwoord';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Uw login is niet correct. U dient in te loggen met uw e-mail adres.';
+$PALANG['pUsersLogin_password_incorrect'] = 'Uw wachtwoord is niet correct.';
+
+$PALANG['pUsersMenu_vacation'] = 'Automatisch beantwoorden';
+$PALANG['pUsersMenu_edit_alias'] = 'Wijzig uw forward';
+$PALANG['pUsersMenu_password'] = 'Wijzig wachtwoord';
+
+$PALANG['pUsersMain_vacation'] = 'Stel een "out of office" bericht of auto-responder voor uw e-mail in.';
+$PALANG['pUsersMain_edit_alias'] = 'Wijzig uw e-mail forwarding.';
+$PALANG['pUsersMain_password'] = 'Wijzig uw huidige wachtwoord.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automatisch beantwoorden.';
+$PALANG['pUsersVacation_welcome_text'] = 'U heeft al een auto beantwoorder ingesteld.';
+$PALANG['pUsersVacation_subject'] = 'Onderwerp';
+$PALANG['pUsersVacation_subject_text'] = 'Out of Office';
+$PALANG['pUsersVacation_body'] = 'Bericht';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Ik zal afwezig zijn van <date> tot <date>.
+Voor belangrijke punten kunt u contact opnemen met <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Afwezig';
+$PALANG['pUsersVacation_button_back'] = 'Kom terug';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Mislukt om uw automatisch beantwoorder instellingen te wijzigen.</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Uw automatisch beantwoorder is verwijderd.';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/nn.lang b/languages/nn.lang
new file mode 100644
index 0000000..5355f1f
--- /dev/null
+++ b/languages/nn.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Norwegian - Nynorsk
+// by Paul Tenfjord
+//
+$PALANG['YES'] = 'JA';
+$PALANG['NO'] = 'NEI';
+$PALANG['edit'] = 'redigere';
+$PALANG['del'] = 'slette';
+$PALANG['confirm'] = 'Vil du slette dette?\n';
+$PALANG['confirm_domain'] = 'Vil du virkeleg slette alle poster og domenet?\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Postadministrator; Logg inn her for administrere ditt domene';
+$PALANG['pLogin_username'] = 'Brukernamn (e-post adressa)';
+$PALANG['pLogin_password'] = 'Passord';
+$PALANG['pLogin_button'] = 'Logg inn';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Ditt brukernamn er feil. Logg inn med e-post adressa di som brukernamn!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Passordet er feil!</span>';
+$PALANG['pLogin_login_users'] = 'Brukarar trykk her for g til brukar-seksjonen.';
+
+$PALANG['pMenu_overview'] = 'Oversikt';
+$PALANG['pMenu_create_alias'] = 'Legg til Alias';
+$PALANG['pMenu_create_mailbox'] = 'Legg til e-post konto';
+$PALANG['pMenu_sendmail'] = 'Send E-Post';
+$PALANG['pMenu_password'] = 'Passord';
+$PALANG['pMenu_viewlog'] = 'Vis logg';
+$PALANG['pMenu_logout'] = 'Logg ut';
+
+$PALANG['pMain_welcome'] = 'Velkomen Til Postfix Admin!';
+$PALANG['pMain_overview'] = 'Vis alle alias og epost konti. Her kan du redigere.';
+$PALANG['pMain_create_alias'] = 'Opprett nytt alias.';
+$PALANG['pMain_create_mailbox'] = 'Opprett ny e-post konto.';
+$PALANG['pMain_sendmail'] = 'Send e-post til ein av dei nyoppretta e-post kontoane.';
+$PALANG['pMain_password'] = 'Skift passord til din administrator konto.';
+$PALANG['pMain_viewlog'] = 'Vis logg.';
+$PALANG['pMain_logout'] = 'Logg Ut';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Vis';
+$PALANG['pOverview_welcome'] = 'Oversikt for ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias';
+$PALANG['pOverview_alias_mailbox_count'] = 'Epost kontoar';
+$PALANG['pOverview_alias_address'] = 'Fr';
+$PALANG['pOverview_alias_goto'] = 'Mottakar';
+$PALANG['pOverview_alias_modified'] = 'Sist redigert';
+$PALANG['pOverview_mailbox_username'] = 'E-post';
+$PALANG['pOverview_mailbox_name'] = 'Namn';
+$PALANG['pOverview_mailbox_quota'] = 'Kvote (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Sist redigert';
+$PALANG['pOverview_mailbox_active'] = 'Aktiv';
+
+$PALANG['pOverview_get_domain'] = 'Domene';
+$PALANG['pOverview_get_aliases'] = 'Alias';
+$PALANG['pOverview_get_mailboxes'] = 'Epost Kontoar';
+$PALANG['pOverview_get_quota'] = 'Epost-Konto Kvote (MB)';
+$PALANG['pOverview_get_modified'] = 'Sist redigert';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Kan ikkje slette';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Dette domene er ikkje ditt';
+
+$PALANG['pCreate_alias_welcome'] = 'Opprett eit nytt alias.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Aliaset er ikkje gyldig!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Denne epost adressen eksisterer allereie, velg eit anna!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Du er over grensa for antall aliaser i ditt domene!</span>';
+$PALANG['pCreate_alias_goto'] = 'Mottaker';
+$PALANG['pCreate_alias_button'] = 'Legg til Alias';
+$PALANG['pCreate_alias_goto_text'] = 'Kor skal mailen vidaresendast.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Kor skal mailen vidaresendast.<br /><span class="error_msg">Mottakar feltet er ikkje gyldig!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Klarte ikkje legge til aliaset!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Aliaset er lagt til i alias-tabellen!';
+$PALANG['pCreate_alias_catchall_text'] = 'For opprette ei "catch-all" bruk "*" som alias.<br />For domene til domene vidaresending bruk "*@domene.tld" som mottakar.';
+
+$PALANG['pEdit_alias_welcome'] = 'Rediger eit alias.<br />Ein mottakar per linje.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Finner ikkje aliaset!</span>';
+$PALANG['pEdit_alias_goto'] = 'Mottakar';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Du skreiv ikkje noko i Mottakar feltet</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">E-post adressa er ikkje gyldig: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Dette er ikkje ditt domene: ';
+$PALANG['pEdit_alias_button'] = 'Rediger Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Kan ikkje redigere Aliaset!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Opprett ein ny epostkonto.';
+$PALANG['pCreate_mailbox_username'] = 'Brukarnamn';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">E-post adressa er ikkje gyldig!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">E-post adressa eksisterer, velg ei anna!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Du er over grensa for antall e-post kontoar!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Passord';
+$PALANG['pCreate_mailbox_password2'] = 'Passord (igjen)';
+$PALANG['pCreate_mailbox_password_text'] = 'Passord for POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Passord for POP3/IMAP<br /><span class="error_msg">Passorda er ikkje like!<br />Or are empty!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Namn';
+$PALANG['pCreate_mailbox_name_text'] = 'Fornamn og etternamn';
+$PALANG['pCreate_mailbox_quota'] = 'Kvote';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Den nska kvota er for hg!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiv';
+$PALANG['pCreate_mailbox_mail'] = 'Opprett epostkonto';
+$PALANG['pCreate_mailbox_button'] = 'Opprett Alias';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Klarte ikkje legge til epost kontoen!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'E-post kontoen er oppretta!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Rediger ein epostkonto.';
+$PALANG['pEdit_mailbox_username'] = 'Brukarnamn';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Fann ikkje epostkontoen!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nytt passord';
+$PALANG['pEdit_mailbox_password2'] = 'Nytt passord (igjen)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Passorda er ikkje like!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Namn';
+$PALANG['pEdit_mailbox_quota'] = 'Kvote';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Kvota er for hg!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Dette domenet er ikkje ditt: ';
+$PALANG['pEdit_mailbox_button'] = 'Rediger Epost konto';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Klarte ikkje skifte passord</span>';
+
+$PALANG['pPassword_welcome'] = 'Endre Passord.';
+$PALANG['pPassword_admin'] = 'Brukarnamn';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Brukarnamnet finst ikkje</span>';
+$PALANG['pPassword_password_current'] = 'Eksisterande passord';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Oppgi det eksisterande passordet!</span>';
+$PALANG['pPassword_password'] = 'Nytt passord';
+$PALANG['pPassword_password2'] = 'Nytt passord (igjen)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Passorda er ikkje like!<br />Or are empty!</span>';
+$PALANG['pPassword_button'] = 'Endre Passord';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Klarte ikkje skifte passord!</span>';
+$PALANG['pPassword_result_succes'] = 'Passordet ditt er n endra!';
+
+$PALANG['pViewlog_welcome'] = 'Vis dei 10 siste handlingane ';
+$PALANG['pViewlog_timestamp'] = 'Klokkeslett';
+$PALANG['pViewlog_username'] = 'Administrator';
+$PALANG['pViewlog_domain'] = 'Domene';
+$PALANG['pViewlog_action'] = 'Handling';
+$PALANG['pViewlog_data'] = 'Data';
+
+$PALANG['pViewlog_button'] = 'Vis';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Fann ikkje loggen!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Send Epost.';
+$PALANG['pSendmail_admin'] = 'Fr';
+$PALANG['pSendmail_to'] = 'Mottakar';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">"Mottakar" feltet er tomt eller er ugyldig!</span>';
+$PALANG['pSendmail_subject'] = 'Subjekt';
+$PALANG['pSendmail_subject_text'] = 'Velkomen';
+$PALANG['pSendmail_body'] = 'Body';
+$PALANG['pSendmail_button'] = 'Send beskjed';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Klarte ikkje opprette epost-kontoen!</span>';
+$PALANG['pSendmail_result_succes'] = 'Epost kontoen er oppretta!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Administrator Liste';
+$PALANG['pAdminMenu_list_domain'] = 'Domene Liste';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtuell Liste';
+$PALANG['pAdminMenu_viewlog'] = 'Vis logg';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domene Administratorar';
+$PALANG['pAdminMenu_create_admin'] = 'Ny Administrator';
+$PALANG['pAdminMenu_create_domain'] = 'Nytt Domene';
+$PALANG['pAdminMenu_create_alias'] = 'Legg til Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Legg til EpostKonto';
+
+$PALANG['pAdminList_admin_domain'] = 'Domene';
+$PALANG['pAdminList_admin_username'] = 'Administrator';
+$PALANG['pAdminList_admin_count'] = 'Domener';
+$PALANG['pAdminList_admin_modified'] = 'Sist redigert';
+$PALANG['pAdminList_admin_active'] = 'Aktiv';
+
+$PALANG['pAdminList_domain_domain'] = 'Domene';
+$PALANG['pAdminList_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminList_domain_aliases'] = 'Alias';
+$PALANG['pAdminList_domain_mailboxes'] = 'Epost konti';
+$PALANG['pAdminList_domain_maxquota'] = 'Maks Kvota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Sist redigert';
+$PALANG['pAdminList_domain_active'] = 'Aktive';
+
+$PALANG['pAdminList_virtual_button'] = 'Vis';
+$PALANG['pAdminList_virtual_welcome'] = 'Oversikt for ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliases';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Epost konti';
+$PALANG['pAdminList_virtual_alias_address'] = 'Fr';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Til';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Sist redigert';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-post';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Namn';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kvote (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Sist redigert';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiv';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Legg til eit nytt domene';
+$PALANG['pAdminCreate_domain_domain'] = 'Domene';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Domena eksisterar!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Epost Konti';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Maks Kvote';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Legg til standard Alias';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Legg til domene';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Klarte ikkje legge til domenet!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domenet er lagt til!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Rediger domenet';
+$PALANG['pAdminEdit_domain_domain'] = 'Domene';
+$PALANG['pAdminEdit_domain_description'] = 'Beskrivelse';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Epost konti';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Maks kvote';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = deaktivere | 0 = ubegrensa';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktive';
+$PALANG['pAdminEdit_domain_button'] = 'Redigere';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Klarte ikkje oppdatere domenet!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Legg til ny domene administrator';
+$PALANG['pAdminCreate_admin_username'] = 'Administrator';
+$PALANG['pAdminCreate_admin_username_text'] = 'Epost adresse';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Email address<br /><span class="error_msg">Administrator er ikkje gyldig adresse!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email address<br /><span class="error_msg">Administratoren eksisterar eller er ikkje gyldig</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Passord';
+$PALANG['pAdminCreate_admin_password2'] = 'Passord (igjen)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Passorda er ikkje like!<br />Eller felta er tomme!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Legg til ein administrator';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Klarte ikkje legge til administratoren!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Administratoren er lagt til!';
+$PALANG['pAdminCreate_admin_address'] = 'Domene';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Rediger domene administrator';
+$PALANG['pAdminEdit_admin_username'] = 'Administrator';
+$PALANG['pAdminEdit_admin_password'] = 'Passord';
+$PALANG['pAdminEdit_admin_password2'] = 'Passord (igjen)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Passorda er ikkje like!<br />Eller felta er tomme!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiv';
+$PALANG['pAdminEdit_admin_button'] = 'Rediger Administrator';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Klarte ikkje redigere administratoren!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Administratoren er redigert/oppdatert!';
+
+$PALANG['pUsersLogin_welcome'] = 'Brukarar, logg inn for endre passord og vidaresending.';
+$PALANG['pUsersLogin_username'] = 'Brukarnamn (epost adr.)';
+$PALANG['pUsersLogin_password'] = 'Passord';
+$PALANG['pUsersLogin_button'] = 'Logg inn';
+$PALANG['pUsersLogin_username_incorrect'] = 'Feil brukarnamn! Bruk epost adressa di til logge inn!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Feil passord!';
+
+$PALANG['pUsersMenu_vacation'] = 'Automatisk Svar';
+$PALANG['pUsersMenu_edit_alias'] = 'Endre vidaresending';
+$PALANG['pUsersMenu_password'] = 'Endre Passord';
+
+$PALANG['pUsersMain_vacation'] = 'Legg til ein "ikkje tilstede" beskjed eller automatisk svar.';
+$PALANG['pUsersMain_edit_alias'] = 'Rediger vidaresending.';
+$PALANG['pUsersMain_password'] = 'Endre passord.';
+
+$PALANG['pUsersVacation_welcome'] = 'Automatisk Svar.';
+$PALANG['pUsersVacation_welcome_text'] = 'Du har allereie autosvar!';
+$PALANG['pUsersVacation_subject'] = 'Subjekt';
+$PALANG['pUsersVacation_subject_text'] = 'Ikkje tilstede';
+$PALANG['pUsersVacation_body'] = 'Body';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+I will be away from <date> until <date>.
+For urgent matters you can contact <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Ikkje tilstede';
+$PALANG['pUsersVacation_button_back'] = 'Straks tilbake';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Klarte ikkje oppdatere dine autosvar instillingar!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Ditt autosvar er fjerna';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/pl.lang b/languages/pl.lang
new file mode 100644
index 0000000..0623045
--- /dev/null
+++ b/languages/pl.lang
@@ -0,0 +1,297 @@
+<?php
+//
+// Language file Polish
+// by Jarek
+// updated by Piotr Meyer <aniou at smutek dot pl>
+// Encoding iso-8859-2
+//
+$PALANG['charset'] = 'iso-8859-2';
+$PALANG['YES'] = 'Tak';
+$PALANG['NO'] = 'Nie';
+$PALANG['edit'] = 'Edytuj';
+$PALANG['del'] = 'Usu';
+$PALANG['confirm'] = 'Jeste przekonany, e chcesz usun to?\n';
+$PALANG['confirm_domain'] = 'Czy rzeczywicie chcesz usun wszystkie wpisy dla tej domeny? To jest proces nieodwracalny!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Sekcja przeznaczona dla administratorw domen.';
+$PALANG['pLogin_username'] = 'Login (email)';
+$PALANG['pLogin_password'] = 'Haso';
+$PALANG['pLogin_button'] = 'Zaloguj';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Twj login jest niepoprawny!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Twoje haso jest niepoprawne!</span>';
+$PALANG['pLogin_login_users'] = 'Sekcja przeznaczona dla uytkownikw.';
+
+$PALANG['pMenu_overview'] = 'Dane zbiorcze';
+$PALANG['pMenu_create_alias'] = 'Dadaj alias';
+$PALANG['pMenu_create_mailbox'] = 'Dodaj konto';
+$PALANG['pMenu_sendmail'] = 'Wylij Email';
+$PALANG['pMenu_password'] = 'Haso';
+$PALANG['pMenu_viewlog'] = 'Logi';
+$PALANG['pMenu_logout'] = 'Wyloguj';
+
+$PALANG['pMain_welcome'] = 'Witamy w Postfix Adminie!';
+$PALANG['pMain_overview'] = 'Lista Twoich aliasw i kont pocztowych. Moesz je tutaj edytowa / usuwa.';
+$PALANG['pMain_create_alias'] = 'Utwrz nowy alias dla Twojej domeny.';
+$PALANG['pMain_create_mailbox'] = 'Utwrz nowe konto pocztowe dla Twojej domeny.';
+$PALANG['pMain_sendmail'] = 'Wylij wiadomo do nowo utworzonego konta pocztowego.';
+$PALANG['pMain_password'] = 'Zmie haso swojego konta administracyjnego.';
+$PALANG['pMain_viewlog'] = 'Poka pliki logw.';
+$PALANG['pMain_logout'] = 'Zakocz prac z systemem';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Id';
+$PALANG['pOverview_welcome'] = 'Dane zbiorcze dla domeny ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasy';
+$PALANG['pOverview_alias_mailbox_count'] = 'Konta';
+$PALANG['pOverview_alias_address'] = 'Od';
+$PALANG['pOverview_alias_goto'] = 'Do';
+$PALANG['pOverview_alias_modified'] = 'Ostatnio zmodyfikowany';
+$PALANG['pOverview_mailbox_username'] = 'Email';
+$PALANG['pOverview_mailbox_name'] = 'Name';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Ostatnio zmodyfikowany';
+$PALANG['pOverview_mailbox_active'] = 'Aktywny';
+
+$PALANG['pOverview_get_domain'] = 'Domena';
+$PALANG['pOverview_get_aliases'] = 'Aliasy';
+$PALANG['pOverview_get_mailboxes'] = 'Konta';
+$PALANG['pOverview_get_quota'] = 'Mailbox Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Ostatnio zmodyfikowany';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Nie mona usun tego wpisu ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Ta domena nie naley do Ciebie ';
+
+$PALANG['pCreate_alias_welcome'] = 'Utwrz nowy alias dla Twojej domeny.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">ALIAS jest niepoprawny!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Taki adres email juz istnieje, prosz wybra inny!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Twj limit aliasw zosta osigniety!</span>';
+$PALANG['pCreate_alias_goto'] = 'Do';
+$PALANG['pCreate_alias_button'] = 'Dodaj alias';
+$PALANG['pCreate_alias_goto_text'] = 'Gdzie ten mail powinien by wysany.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Gdzie ten email powinien dotrze.<br /><span class="error_msg">The TO is not valid!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Nie mona doda aliasu do tabeli aliasw!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias zosta dodany do tabeli aliasw!';
+$PALANG['pCreate_alias_catchall_text'] = 'Aby utworzy domylne konto dla domeny (catch-all) podaj "*" (gwiazdk) jako alias.<br />Jeli chcesz przekazywa cao poczty do innej domeny, wpisz jako alias "*@domena.tld".';
+$PALANG['pEdit_alias_welcome'] = 'Edytuj alias dla Twojej domeny.<br />Jeden wpis na lini.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Nie mona zokalizowa aliasu!</span>';
+$PALANG['pEdit_alias_goto'] = 'Do';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Nie podae adresu odbiorcy (pole "To")</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Wpisany adres email jest niepoprawny: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Ta domena nie naley do Ciebie: ';
+$PALANG['pEdit_alias_button'] = 'Edytuj alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Nie mona zmodyfikowa aliasu!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Utwrz lokalne konto pocztowe dla Twojej domeny.';
+$PALANG['pCreate_mailbox_username'] = 'Nazwa uytkownika';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">Adres EMAIL jest niepoprawny!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Taki adres email ju istnieje, prosz wybra inny!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Twj limit kont pocztowych zosta osigniety!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Haso';
+$PALANG['pCreate_mailbox_password2'] = 'Haso (ponownie)';
+$PALANG['pCreate_mailbox_password_text'] = 'Haso do POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Haso do POP3/IMAP<br /><span class="error_msg">Wpisane haso nie pasuje!<br />Lub jest puste!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nazwa';
+$PALANG['pCreate_mailbox_name_text'] = 'Pena nazwa';
+$PALANG['pCreate_mailbox_quota'] = 'Udzia';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Podany udzia jest za wysoki!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktywny';
+$PALANG['pCreate_mailbox_mail'] = 'Utwrz konto';
+$PALANG['pCreate_mailbox_button'] = 'Dodaj konto';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Nie mona doda konta do tabeli kont!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Konto zostao dodane do tabeli kont!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Edytuj konto w Twojej domenie.';
+$PALANG['pEdit_mailbox_username'] = 'Nazwa uytkownika';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Nie mona zlokalizowa konta!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nowe haso';
+$PALANG['pEdit_mailbox_password2'] = 'Nowe haso (ponownie)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Wpisane haso nie pasuje!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nazwa';
+$PALANG['pEdit_mailbox_quota'] = 'Udzia';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Podany udzia jest za wysoki!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Ta domena nie naley do Ciebie: ';
+$PALANG['pEdit_mailbox_button'] = 'Edytuj konto';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Nie mona zmieni hasa!</span>';
+
+$PALANG['pPassword_welcome'] = 'Zmie Swoje haso.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Podany LOGIN nie pasuje!</span>';
+$PALANG['pPassword_password_current'] = 'Aktualne haso';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Nie podaes aktualnego hasa!</span>';
+$PALANG['pPassword_password'] = 'Nowe haso';
+$PALANG['pPassword_password2'] = 'Nowe haso (ponownie)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Podane haso nie pasuje!<br />Lub jest puste!</span>';
+$PALANG['pPassword_button'] = 'Zmie haso';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Nie mona zmieni Twojego hasa!</span>';
+$PALANG['pPassword_result_succes'] = 'Twoje haso zostao zmienione!';
+
+$PALANG['pViewlog_welcome'] = 'Poka 10 ostatnich dziaa dla ';
+$PALANG['pViewlog_timestamp'] = 'Data';
+$PALANG['pViewlog_username'] = 'Administrator';
+$PALANG['pViewlog_domain'] = 'Domena';
+$PALANG['pViewlog_action'] = 'Dziaanie';
+$PALANG['pViewlog_data'] = 'Dane';
+
+$PALANG['pViewlog_button'] = 'Id';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Nie mona odszuka logw!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Wylij wiadomo.';
+$PALANG['pSendmail_admin'] = 'Od';
+$PALANG['pSendmail_to'] = 'Do';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Podany adres jest niepoprawny, bd pole "Do" jest puste!</span>';
+$PALANG['pSendmail_subject'] = 'Temat';
+$PALANG['pSendmail_subject_text'] = 'Witamy';
+$PALANG['pSendmail_body'] = 'Tekst';
+$PALANG['pSendmail_button'] = 'Wylij wiadomo';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Nie mona utworzy konta!</span>';
+$PALANG['pSendmail_result_succes'] = 'Konto zostao utworzone!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Lista administratorw';
+$PALANG['pAdminMenu_list_domain'] = 'Lista domen';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual List';
+$PALANG['pAdminMenu_viewlog'] = 'Logi';
+$PALANG['pAdminMenu_backup'] = 'Kopia bezpieczestwa';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Administratorzy domeny';
+$PALANG['pAdminMenu_create_admin'] = 'Nowy administrator';
+$PALANG['pAdminMenu_create_domain'] = 'Nowa domena';
+$PALANG['pAdminMenu_create_alias'] = 'Dodaj alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Dodaj konto';
+
+$PALANG['pAdminList_admin_domain'] = 'Domena';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domeny';
+$PALANG['pAdminList_admin_modified'] = 'Ostatnio zmodyfikowane';
+$PALANG['pAdminList_admin_active'] = 'Aktywny';
+
+$PALANG['pAdminList_domain_domain'] = 'Domena';
+$PALANG['pAdminList_domain_description'] = 'Opis';
+$PALANG['pAdminList_domain_aliases'] = 'Aliasy';
+$PALANG['pAdminList_domain_mailboxes'] = 'Konta';
+$PALANG['pAdminList_domain_maxquota'] = 'Max udzia (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Ostatnio zmodyfikowane';
+$PALANG['pAdminList_domain_active'] = 'Aktywne';
+
+$PALANG['pAdminList_virtual_button'] = 'Id';
+$PALANG['pAdminList_virtual_welcome'] = 'Overview for ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliasy';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Konta';
+$PALANG['pAdminList_virtual_alias_address'] = 'Od';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Do';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Ostatnio zmodyfikowane';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Email';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nazwa';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Udzia (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Ostatnio zmodyfikowane';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktywne';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Dodaj now domen';
+$PALANG['pAdminCreate_domain_domain'] = 'Domena';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Podana domena ju istnieje!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Opis';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliasy';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Konta';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max udzia';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Dodaj domylne aliasy mailowe';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Dodaj domen';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Nie mona doda domeny!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domena zostaa dodana!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Edytuj domen';
+$PALANG['pAdminEdit_domain_domain'] = 'Domena';
+$PALANG['pAdminEdit_domain_description'] = 'Opis';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliasy';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Konta';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max udzia';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = wyczone | 0 = bez limitw';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktywne';
+$PALANG['pAdminEdit_domain_button'] = 'Edytuj domen';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Nie mona zmodyfikowa domeny!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Dodaj now domen';
+$PALANG['pAdminCreate_admin_username'] = 'Administrator';
+$PALANG['pAdminCreate_admin_username_text'] = 'Adres email';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Adres email<br /><span class="error_msg">Administartor nie jest poprawnym adresem email!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Adres email<br /><span class="error_msg">Administrator ju istnieje lub jest niepoprawny</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Haso';
+$PALANG['pAdminCreate_admin_password2'] = 'Haso (ponownie)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Podane haso nie pasuje!<br />Lub jest puste!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Dodaj administratora';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Nie mona doda administratora!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Administrator zosta dodany!';
+$PALANG['pAdminCreate_admin_address'] = 'Domena';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Edytuj administratora domeny';
+$PALANG['pAdminEdit_admin_username'] = 'Administrator';
+$PALANG['pAdminEdit_admin_password'] = 'Haso';
+$PALANG['pAdminEdit_admin_password2'] = 'Haso (ponownie)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Podane haso nie pasuje!<br />Lub jest puste!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktywny';
+$PALANG['pAdminEdit_admin_button'] = 'Edytuj administratora';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Nie mona zmodyfikowa administratora!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Administrator zosta zmodyfikowany!';
+
+$PALANG['pUsersLogin_welcome'] = 'Zaloguj si eby zmieni haso albo doda aliasy.';
+$PALANG['pUsersLogin_username'] = 'Uytkownik (email)';
+$PALANG['pUsersLogin_password'] = 'Haso';
+$PALANG['pUsersLogin_button'] = 'Zaloguj';
+$PALANG['pUsersLogin_username_incorrect'] = 'Podana nazwa uytkownika jest nieprawidowa! ';
+$PALANG['pUsersLogin_password_incorrect'] = 'Podane haso jest nieprawidowe!';
+
+$PALANG['pUsersMenu_vacation'] = 'Auto odpowied';
+$PALANG['pUsersMenu_edit_alias'] = 'Zmie przekierowania';
+$PALANG['pUsersMenu_password'] = 'Zmie haso';
+
+$PALANG['pUsersMain_vacation'] = 'Ustaw "out of office" wiadomo lub auto odpowied.';
+$PALANG['pUsersMain_edit_alias'] = 'Zmie przekierowania wiadomoci.';
+$PALANG['pUsersMain_password'] = 'Zmie aktualne haso.';
+
+$PALANG['pUsersVacation_welcome'] = 'Auto odpowied.';
+$PALANG['pUsersVacation_welcome_text'] = 'Masz ju skonfigurowan auto odpowied!';
+$PALANG['pUsersVacation_subject'] = 'Temat';
+$PALANG['pUsersVacation_subject_text'] = 'Poza biurem';
+$PALANG['pUsersVacation_body'] = 'Tekst';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+I will be away from <date> until <date>.
+For urgent matters you can contact <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Nieobecny/a';
+$PALANG['pUsersVacation_button_back'] = 'Zaraz wracam';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Nie mog zaktualizowa ustawie Twojej auto odpowiedzi!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Twoja auto odpowied zostaa usunita!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/pt-br.lang b/languages/pt-br.lang
new file mode 100644
index 0000000..cf2bfbd
--- /dev/null
+++ b/languages/pt-br.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Portuguese - Brazil
+// by Roberto
+//
+$PALANG['YES'] = 'Sim';
+$PALANG['NO'] = 'No';
+$PALANG['edit'] = 'Modificar';
+$PALANG['del'] = 'Apagar';
+$PALANG['confirm'] = 'Voc deseja apagar esse registro ?\n';
+$PALANG['confirm_domain'] = 'Voc tem certeza que quer apagar todos os registros deste domnio ?\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Administrador de e-mail, digite aqui seu login';
+$PALANG['pLogin_username'] = 'Usurio (e-mail)';
+$PALANG['pLogin_password'] = 'Senha';
+$PALANG['pLogin_button'] = 'Entrar';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">O usurio invlido. Certifique-se de ter digitado o e-mail corretamente</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Senha invlida!</span>';
+$PALANG['pLogin_login_users'] = 'Usurios, cliquem aqui para suas opes';
+
+$PALANG['pMenu_overview'] = 'Viso geral';
+$PALANG['pMenu_create_alias'] = 'Criar alias';
+$PALANG['pMenu_create_mailbox'] = 'Criar conta de e-mail';
+$PALANG['pMenu_sendmail'] = 'Enviar e-mail';
+$PALANG['pMenu_password'] = 'Senha';
+$PALANG['pMenu_viewlog'] = 'Ver histrico';
+$PALANG['pMenu_logout'] = 'Sair';
+
+$PALANG['pMain_welcome'] = 'Bem-vindo ao Postfix Admin!';
+$PALANG['pMain_overview'] = 'Veja os aliases e as contas de e-mail.(Modificar/Apagar).';
+$PALANG['pMain_create_alias'] = 'Crie novo alias para o seu domnio.';
+$PALANG['pMain_create_mailbox'] = 'Crie nova conta de e-mail para o seu domnio.';
+$PALANG['pMain_sendmail'] = 'Envie uma mensagem para uma nova conta criada';
+$PALANG['pMain_password'] = 'Mudar a senha da conta Administrador.';
+$PALANG['pMain_viewlog'] = 'Ver o histrico.';
+$PALANG['pMain_logout'] = 'Sair do sistema.';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Ir';
+$PALANG['pOverview_welcome'] = 'Viso geral para ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliases';
+$PALANG['pOverview_alias_mailbox_count'] = 'Contas de e-mail';
+$PALANG['pOverview_alias_address'] = 'De';
+$PALANG['pOverview_alias_goto'] = 'Para';
+$PALANG['pOverview_alias_modified'] = 'ltima modificao';
+$PALANG['pOverview_mailbox_username'] = 'Usurio';
+$PALANG['pOverview_mailbox_name'] = 'Nome';
+$PALANG['pOverview_mailbox_quota'] = 'Limite (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'ltima modificao';
+$PALANG['pOverview_mailbox_active'] = 'Ativo';
+
+$PALANG['pOverview_get_domain'] = 'Domnio';
+$PALANG['pOverview_get_aliases'] = 'Aliases';
+$PALANG['pOverview_get_mailboxes'] = 'Contas de e-mail';
+$PALANG['pOverview_get_quota'] = 'Limite das contas de e-mail (MB)';
+$PALANG['pOverview_get_modified'] = 'ltima modificao';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">No foi possvel apagar esse registro ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Esse domnio no seu! ';
+
+$PALANG['pCreate_alias_welcome'] = 'Criar um novo alias para este domnio';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br><span class="error_msg">Esse ALIAS no vlido!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br><span class="error_msg">Esse endereo de e-mail j existe. Por favor, escolha outro nome!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br><span class="error_msg">Voc alcanou seu limite de aliases!</span>';
+$PALANG['pCreate_alias_goto'] = 'Para';
+$PALANG['pCreate_alias_button'] = 'Criar um alias';
+$PALANG['pCreate_alias_goto_text'] = 'Enviar as mensagens para';
+$PALANG['pCreate_alias_goto_text_error'] = 'Os endereos de e-mail.<br /><span class="error_msg">no so vlidos!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Impossvel adicionar alias tabela de aliases!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'O alias j foi criado!';
+$PALANG['pCreate_alias_catchall_text'] = 'Para criar um alias global, utilize "*".<br />Para encaminhar de um domnio a outro, use "@domain.tld" no campo Para';
+
+$PALANG['pEdit_alias_welcome'] = 'Modificar um alias neste domnio.<br>Uma entrada por linha.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Impossvel encontrar o alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'Para';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Voc no digitou um destinatrio (Para)</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">O e-mail que voc digitou no vlido: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Esse domnio no seu: ';
+$PALANG['pEdit_alias_button'] = 'Modificar o alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Impossvel modificar esse alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Criar conta de e-mail para esse domnio.';
+$PALANG['pCreate_mailbox_username'] = 'Usurio';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br><span class="error_msg">Esse e-mail invlido!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br><span class="error_msg">Esse e-mail j existe! Por favor, escolha outro nome</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br><span class="error_msg">Voc alcanou o limite de contas de e-mail!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Senha';
+$PALANG['pCreate_mailbox_password2'] = 'Senha (confirmao)';
+$PALANG['pCreate_mailbox_password_text'] = 'Senha para a conta POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Senha para a conta POP3/IMAP<br /><span class="error_msg">A senha invlida!<br />ou no foi digitada</span>';
+$PALANG['pCreate_mailbox_name'] = 'Nome';
+$PALANG['pCreate_mailbox_name_text'] = 'Nome completo';
+$PALANG['pCreate_mailbox_quota'] = 'Limite';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">O limite especificado muito alto!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Ativo';
+$PALANG['pCreate_mailbox_mail'] = 'Criar e-mail';
+$PALANG['pCreate_mailbox_button'] = 'Adicionar e-mail';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Impossvel criar conta de e-mail!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'O e-mail j foi criado!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Modificar conta de e-mail.';
+$PALANG['pEdit_mailbox_username'] = 'Usurio';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Impossvel encontrar esse e-mail!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nova senha';
+$PALANG['pEdit_mailbox_password2'] = 'Nova senha (confirmao)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">As senhas so diferentes!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Nome';
+$PALANG['pEdit_mailbox_quota'] = 'Limite';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">O limite especificado muito alto!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Esse domnio no seu: ';
+$PALANG['pEdit_mailbox_button'] = 'Modificar conta de e-mail';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Impossvel mudar sua senha!</span>';
+
+$PALANG['pPassword_welcome'] = 'Mudar senha.';
+$PALANG['pPassword_admin'] = 'Usurio';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">As informaes fornecidas no so de uma conta vlida!</span>';
+$PALANG['pPassword_password_current'] = 'Senha atual';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Voc no digitou a senha atual!</span>';
+$PALANG['pPassword_password'] = 'Nova senha';
+$PALANG['pPassword_password2'] = 'Nova senha (confirmao)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">As senhas digitadas no correspondem!<br />Ou so nulas!</span>';
+$PALANG['pPassword_button'] = 'Mudar senha';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Impossvel modificar a senha!</span>';
+$PALANG['pPassword_result_succes'] = 'Sua senha foi modificada com sucesso!';
+
+$PALANG['pViewlog_welcome'] = 'Ver as 10 ltimas aes para ';
+$PALANG['pViewlog_timestamp'] = 'Data/Hora';
+$PALANG['pViewlog_username'] = 'Administrador';
+$PALANG['pViewlog_domain'] = 'Domnio';
+$PALANG['pViewlog_action'] = 'Ao';
+$PALANG['pViewlog_data'] = 'Informao';
+
+$PALANG['pViewlog_button'] = 'Ir';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">No foi possvel achar os histricos!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Enviar um e-mail.';
+$PALANG['pSendmail_admin'] = 'De';
+$PALANG['pSendmail_to'] = 'Para';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">(Para) est vazio ou no um e-mail vlido!</span>';
+$PALANG['pSendmail_subject'] = 'Assunto';
+$PALANG['pSendmail_subject_text'] = 'Bem-vindo';
+$PALANG['pSendmail_body'] = 'Mensagem';
+$PALANG['pSendmail_button'] = 'Enviar um e-mail';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Erro no envio da mensagem!</span>';
+$PALANG['pSendmail_result_succes'] = 'A mensagem foi enviada!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Lista de administradores';
+$PALANG['pAdminMenu_list_domain'] = 'Lista de domnios';
+$PALANG['pAdminMenu_list_virtual'] = 'Lista virtual';
+$PALANG['pAdminMenu_viewlog'] = 'Ver histrico';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Administradores de domnios';
+$PALANG['pAdminMenu_create_admin'] = 'Novo administrador';
+$PALANG['pAdminMenu_create_domain'] = 'Novo domnio';
+$PALANG['pAdminMenu_create_alias'] = 'Criar alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Criar e-mail';
+
+$PALANG['pAdminList_admin_domain'] = 'Domnio';
+$PALANG['pAdminList_admin_username'] = 'Administrador';
+$PALANG['pAdminList_admin_count'] = 'Domnios';
+$PALANG['pAdminList_admin_modified'] = 'ltima modificao';
+$PALANG['pAdminList_admin_active'] = 'Ativo';
+
+$PALANG['pAdminList_domain_domain'] = 'Domnio';
+$PALANG['pAdminList_domain_description'] = 'Descrio';
+$PALANG['pAdminList_domain_aliases'] = 'Alias';
+$PALANG['pAdminList_domain_mailboxes'] = 'Contas de e-mail';
+$PALANG['pAdminList_domain_maxquota'] = 'Limite mximo (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'ltima modificao';
+$PALANG['pAdminList_domain_active'] = 'Ativo';
+
+$PALANG['pAdminList_virtual_button'] = 'Ir';
+$PALANG['pAdminList_virtual_welcome'] = 'Viso geral para ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Contas de e-mail';
+$PALANG['pAdminList_virtual_alias_address'] = 'De';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Para';
+$PALANG['pAdminList_virtual_alias_modified'] = 'ltima modificao';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Usurio';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Nome';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Limite (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'ltima modificao';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Ativo';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Criar novo domnio';
+$PALANG['pAdminCreate_domain_domain'] = 'Domnio';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">O domnio j existe!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Descrio';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = desativar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Contas de e-mail';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = desativar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Limite mximo';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = desativar | 0 = ilimitado';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Adicionar aliases (padro)';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Criar domnio';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Impossvel criar domnio!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'O domnio j existe!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Modificar domnio';
+$PALANG['pAdminEdit_domain_domain'] = 'Domnio';
+$PALANG['pAdminEdit_domain_description'] = 'Descrio';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliases';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = desativar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Contas de e-mail';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = desativar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Limite mximo';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = desativar | 0 = ilimitado';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Ativo';
+$PALANG['pAdminEdit_domain_button'] = 'Modificar domnio';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Impossvel modificar domnio!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Criar novo administrador de domnio';
+$PALANG['pAdminCreate_admin_username'] = 'Administrador';
+$PALANG['pAdminCreate_admin_username_text'] = 'Usurio (e-mail)';
+$PALANG['pAdminCreate_admin_username_text_error1'] = '<span class="error_msg">No um nome de administrador vlido</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = '<span class="error_msg">Esse administrador no existe ou no vlido</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Senha';
+$PALANG['pAdminCreate_admin_password2'] = 'Senha (confirmao)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">A senha digitada no vlida<br> ou nula!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Criar um administrador';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Impossvel criar administrador!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'O administrador j foi criado!';
+$PALANG['pAdminCreate_admin_address'] = 'Domnio';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Modificar dmnio';
+$PALANG['pAdminEdit_admin_username'] = 'Administrador';
+$PALANG['pAdminEdit_admin_password'] = 'Senha';
+$PALANG['pAdminEdit_admin_password2'] = 'Senha (confirmao)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">A senha digitada no vlida<br /> ou nula!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Ativo';
+$PALANG['pAdminEdit_admin_button'] = 'Modificar administdrador';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Impossvel modificar administrador !</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Administrador j foi criado!';
+
+$PALANG['pUsersLogin_welcome'] = 'Digite seu e-mail e sua senha para modificar a senha e seus aliases.';
+$PALANG['pUsersLogin_username'] = 'Usurio (e-mail)';
+$PALANG['pUsersLogin_password'] = 'Senha';
+$PALANG['pUsersLogin_button'] = 'Entrar';
+$PALANG['pUsersLogin_username_incorrect'] = 'O usurio invlido. Certifique-se de ter digitado o e-mail corretamente!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Sua senha invlida!';
+
+$PALANG['pUsersMenu_vacation'] = 'Resposta automtica';
+$PALANG['pUsersMenu_edit_alias'] = 'Modificar redirecionamento';
+$PALANG['pUsersMenu_password'] = 'Modificar senha';
+
+$PALANG['pUsersMain_vacation'] = 'Configurar uma mensagem para a resposta automtica.';
+$PALANG['pUsersMain_edit_alias'] = 'Modificar e-mail para redirecionamento.';
+$PALANG['pUsersMain_password'] = 'Changer votre mot de passe.';
+
+$PALANG['pUsersVacation_welcome'] = 'Resposta automtica.';
+$PALANG['pUsersVacation_welcome_text'] = 'Sua resposta automtica j est configurada!';
+$PALANG['pUsersVacation_subject'] = 'Assunto';
+$PALANG['pUsersVacation_subject_text'] = 'Resposta de encaminhamento';
+$PALANG['pUsersVacation_body'] = 'Mensagem';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Eu estarei ausente de <date> at <date>.
+Em caso de urgncia, favor contatar <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Ausente';
+$PALANG['pUsersVacation_button_back'] = 'Retorno';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Impossvel atualizar suas configuraes para resposta automtica!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Sua resposta automtica foi removida!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/ru.lang b/languages/ru.lang
new file mode 100644
index 0000000..36849b1
--- /dev/null
+++ b/languages/ru.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Rusian
+// by Paul
+//
+$PALANG['YES'] = '';
+$PALANG['NO'] = '';
+$PALANG['edit'] = '';
+$PALANG['del'] = '';
+$PALANG['confirm'] = ' , ?\n';
+$PALANG['confirm_domain'] = ' ? !\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = ' .';
+$PALANG['pLogin_username'] = ' ( )';
+$PALANG['pLogin_password'] = '';
+$PALANG['pLogin_button'] = '';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg"> . , ( )!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg"> !</span>';
+$PALANG['pLogin_login_users'] = ' .';
+
+$PALANG['pMenu_overview'] = '';
+$PALANG['pMenu_create_alias'] = ' ';
+$PALANG['pMenu_create_mailbox'] = ' ';
+$PALANG['pMenu_sendmail'] = ' ';
+$PALANG['pMenu_password'] = '';
+$PALANG['pMenu_viewlog'] = ' ';
+$PALANG['pMenu_logout'] = '';
+
+$PALANG['pMain_welcome'] = ' Postfix Admin!';
+$PALANG['pMain_overview'] = ' . .';
+$PALANG['pMain_create_alias'] = ' .';
+$PALANG['pMain_create_mailbox'] = ' .';
+$PALANG['pMain_sendmail'] = ' .';
+$PALANG['pMain_password'] = ' .';
+$PALANG['pMain_viewlog'] = ' (log files).';
+$PALANG['pMain_logout'] = ' ';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = '';
+$PALANG['pOverview_welcome'] = ' ';
+$PALANG['pOverview_alias_alias_count'] = '';
+$PALANG['pOverview_alias_mailbox_count'] = '';
+$PALANG['pOverview_alias_address'] = '';
+$PALANG['pOverview_alias_goto'] = '';
+$PALANG['pOverview_alias_modified'] = ' ';
+$PALANG['pOverview_mailbox_username'] = '';
+$PALANG['pOverview_mailbox_name'] = '';
+$PALANG['pOverview_mailbox_quota'] = ' (MB)';
+$PALANG['pOverview_mailbox_modified'] = ' ';
+$PALANG['pOverview_mailbox_active'] = '';
+
+$PALANG['pOverview_get_domain'] = '';
+$PALANG['pOverview_get_aliases'] = '';
+$PALANG['pOverview_get_mailboxes'] = '';
+$PALANG['pOverview_get_quota'] = ' (MB)';
+$PALANG['pOverview_get_modified'] = ' ';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg"> ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg"> ';
+
+$PALANG['pCreate_alias_welcome'] = ' .';
+$PALANG['pCreate_alias_address'] = '';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg"> , , .</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg"> </span>';
+$PALANG['pCreate_alias_goto'] = '';
+$PALANG['pCreate_alias_button'] = ' ';
+$PALANG['pCreate_alias_goto_text'] = ' .';
+$PALANG['pCreate_alias_goto_text_error'] = ' .<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pCreate_alias_result_succes'] = ' !';
+$PALANG['pCreate_alias_catchall_text'] = ' catch-all "*" .<br /> "*@domain.tld" ';
+
+$PALANG['pEdit_alias_welcome'] = ' .<br /> .';
+$PALANG['pEdit_alias_address'] = '';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_alias_goto'] = '';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg"> </span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg"> ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_alias_button'] = ' ';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = ' .';
+$PALANG['pCreate_mailbox_username'] = '';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg"> , , !</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_password'] = '';
+$PALANG['pCreate_mailbox_password2'] = ' ( )';
+$PALANG['pCreate_mailbox_password_text'] = ' POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = ' POP3/IMAP<br /><span class="error_msg">, !<br /> !</span>';
+$PALANG['pCreate_mailbox_name'] = '';
+$PALANG['pCreate_mailbox_name_text'] = ' ';
+$PALANG['pCreate_mailbox_quota'] = '';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">, , !</span>';
+$PALANG['pCreate_mailbox_active'] = '';
+$PALANG['pCreate_mailbox_mail'] = ' ';
+$PALANG['pCreate_mailbox_button'] = ' ';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pCreate_mailbox_result_succes'] = ' !';
+
+$PALANG['pEdit_mailbox_welcome'] = ' .';
+$PALANG['pEdit_mailbox_username'] = '';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_password'] = ' ';
+$PALANG['pEdit_mailbox_password2'] = ' ( )';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pEdit_mailbox_name'] = '';
+$PALANG['pEdit_mailbox_quota'] = '';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">, , !</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg"> : ';
+$PALANG['pEdit_mailbox_button'] = ' ';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pPassword_welcome'] = ' .';
+$PALANG['pPassword_admin'] = ' ';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">, , !</span>';
+$PALANG['pPassword_password_current'] = ' ';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_password'] = ' ';
+$PALANG['pPassword_password2'] = ' ( )';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg"> !<br /> !</span>';
+$PALANG['pPassword_button'] = ' ';
+$PALANG['pPassword_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pPassword_result_succes'] = ' !';
+
+$PALANG['pViewlog_welcome'] = ' 10 ';
+$PALANG['pViewlog_timestamp'] = ' /';
+$PALANG['pViewlog_username'] = '';
+$PALANG['pViewlog_domain'] = '';
+$PALANG['pViewlog_action'] = '';
+$PALANG['pViewlog_data'] = '';
+
+$PALANG['pViewlog_button'] = '';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg"> -!</span>';
+
+$PALANG['pSendmail_welcome'] = ' .';
+$PALANG['pSendmail_admin'] = '';
+$PALANG['pSendmail_to'] = '';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pSendmail_subject'] = '';
+$PALANG['pSendmail_subject_text'] = ' !';
+$PALANG['pSendmail_body'] = '';
+$PALANG['pSendmail_button'] = ' ';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pSendmail_result_succes'] = ' !';
+
+$PALANG['pAdminMenu_list_admin'] = ' ';
+$PALANG['pAdminMenu_list_domain'] = ' ';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtual List';
+$PALANG['pAdminMenu_viewlog'] = ' ';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = ' ';
+$PALANG['pAdminMenu_create_admin'] = ' ';
+$PALANG['pAdminMenu_create_domain'] = ' ';
+$PALANG['pAdminMenu_create_alias'] = ' ';
+$PALANG['pAdminMenu_create_mailbox'] = ' ';
+
+$PALANG['pAdminList_admin_domain'] = '';
+$PALANG['pAdminList_admin_username'] = '';
+$PALANG['pAdminList_admin_count'] = '';
+$PALANG['pAdminList_admin_modified'] = ' ';
+$PALANG['pAdminList_admin_active'] = '';
+
+$PALANG['pAdminList_domain_domain'] = '';
+$PALANG['pAdminList_domain_description'] = '';
+$PALANG['pAdminList_domain_aliases'] = '';
+$PALANG['pAdminList_domain_mailboxes'] = '';
+$PALANG['pAdminList_domain_maxquota'] = '. (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = ' ';
+$PALANG['pAdminList_domain_active'] = '';
+
+$PALANG['pAdminList_virtual_button'] = '';
+$PALANG['pAdminList_virtual_welcome'] = ' ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = '';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = '';
+$PALANG['pAdminList_virtual_alias_address'] = '';
+$PALANG['pAdminList_virtual_alias_goto'] = '';
+$PALANG['pAdminList_virtual_alias_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_username'] = '';
+$PALANG['pAdminList_virtual_mailbox_name'] = '';
+$PALANG['pAdminList_virtual_mailbox_quota'] = ' (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = ' ';
+$PALANG['pAdminList_virtual_mailbox_active'] = '';
+
+$PALANG['pAdminCreate_domain_welcome'] = ' ';
+$PALANG['pAdminCreate_domain_domain'] = '';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_description'] = '';
+$PALANG['pAdminCreate_domain_aliases'] = '';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = | 0 = ';
+$PALANG['pAdminCreate_domain_mailboxes'] = '';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = | 0 = ';
+$PALANG['pAdminCreate_domain_maxquota'] = '. ';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = | 0 = ';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = ' ';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = ' ';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = ' !';
+
+$PALANG['pAdminEdit_domain_welcome'] = ' ';
+$PALANG['pAdminEdit_domain_domain'] = '';
+$PALANG['pAdminEdit_domain_description'] = '';
+$PALANG['pAdminEdit_domain_aliases'] = '';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = | 0 = ';
+$PALANG['pAdminEdit_domain_mailboxes'] = '';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = | 0 = ';
+$PALANG['pAdminEdit_domain_maxquota'] = '. ';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = | 0 = ';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = '';
+$PALANG['pAdminEdit_domain_button'] = ' ';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg"> !</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = ' ';
+$PALANG['pAdminCreate_admin_username'] = '';
+$PALANG['pAdminCreate_admin_username_text'] = ' ';
+$PALANG['pAdminCreate_admin_username_text_error1'] = ' <br /><span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = ' <br /><span class="error_msg"> </span>';
+$PALANG['pAdminCreate_admin_password'] = '';
+$PALANG['pAdminCreate_admin_password2'] = ' ( )';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">, !<br /> !</span>';
+$PALANG['pAdminCreate_admin_button'] = ' ';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = ' !';
+$PALANG['pAdminCreate_admin_address'] = '';
+
+$PALANG['pAdminEdit_admin_welcome'] = ' ';
+$PALANG['pAdminEdit_admin_username'] = '';
+$PALANG['pAdminEdit_admin_password'] = '';
+$PALANG['pAdminEdit_admin_password2'] = ' ( )';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">, !<br /> !</span>';
+$PALANG['pAdminEdit_admin_active'] = '';
+$PALANG['pAdminEdit_admin_button'] = ' ';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = ' !';
+
+$PALANG['pUsersLogin_welcome'] = ' .';
+$PALANG['pUsersLogin_username'] = ' ()';
+$PALANG['pUsersLogin_password'] = '';
+$PALANG['pUsersLogin_button'] = '';
+$PALANG['pUsersLogin_username_incorrect'] = ' . !';
+$PALANG['pUsersLogin_password_incorrect'] = ' !';
+
+$PALANG['pUsersMenu_vacation'] = '';
+$PALANG['pUsersMenu_edit_alias'] = ' ';
+$PALANG['pUsersMenu_password'] = ' ';
+
+$PALANG['pUsersMain_vacation'] = ' " .';
+$PALANG['pUsersMain_edit_alias'] = ' .';
+$PALANG['pUsersMain_password'] = ' .';
+
+$PALANG['pUsersVacation_welcome'] = '.';
+$PALANG['pUsersVacation_welcome_text'] = ' !';
+$PALANG['pUsersVacation_subject'] = '';
+$PALANG['pUsersVacation_subject_text'] = ' ';
+$PALANG['pUsersVacation_body'] = '';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+ <date> <date>.
+ <contact person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = '';
+$PALANG['pUsersVacation_button_back'] = '';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg"> !</span>';
+$PALANG['pUsersVacation_result_succes'] = ' !';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/sl.lang b/languages/sl.lang
new file mode 100644
index 0000000..ee8bf3b
--- /dev/null
+++ b/languages/sl.lang
@@ -0,0 +1,297 @@
+<?php
+//
+// Language file Slovenian
+// by Nejc Skoberne <nejc at skoberne dot net>
+// Encoding iso-8859-2
+//
+$PALANG['charset'] = 'iso-8859-2';
+$PALANG['YES'] = 'DA';
+$PALANG['NO'] = 'NE';
+$PALANG['edit'] = 'uredi';
+$PALANG['del'] = 'brii';
+$PALANG['confirm'] = 'Ali ste prepriani, da elite brisati?\n';
+$PALANG['confirm_domain'] = 'Ali ste prepriani, da elite brisati vse zapise za to domeno? Zapisi bodo izgubljeni za vedno!\n';
+$PALANG['check_update'] = 'Preveri, e obstaja noveja razliica';
+
+$PALANG['pLogin_welcome'] = 'Administratorji se prijavite tukaj.';
+$PALANG['pLogin_username'] = 'Uporabniko ime (e-potni naslov)';
+$PALANG['pLogin_password'] = 'Geslo';
+$PALANG['pLogin_button'] = 'Prijavi';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Uporabniko ime ni pravilno. Prijaviti se morate z vaim e-potnim naslovom!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Geslo ni pravilno!</span>';
+$PALANG['pLogin_login_users'] = 'Uporabniki kliknite tukaj, e elite nastaviti odsotnost ali spremeniti geslo.';
+
+$PALANG['pMenu_overview'] = 'Pregled';
+$PALANG['pMenu_create_alias'] = 'Dodaj alias';
+$PALANG['pMenu_create_mailbox'] = 'Dodaj predal';
+$PALANG['pMenu_sendmail'] = 'Polji e-poto';
+$PALANG['pMenu_password'] = 'Geslo';
+$PALANG['pMenu_viewlog'] = 'Preglej log';
+$PALANG['pMenu_logout'] = 'Odjavi';
+
+$PALANG['pMain_welcome'] = 'Dobrodoli v Postfix Adminu!';
+$PALANG['pMain_overview'] = 'Seznam aliasov in predalov. Tukaj jih lahko urejate in/ali briete.';
+$PALANG['pMain_create_alias'] = 'Ustvari nov alias za doloeno domeno.';
+$PALANG['pMain_create_mailbox'] = 'Ustvari nov predal za doloeno domeno.';
+$PALANG['pMain_sendmail'] = 'Polji e-poto v enega izmed novoustvarjenih predalov.';
+$PALANG['pMain_password'] = 'Spremeni geslo za administratorja.';
+$PALANG['pMain_viewlog'] = 'Pregled dnevnikih datotek.';
+$PALANG['pMain_logout'] = 'Odjava iz sistema';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Definirane domene';
+$PALANG['pOverview_up_arrow'] = 'Na vrh';
+$PALANG['pOverview_right_arrow'] = 'Naslednja stran';
+$PALANG['pOverview_left_arrow'] = 'Prejsnja stran';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Predali';
+$PALANG['pOverview_button'] = 'Pojdi';
+$PALANG['pOverview_welcome'] = 'Pregled za ';
+$PALANG['pOverview_alias_alias_count'] = 'Aliasi';
+$PALANG['pOverview_alias_mailbox_count'] = 'Predali';
+$PALANG['pOverview_alias_address'] = 'Od';
+$PALANG['pOverview_alias_goto'] = 'Za';
+$PALANG['pOverview_alias_modified'] = 'Zadnji spremenjeno';
+$PALANG['pOverview_mailbox_username'] = 'E-pota';
+$PALANG['pOverview_mailbox_name'] = 'Ime';
+$PALANG['pOverview_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Zadnji spremenjeno';
+$PALANG['pOverview_mailbox_active'] = 'Aktiven';
+
+$PALANG['pOverview_get_domain'] = 'Domena';
+$PALANG['pOverview_get_aliases'] = 'Aliasi';
+$PALANG['pOverview_get_mailboxes'] = 'Predali';
+$PALANG['pOverview_get_quota'] = 'Kvota za predale (MB)';
+$PALANG['pOverview_get_modified'] = 'Zadnji spremenjeno';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Vnosa ni bilo mogoe izbrisati ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Izbrana domena ni pod vaim nadzorom ';
+
+$PALANG['pCreate_alias_welcome'] = 'Ustvari nov alias za doloeno domeno.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Sintaksa aliasa je napana!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Ta e-potni naslov e obstaja, prosimo izberite drugega!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Maksimalno tevilo aliasov je preseeno!</span>';
+$PALANG['pCreate_alias_goto'] = 'Za';
+$PALANG['pCreate_alias_button'] = 'Dodaj alias';
+$PALANG['pCreate_alias_goto_text'] = 'Kamor elite nasloviti poto.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Kamor mora sporoilo dejansko prispeti.<br /><span class="error_msg">Vnos "Za" je napaen!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Aliasa ni bilo mogoe dodati!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Alias je bil uspeno dodan!';
+$PALANG['pCreate_alias_catchall_text'] = 'e elite ustvariti "vseobsegajoi" alias, uporabite "*" namesto aliasa.<br />Za posredovanje iz domene na domeno, uporabite "*@domena.si" v "Za" polju.';
+
+$PALANG['pEdit_alias_welcome'] = 'Uredi alias za doloeno domeno.<br />V posamezni vrstici je lahko samo en naslov.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Aliasa ni bilo mogoe najti!</span>';
+$PALANG['pEdit_alias_goto'] = 'Za';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">V polje "Za" niste vnesli niesar!</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">E-potni naslov, ki ste ga vnesli, ni pravilen: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Izbrana domena ni pod vaim nadzorom: ';
+$PALANG['pEdit_alias_button'] = 'Uredi alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Aliasa ni bilo mogoe spremeniti!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Ustvari nov predal za izbrano domeno.';
+$PALANG['pCreate_mailbox_username'] = 'Uporabniko ime';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">E-potni naslov ni pravilen!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Izbrani e-potni naslov e obstaja, prosimo izberite drugega!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Maksimalno tevilo predalov je preseeno!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Geslo';
+$PALANG['pCreate_mailbox_password2'] = 'Geslo (ponovitev)';
+$PALANG['pCreate_mailbox_password_text'] = 'Geslo za POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Geslo za POP3/IMAP<br /><span class="error_msg">Vneeni gesli se razlikujeta<br />ali pa sta prazni!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Ime';
+$PALANG['pCreate_mailbox_name_text'] = 'Polno ime';
+$PALANG['pCreate_mailbox_quota'] = 'Kvota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Vneena kvota je prevelika!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiven';
+$PALANG['pCreate_mailbox_mail'] = 'Ustvari predal';
+$PALANG['pCreate_mailbox_button'] = 'Dodaj predal';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Predala ni bilo mogoe ustvariti!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Predal je bil uspeno ustvarjen!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Uredi doloen predal za izbrano domeno.';
+$PALANG['pEdit_mailbox_username'] = 'Uporabniko ime';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Izbranega predala ni bilo mogoe najti!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Novo geslo';
+$PALANG['pEdit_mailbox_password2'] = 'Novo geslo (ponovitev)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Vneeni gesli se ne ujemata!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Ime';
+$PALANG['pEdit_mailbox_quota'] = 'Kvota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Vneena kvota je prevelika!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Izbrana domena ni pod vaim nadzorom: ';
+$PALANG['pEdit_mailbox_button'] = 'Uredi predal';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Predala ni bilo mogoe spremeniti!</span>';
+
+$PALANG['pPassword_welcome'] = 'Sprimenjanje gesla.';
+$PALANG['pPassword_admin'] = 'Uporabniko ime';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Uporabniko ime ne ustreza predalu!</span>';
+$PALANG['pPassword_password_current'] = 'Trenutno geslo';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Vnesti morate trenutno geslo!</span>';
+$PALANG['pPassword_password'] = 'Novo geslo';
+$PALANG['pPassword_password2'] = 'Novo geslo (ponovitev)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Vneeni gesli se ne ujemata<br />ali pa sta prazni!</span>';
+$PALANG['pPassword_button'] = 'Spremeni geslo';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Gesla ni bilo mogoe spremeniti!</span>';
+$PALANG['pPassword_result_succes'] = 'Geslo je bilo uspeno spremenjeno!';
+
+$PALANG['pViewlog_welcome'] = 'Seznam zadnjih 10 operacij za ';
+$PALANG['pViewlog_timestamp'] = 'as';
+$PALANG['pViewlog_username'] = 'Administrator';
+$PALANG['pViewlog_domain'] = 'Domena';
+$PALANG['pViewlog_action'] = 'Operacija';
+$PALANG['pViewlog_data'] = 'Podatki';
+
+$PALANG['pViewlog_button'] = 'Pojdi';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Dnevnikov ni bilo mogoe najti!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Polji e-poto.';
+$PALANG['pSendmail_admin'] = 'Od';
+$PALANG['pSendmail_to'] = 'Za';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Polje "Za" ne vsebuje veljavnega e-potnega naslova!</span>';
+$PALANG['pSendmail_subject'] = 'Zadeva';
+$PALANG['pSendmail_subject_text'] = 'Pozdravljeni!';
+$PALANG['pSendmail_body'] = 'Besedilo';
+$PALANG['pSendmail_button'] = 'Polji sporoilo';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Predala ni bilo mogoe ustvariti!</span>';
+$PALANG['pSendmail_result_succes'] = 'Predal je bil uspeno ustvarjen!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Seznam administratorjev';
+$PALANG['pAdminMenu_list_domain'] = 'Seznam domen';
+$PALANG['pAdminMenu_list_virtual'] = 'Seznam aliasov in predalov';
+$PALANG['pAdminMenu_viewlog'] = 'Pregled dnevnika';
+$PALANG['pAdminMenu_backup'] = 'Rezervna kopija';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domenski administratorji';
+$PALANG['pAdminMenu_create_admin'] = 'Nov administrator';
+$PALANG['pAdminMenu_create_domain'] = 'Nova domena';
+$PALANG['pAdminMenu_create_alias'] = 'Dodaj alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Dodaj predal';
+
+$PALANG['pAdminList_admin_domain'] = 'Domena';
+$PALANG['pAdminList_admin_username'] = 'Administrator';
+$PALANG['pAdminList_admin_count'] = 'Domene';
+$PALANG['pAdminList_admin_modified'] = 'Zadnji spremenjeno';
+$PALANG['pAdminList_admin_active'] = 'Aktiven';
+
+$PALANG['pAdminList_domain_domain'] = 'Domena';
+$PALANG['pAdminList_domain_description'] = 'Opis';
+$PALANG['pAdminList_domain_aliases'] = 'Aliasi';
+$PALANG['pAdminList_domain_mailboxes'] = 'Predali';
+$PALANG['pAdminList_domain_maxquota'] = 'Maksimalna kvota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Zadnji spremenjeno';
+$PALANG['pAdminList_domain_active'] = 'Aktiven';
+
+$PALANG['pAdminList_virtual_button'] = 'Pojdi';
+$PALANG['pAdminList_virtual_welcome'] = 'Pregled za: ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Aliasi';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Predali';
+$PALANG['pAdminList_virtual_alias_address'] = 'Od';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Za';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Zadnji spremenjeno';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'E-pota';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Ime';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Kvota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Zadnji spremenjeno';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiven';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Dodaj novo domeno';
+$PALANG['pAdminCreate_domain_domain'] = 'Domena';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Vneena domena e obstaja!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Opis';
+$PALANG['pAdminCreate_domain_aliases'] = 'Aliasi';
+$PALANG['pAdminCreate_domain_aliases_text'] = '-1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Predali';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '-1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Maksimalna kvota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> -1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Definiraj transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Dodaj privzete aliase';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Potni strenik je sekundarni MX';
+$PALANG['pAdminCreate_domain_button'] = 'Dodaj domeno';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Domene ni bilo mogoe dodati!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domena je bila uspeno dodana!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Uredi domeno';
+$PALANG['pAdminEdit_domain_domain'] = 'Domena';
+$PALANG['pAdminEdit_domain_description'] = 'Opis';
+$PALANG['pAdminEdit_domain_aliases'] = 'Aliasi';
+$PALANG['pAdminEdit_domain_aliases_text'] = '-1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Predali';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '-1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Maksimalna kvota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> -1 = onemogoi | 0 = neomejeno';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Potni strenik je sekundarni MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiven';
+$PALANG['pAdminEdit_domain_button'] = 'Shrani';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Domene ni bilo mogoe spremeniti!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Dodaj domenskega administratorja';
+$PALANG['pAdminCreate_admin_username'] = 'Administrator';
+$PALANG['pAdminCreate_admin_username_text'] = 'E-potni naslov';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'E-potni naslov<br /><span class="error_msg">Administrator ni veljaven e-potni naslov!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'E-potni naslov<br /><span class="error_msg">Adminstrator e obstaja ali pa ni pravilen</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Geslo';
+$PALANG['pAdminCreate_admin_password2'] = 'Geslo (ponovitev)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Vneeni gesli se ne ujemata<br />ali pa sta prazni!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Dodaj administratorja';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Administratorja ni bilo mogoe dodati!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Admininstrator je bil uspeno dodan';
+$PALANG['pAdminCreate_admin_address'] = 'Domena';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Uredi domenskega administratorja';
+$PALANG['pAdminEdit_admin_username'] = 'Administrator';
+$PALANG['pAdminEdit_admin_password'] = 'Geslo';
+$PALANG['pAdminEdit_admin_password2'] = 'Geslo (ponovitev)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Vneeni gesli se ne ujemata<br />ali pa sta prazni!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiven';
+$PALANG['pAdminEdit_admin_button'] = 'Shrani';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Administratorja ni bilo mogoe spremeniti!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Admininstrator je bil uspeno spremenjen!';
+
+$PALANG['pUsersLogin_welcome'] = 'e elite spremeniti gesli ali nastaviti sporoilo o odsotnosti, se prijavite.';
+$PALANG['pUsersLogin_username'] = 'E-potni naslov';
+$PALANG['pUsersLogin_password'] = 'Geslo';
+$PALANG['pUsersLogin_button'] = 'Prijava';
+$PALANG['pUsersLogin_username_incorrect'] = 'Uporabniko ime ni pravilno! Uporabiti morate svoj e-potni naslov!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Geslo ni pravilno!';
+
+$PALANG['pUsersMenu_vacation'] = 'Obvestilo o odsotnosti';
+$PALANG['pUsersMenu_edit_alias'] = 'Nastavi preusmeritev';
+$PALANG['pUsersMenu_password'] = 'Spremeni geslo';
+
+$PALANG['pUsersMain_vacation'] = 'Nastavite obvestilo o odsotnosti.';
+$PALANG['pUsersMain_edit_alias'] = 'Nastavite preusmeritev na drug e-potni naslov.';
+$PALANG['pUsersMain_password'] = 'Spremenite geslo.';
+
+$PALANG['pUsersVacation_welcome'] = 'Tukaj lahko nastavite obvestilo o odsotnosti.';
+$PALANG['pUsersVacation_welcome_text'] = 'Obvestilo o odsotnosti imate e nastavljeno!';
+$PALANG['pUsersVacation_subject'] = 'Zadeva';
+$PALANG['pUsersVacation_subject_text'] = 'Odsotnost';
+$PALANG['pUsersVacation_body'] = 'Besedilo';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Od <datum> do <datum> sem odsoten.
+Za nujne zadeve prosim kontaktirajte <kontaktna oseba>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Vkljui odsotnost';
+$PALANG['pUsersVacation_button_back'] = 'Izkljui odsotnost';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Vaim nastavitev o odsotnosti ni bilo mogoe posodobiti!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Obvestilo o odsotnosti je izkljueno!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'ustvari predal';
+$PALANG['pCreate_dbLog_createalias'] = 'ustvari alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'brii alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'brii predal';
+
+$PALANG['pEdit_dbLog_editactive'] = 'spremeni stanje aktivnosti';
+$PALANG['pEdit_dbLog_editalias'] = 'uredi alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'uredi predal';
+
+$PALANG['pSearch_welcome'] = 'Ii: ';
+?>
diff --git a/languages/sv.lang b/languages/sv.lang
new file mode 100644
index 0000000..7837956
--- /dev/null
+++ b/languages/sv.lang
@@ -0,0 +1,296 @@
+<?php
+//
+// Language file Swedish
+// by Stefan Jakobsson <stefan at katrinet dot se>
+// updated by Bjorne <bjorne at gah dot se>
+//
+$PALANG['YES'] = 'JA';
+$PALANG['NO'] = 'NEJ';
+$PALANG['edit'] = 'editera';
+$PALANG['del'] = 'radera';
+$PALANG['confirm'] = 'r du sker p att du vill radera denna?\n';
+$PALANG['confirm_domain'] = 'Vill du verkligen radera all data fr denna domn? Kan ej ngras!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Mail administratrer loggar in hr fr att skta er domn.';
+$PALANG['pLogin_username'] = 'Login (epost)';
+$PALANG['pLogin_password'] = 'Lsenord';
+$PALANG['pLogin_button'] = 'Login';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Ditt login r ej korrekt. Logga in med din epostadress!</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">Du angav fel lsenord!</span>';
+$PALANG['pLogin_login_users'] = 'Anvndare klickar hr fr att logga in p anvndardelen.';
+
+$PALANG['pMenu_overview'] = 'Sammanfattning';
+$PALANG['pMenu_create_alias'] = 'Lgg till Alias';
+$PALANG['pMenu_create_mailbox'] = 'Lgg till mailadress';
+$PALANG['pMenu_sendmail'] = 'Skicka Mail';
+$PALANG['pMenu_password'] = 'Lsenord';
+$PALANG['pMenu_viewlog'] = 'Visa Logg';
+$PALANG['pMenu_logout'] = 'Logga ut';
+
+$PALANG['pMain_welcome'] = 'Vlkommen till Postfix Admin!';
+$PALANG['pMain_overview'] = 'Lista dina alias och mailadresser. Du kan editera / radera dem hr.';
+$PALANG['pMain_create_alias'] = 'Skapa nytt alias i din domn.';
+$PALANG['pMain_create_mailbox'] = 'Skapa ny mailadress fr din domn.';
+$PALANG['pMain_sendmail'] = 'Skicka ett mail till en av mailadresserna.';
+$PALANG['pMain_password'] = 'ndra lsenord fr adminkontot.';
+$PALANG['pMain_viewlog'] = 'Visa loggfiler.';
+$PALANG['pMain_logout'] = 'Logga ut frn systemet';
+
+$PALANG['pOverview_disabled'] = 'Disabled';
+$PALANG['pOverview_unlimited'] = 'Unlimited';
+$PALANG['pOverview_title'] = ':: Defined Domains';
+$PALANG['pOverview_up_arrow'] = 'Go Top';
+$PALANG['pOverview_right_arrow'] = 'Next Page';
+$PALANG['pOverview_left_arrow'] = 'Previus Page';
+$PALANG['pOverview_alias_title'] = ':: Alias';
+$PALANG['pOverview_mailbox_title'] = ':: Mailboxes';
+$PALANG['pOverview_button'] = 'Visa';
+$PALANG['pOverview_welcome'] = 'Sammanfattning fr ';
+$PALANG['pOverview_alias_alias_count'] = 'Alias';
+$PALANG['pOverview_alias_mailbox_count'] = 'Mailadresser';
+$PALANG['pOverview_alias_address'] = 'Frn';
+$PALANG['pOverview_alias_goto'] = 'Till';
+$PALANG['pOverview_alias_modified'] = 'Senast ndrad';
+$PALANG['pOverview_mailbox_username'] = 'Epost';
+$PALANG['pOverview_mailbox_name'] = 'Namn';
+$PALANG['pOverview_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pOverview_mailbox_modified'] = 'Senast ndrad';
+$PALANG['pOverview_mailbox_active'] = 'Aktiv';
+
+$PALANG['pOverview_get_domain'] = 'Domn';
+$PALANG['pOverview_get_aliases'] = 'Alias';
+$PALANG['pOverview_get_mailboxes'] = 'Mailadresser';
+$PALANG['pOverview_get_quota'] = 'Mailbox Quota (MB)';
+$PALANG['pOverview_get_modified'] = 'Senast ndrad';
+
+$PALANG['pDelete_delete_error'] = '<span class="error_msg">Kan inte radera data fr ';
+$PALANG['pDelete_domain_error'] = '<span class="error_msg">Detta r inte din domn ';
+
+$PALANG['pCreate_alias_welcome'] = 'Skapa nytt alias fr din domn.';
+$PALANG['pCreate_alias_address'] = 'Alias';
+$PALANG['pCreate_alias_address_text_error1'] = '<br /><span class="error_msg">Detta ALIAS r inte giltigt!</span>';
+$PALANG['pCreate_alias_address_text_error2'] = '<br /><span class="error_msg">Denna epostadress existerar redan, vlj en annan epostadress!</span>';
+$PALANG['pCreate_alias_address_text_error3'] = '<br /><span class="error_msg">Du har redan hgsta tilltna antal alias definierade!</span>';
+$PALANG['pCreate_alias_goto'] = 'Till';
+$PALANG['pCreate_alias_button'] = 'Lgg till Alias';
+$PALANG['pCreate_alias_goto_text'] = 'Vart skall mailen skickas.';
+$PALANG['pCreate_alias_goto_text_error'] = 'Vart mailen skall skickas.<br /><span class="error_msg">TILL data r felaktigt!</span>';
+$PALANG['pCreate_alias_result_error'] = '<span class="error_msg">Kan inte lgga till detta alias i aliastabellen!</span>';
+$PALANG['pCreate_alias_result_succes'] = 'Aliaset har lagts till i aliastabellen!';
+$PALANG['pCreate_alias_catchall_text'] = 'Fr att skapa en catch-all ange ett "*" som alias.<br />Fr domn till domn forwarding anvnd "*@domn.tld" som till.';
+
+$PALANG['pEdit_alias_welcome'] = 'Editera ett alias fr din domn.<br />Ett alias per rad.';
+$PALANG['pEdit_alias_address'] = 'Alias';
+$PALANG['pEdit_alias_address_error'] = '<span class="error_msg">Kan inte hitta detta alias!</span>';
+$PALANG['pEdit_alias_goto'] = 'Till';
+$PALANG['pEdit_alias_goto_text_error1'] = '<span class="error_msg">Du angav inget i Till</span>';
+$PALANG['pEdit_alias_goto_text_error2'] = '<span class="error_msg">Epost adressen du angivit r felaktig: ';
+$PALANG['pEdit_alias_domain_error'] = '<span class="error_msg">Detta r inte din domn: ';
+$PALANG['pEdit_alias_button'] = 'Editera Alias';
+$PALANG['pEdit_alias_result_error'] = '<span class="error_msg">Kan inte modifiera detta alias!</span>';
+
+$PALANG['pCreate_mailbox_welcome'] = 'Skapa en ny lokal mailadress fr din domn.';
+$PALANG['pCreate_mailbox_username'] = 'Anvndarnamn';
+$PALANG['pCreate_mailbox_username_text_error1'] = '<br /><span class="error_msg">EPOSTADRESSEN r inte korrekt!</span>';
+$PALANG['pCreate_mailbox_username_text_error2'] = '<br /><span class="error_msg">Denna epostadress finns redan, ange en annan adress!</span>';
+$PALANG['pCreate_mailbox_username_text_error3'] = '<br /><span class="error_msg">Du har redan skapat max tilltet antal mailadresser!</span>';
+$PALANG['pCreate_mailbox_password'] = 'Lsenord';
+$PALANG['pCreate_mailbox_password2'] = 'Lsenord (igen)';
+$PALANG['pCreate_mailbox_password_text'] = 'Lsenord fr POP3/IMAP';
+$PALANG['pCreate_mailbox_password_text_error'] = 'Lsenord fr POP3/IMAP<br /><span class="error_msg">Lsenorden du angivit r olika!<br />Eller tomma!</span>';
+$PALANG['pCreate_mailbox_name'] = 'Namn';
+$PALANG['pCreate_mailbox_name_text'] = 'Fullstndigt namn';
+$PALANG['pCreate_mailbox_quota'] = 'Quota';
+$PALANG['pCreate_mailbox_quota_text'] = 'MB';
+$PALANG['pCreate_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Quotan du angivit r fr stor!</span>';
+$PALANG['pCreate_mailbox_active'] = 'Aktiv';
+$PALANG['pCreate_mailbox_mail'] = 'Skapa mailadress';
+$PALANG['pCreate_mailbox_button'] = 'Lgg till mailadress';
+$PALANG['pCreate_mailbox_result_error'] = '<span class="error_msg">Kan ej lgga till mailadress i tabellen fr adresser!</span>';
+$PALANG['pCreate_mailbox_result_succes'] = 'Mailadressen har lagts till!';
+
+$PALANG['pEdit_mailbox_welcome'] = 'Editera en mailadress i din domn.';
+$PALANG['pEdit_mailbox_username'] = 'Anvndarnamn';
+$PALANG['pEdit_mailbox_username_error'] = '<span class="error_msg">Kan inte hitta den adressen!</span>';
+$PALANG['pEdit_mailbox_password'] = 'Nytt Lsenord';
+$PALANG['pEdit_mailbox_password2'] = 'Nytt Lsenord (igen)';
+$PALANG['pEdit_mailbox_password_text_error'] = '<span class="error_msg">Lsenorden du angav r olika!</span>';
+$PALANG['pEdit_mailbox_name'] = 'Namn';
+$PALANG['pEdit_mailbox_quota'] = 'Quota';
+$PALANG['pEdit_mailbox_quota_text'] = 'MB';
+$PALANG['pEdit_mailbox_quota_text_error'] = 'MB<br /><span class="error_msg">Quotagrnsen du angett r fr stor!</span>';
+$PALANG['pEdit_mailbox_domain_error'] = '<span class="error_msg">Detta r inte din domn: ';
+$PALANG['pEdit_mailbox_button'] = 'Editera Mailadress';
+$PALANG['pEdit_mailbox_result_error'] = '<span class="error_msg">Kan inte ndra lsenordet!</span>';
+
+$PALANG['pPassword_welcome'] = 'ndra ditt lsenord.';
+$PALANG['pPassword_admin'] = 'Login';
+$PALANG['pPassword_admin_text_error'] = '<span class="error_msg">Det LOGIN du angivit har ingen mailbox kopplad till sig!</span>';
+$PALANG['pPassword_password_current'] = 'Nuvarande Lsenord';
+$PALANG['pPassword_password_current_text_error'] = '<span class="error_msg">Du angav ej korrekt lsenord!</span>';
+$PALANG['pPassword_password'] = 'Nytt Lsenord';
+$PALANG['pPassword_password2'] = 'Nytt Lsenord (igen)';
+$PALANG['pPassword_password_text_error'] = '<span class="error_msg">Lsenorden du angav var olika!<br />Eller r tomma!</span>';
+$PALANG['pPassword_button'] = 'ndra Lsenord';
+$PALANG['pPassword_result_error'] = '<span class="error_msg">Kan inte ndra ditt lsenord!</span>';
+$PALANG['pPassword_result_succes'] = 'Ditt lsenord har ndrats!';
+
+$PALANG['pViewlog_welcome'] = 'Visa dom senaste 10 tgrderna fr ';
+$PALANG['pViewlog_timestamp'] = 'Tidpunkt';
+$PALANG['pViewlog_username'] = 'Admin';
+$PALANG['pViewlog_domain'] = 'Domn';
+$PALANG['pViewlog_action'] = 'tgrd';
+$PALANG['pViewlog_data'] = 'Data';
+
+$PALANG['pViewlog_button'] = 'Kr';
+$PALANG['pViewlog_result_error'] = '<span class="error_msg">Kan inte hitta loggarna!</span>';
+
+$PALANG['pSendmail_welcome'] = 'Skicka ett mail.';
+$PALANG['pSendmail_admin'] = 'Frn';
+$PALANG['pSendmail_to'] = 'Till';
+$PALANG['pSendmail_to_text_error'] = '<span class="error_msg">Till r en ogiltig mailadress eller tomt.!</span>';
+$PALANG['pSendmail_subject'] = 'mne';
+$PALANG['pSendmail_subject_text'] = 'Vlkommen';
+$PALANG['pSendmail_body'] = 'Meddelande';
+$PALANG['pSendmail_button'] = 'Skicka meddelande';
+$PALANG['pSendmail_result_error'] = '<span class="error_msg">Kan inte skapa mailadress!</span>';
+$PALANG['pSendmail_result_succes'] = 'Mailadressen har skapats!';
+
+$PALANG['pAdminMenu_list_admin'] = 'Admin Lista';
+$PALANG['pAdminMenu_list_domain'] = 'Domn Lista';
+$PALANG['pAdminMenu_list_virtual'] = 'Virtuell Lista';
+$PALANG['pAdminMenu_viewlog'] = 'Visa Loggfil';
+$PALANG['pAdminMenu_backup'] = 'Backup';
+$PALANG['pAdminMenu_create_domain_admins'] = 'Domn Admins';
+$PALANG['pAdminMenu_create_admin'] = 'Ny Admin';
+$PALANG['pAdminMenu_create_domain'] = 'Ny Domn';
+$PALANG['pAdminMenu_create_alias'] = 'Lgg till Alias';
+$PALANG['pAdminMenu_create_mailbox'] = 'Lgg till Mailbox';
+
+$PALANG['pAdminList_admin_domain'] = 'Domn';
+$PALANG['pAdminList_admin_username'] = 'Admin';
+$PALANG['pAdminList_admin_count'] = 'Domner';
+$PALANG['pAdminList_admin_modified'] = 'Senast ndrad';
+$PALANG['pAdminList_admin_active'] = 'Aktiv';
+
+$PALANG['pAdminList_domain_domain'] = 'Domn';
+$PALANG['pAdminList_domain_description'] = 'Beskrivning';
+$PALANG['pAdminList_domain_aliases'] = 'Alias';
+$PALANG['pAdminList_domain_mailboxes'] = 'Mailboxar';
+$PALANG['pAdminList_domain_maxquota'] = 'Max Quota (MB)';
+$PALANG['pAdminList_domain_transport'] = 'Transport';
+$PALANG['pAdminList_domain_backupmx'] = 'Backup MX';
+$PALANG['pAdminList_domain_modified'] = 'Senast Modifierad';
+$PALANG['pAdminList_domain_active'] = 'Aktiv';
+
+$PALANG['pAdminList_virtual_button'] = 'Kr';
+$PALANG['pAdminList_virtual_welcome'] = 'Sammanfattning fr ';
+$PALANG['pAdminList_virtual_alias_alias_count'] = 'Alias';
+$PALANG['pAdminList_virtual_alias_mailbox_count'] = 'Mailboxar';
+$PALANG['pAdminList_virtual_alias_address'] = 'Frn';
+$PALANG['pAdminList_virtual_alias_goto'] = 'Till';
+$PALANG['pAdminList_virtual_alias_modified'] = 'Senast ndrad';
+$PALANG['pAdminList_virtual_mailbox_username'] = 'Epostadress';
+$PALANG['pAdminList_virtual_mailbox_name'] = 'Namn';
+$PALANG['pAdminList_virtual_mailbox_quota'] = 'Quota (MB)';
+$PALANG['pAdminList_virtual_mailbox_modified'] = 'Senast ndrad';
+$PALANG['pAdminList_virtual_mailbox_active'] = 'Aktiv';
+
+$PALANG['pAdminCreate_domain_welcome'] = 'Lgg till ny domn';
+$PALANG['pAdminCreate_domain_domain'] = 'Domn';
+$PALANG['pAdminCreate_domain_domain_text_error'] = '<span class="error_msg">Den domnen finns redan!</span>';
+$PALANG['pAdminCreate_domain_description'] = 'Beskrivning';
+$PALANG['pAdminCreate_domain_aliases'] = 'Alias';
+$PALANG['pAdminCreate_domain_aliases_text'] = '0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminCreate_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminCreate_domain_mailboxes_text'] = '0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminCreate_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminCreate_domain_maxquota_text'] = 'MB<br /> 0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminCreate_domain_transport'] = 'Transport';
+$PALANG['pAdminCreate_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminCreate_domain_defaultaliases'] = 'Skapa standard alias';
+$PALANG['pAdminCreate_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminCreate_domain_button'] = 'Lgg till domn';
+$PALANG['pAdminCreate_domain_result_error'] = '<span class="error_msg">Kan inte skapa domnen!</span>';
+$PALANG['pAdminCreate_domain_result_succes'] = 'Domnen har skapats!';
+
+$PALANG['pAdminEdit_domain_welcome'] = 'Editera en domn';
+$PALANG['pAdminEdit_domain_domain'] = 'Domn';
+$PALANG['pAdminEdit_domain_description'] = 'Beskrivning';
+$PALANG['pAdminEdit_domain_aliases'] = 'Alias';
+$PALANG['pAdminEdit_domain_aliases_text'] = '0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminEdit_domain_mailboxes'] = 'Mailboxes';
+$PALANG['pAdminEdit_domain_mailboxes_text'] = '0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminEdit_domain_maxquota'] = 'Max Quota';
+$PALANG['pAdminEdit_domain_maxquota_text'] = 'MB<br /> 0 = avaktivera | -1 = obegrnsat';
+$PALANG['pAdminEdit_domain_transport'] = 'Transport';
+$PALANG['pAdminEdit_domain_transport_text'] = 'Define transport';
+$PALANG['pAdminEdit_domain_backupmx'] = 'Mail server is backup MX';
+$PALANG['pAdminEdit_domain_active'] = 'Aktiv';
+$PALANG['pAdminEdit_domain_button'] = 'Editera Domn';
+$PALANG['pAdminEdit_domain_result_error'] = '<span class="error_msg">Kan inte modifiera domnen!</span>';
+
+$PALANG['pAdminCreate_admin_welcome'] = 'Lgg till ny domnadmin';
+$PALANG['pAdminCreate_admin_username'] = 'Admin';
+$PALANG['pAdminCreate_admin_username_text'] = 'Epostadress';
+$PALANG['pAdminCreate_admin_username_text_error1'] = 'Epostadress<br /><span class="error_msg">Admin r inte en giltig epostadress!</span>';
+$PALANG['pAdminCreate_admin_username_text_error2'] = 'Email address<br /><span class="error_msg">Denna admin finns redan eller r inte giltig</span>';
+$PALANG['pAdminCreate_admin_password'] = 'Lsenord';
+$PALANG['pAdminCreate_admin_password2'] = 'Lsenord (igen)';
+$PALANG['pAdminCreate_admin_password_text_error'] = '<span class="error_msg">Lsenorden du angav r olika!<br />Eller r tomma!</span>';
+$PALANG['pAdminCreate_admin_button'] = 'Lgg till Admin';
+$PALANG['pAdminCreate_admin_result_error'] = '<span class="error_msg">Kan inte lgga till Admin!</span>';
+$PALANG['pAdminCreate_admin_result_succes'] = 'Admin har lagts till!';
+$PALANG['pAdminCreate_admin_address'] = 'Domn';
+
+$PALANG['pAdminEdit_admin_welcome'] = 'Editera en domnadmin';
+$PALANG['pAdminEdit_admin_username'] = 'Admin';
+$PALANG['pAdminEdit_admin_password'] = 'Lsenord';
+$PALANG['pAdminEdit_admin_password2'] = 'Lsenord (igen)';
+$PALANG['pAdminEdit_admin_password_text_error'] = '<span class="error_msg">Lsenorden du angav r olika!<br />Eller r tomma!</span>';
+$PALANG['pAdminEdit_admin_active'] = 'Aktiv';
+$PALANG['pAdminEdit_admin_button'] = 'Editera Admin';
+$PALANG['pAdminEdit_admin_result_error'] = '<span class="error_msg">Kan inte ndra admin!</span>';
+$PALANG['pAdminEdit_admin_result_succes'] = 'Admin har ndrats!';
+
+$PALANG['pUsersLogin_welcome'] = 'Mailbox anvndare logga in hr fr att ndra ert lsenord och alias.';
+$PALANG['pUsersLogin_username'] = 'Login (epostadress)';
+$PALANG['pUsersLogin_password'] = 'Lsenord';
+$PALANG['pUsersLogin_button'] = 'Login';
+$PALANG['pUsersLogin_username_incorrect'] = 'Ditt login r felaktigt. Logga in med din epostadress!';
+$PALANG['pUsersLogin_password_incorrect'] = 'Ditt lsenord r felaktigt!';
+
+$PALANG['pUsersMenu_vacation'] = 'Autosvar';
+$PALANG['pUsersMenu_edit_alias'] = 'ndra din forwardadress';
+$PALANG['pUsersMenu_password'] = 'ndra Lsenord';
+
+$PALANG['pUsersMain_vacation'] = 'Stll in ett "out of office" meddelande eller autosvar fr din epost.';
+$PALANG['pUsersMain_edit_alias'] = 'ndra din epost forwardadress.';
+$PALANG['pUsersMain_password'] = 'ndra ditt nuvarande lsenord.';
+
+$PALANG['pUsersVacation_welcome'] = 'Auto Svar.';
+$PALANG['pUsersVacation_welcome_text'] = 'Du har redan ett autosvar meddelande definierat!';
+$PALANG['pUsersVacation_subject'] = 'rende';
+$PALANG['pUsersVacation_subject_text'] = 'Out of Office';
+$PALANG['pUsersVacation_body'] = 'Text';
+$PALANG['pUsersVacation_body_text'] = <<<EOM
+Jag r borta frn <datum> till <datum>.
+Fr brdskande renden kan ni kontakta <kontakt person>.
+EOM;
+$PALANG['pUsersVacation_button_away'] = 'Frsvinner';
+$PALANG['pUsersVacation_button_back'] = 'Kommer Tillbaka';
+$PALANG['pUsersVacation_result_error'] = '<span class="error_msg">Kan inte uppdatera dina autosvar instllningar!</span>';
+$PALANG['pUsersVacation_result_succes'] = 'Ditt autosvar har taqits bort!';
+
+$PALANG['pCreate_dbLog_createmailbox'] = 'create mailbox';
+$PALANG['pCreate_dbLog_createalias'] = 'create alias';
+$PALANG['pDelete_dbLog_deletealias'] = 'delete alias';
+$PALANG['pDelete_dbLog_deletemailbox'] = 'delete mailbox';
+
+$PALANG['pEdit_dbLog_editactive'] = 'change active state';
+$PALANG['pEdit_dbLog_editalias'] = 'edit alias';
+$PALANG['pEdit_dbLog_editmailbox'] = 'edit mailbox';
+
+$PALANG['pSearch_welcome'] = 'Searching for: ';
+?>
diff --git a/languages/tr.lang b/languages/tr.lang
new file mode 100644
index 0000000..7b8ef94
--- /dev/null
+++ b/languages/tr.lang
@@ -0,0 +1,295 @@
+<?php
+//
+// Language file Trke
+// by Onuryalazi
+//
+$PALANG['YES'] = 'EVET';
+$PALANG['NO'] = 'HAYIR';
+$PALANG['edit'] = 'dzenle';
+$PALANG['del'] = 'sil';
+$PALANG['confirm'] = 'Bunu silmek istediinizden emin misiniz?\n';
+$PALANG['confirm_domain'] = 'Bu domain iin tm kaytlar silmek istediinizden emin misiniz? Bu ilem geri alnamaz!\n';
+$PALANG['check_update'] = 'Check for update';
+
+$PALANG['pLogin_welcome'] = 'Posta Yneticileri buradan domainlerinizi ynetmek iin giri yapabilirsiniz.';
+$PALANG['pLogin_username'] = 'Kullanc ad (eposta)';
+$PALANG['pLogin_password'] = 'ifre';
+$PALANG['pLogin_button'] = 'Giri';
+$PALANG['pLogin_username_incorrect'] = '<span class="error_msg">Kullanc adnnz doru deil. E-posta adresinizi kontrol ediniz.</span>';
+$PALANG['pLogin_password_incorrect'] = '<span class="error_msg">ifreniz doru deil!</span>';
+$PALANG['pLogin_login_users'] = 'Kullanc ilemlerine girmek iin buray kullannz.';
+
+$