Sfoglia il codice sorgente

Merge pull request #1 from serghey-rodin/master

update with master
Estratos Consulting 11 anni fa
parent
commit
e00ed17011

+ 1 - 1
bin/v-add-user

@@ -28,7 +28,7 @@ EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9"
 is_user_free() {
 is_user_free() {
     check_sysuser=$(cut -f 1 -d : /etc/passwd | grep -w "$user" )
     check_sysuser=$(cut -f 1 -d : /etc/passwd | grep -w "$user" )
     if [ ! -z "$check_sysuser" ] || [ -e "$USER_DATA" ]; then
     if [ ! -z "$check_sysuser" ] || [ -e "$USER_DATA" ]; then
-        echo "Error: user $user exist"
+        echo "Error: user $user exists"
         log_event "$E_EXISTS" "$EVENT"
         log_event "$E_EXISTS" "$EVENT"
         exit $E_EXISTS
         exit $E_EXISTS
     fi
     fi

+ 3 - 9
func/domain.sh

@@ -327,15 +327,9 @@ is_web_domain_cert_valid() {
     fi
     fi
 
 
     if [ -e "$ssl_dir/$domain.ca" ]; then
     if [ -e "$ssl_dir/$domain.ca" ]; then
-        ca_vrf=$(openssl verify $ssl_dir/$domain.ca 2>/dev/null |grep 'OK')
-        if [ -z "$ca_vrf" ]; then
-            echo "Error: ssl certificate authority is not valid"
-            log_event "$E_INVALID" "$EVENT"
-            exit $E_INVALID
-        fi
-
-        crt_vrf=$(openssl verify -untrusted $ssl_dir/$domain.ca \
-            $ssl_dir/$domain.crt 2>/dev/null |grep 'OK')
+        crt_vrf=$(openssl verify -purpose sslserver \
+            -CAfile $ssl_dir/$domain.ca $ssl_dir/$domain.crt 2>/dev/null |\
+            grep 'OK')
         if [ -z "$crt_vrf" ]; then
         if [ -z "$crt_vrf" ]; then
             echo "Error: root or/and intermediate cerificate not found"
             echo "Error: root or/and intermediate cerificate not found"
             log_event "$E_NOTEXIST" "$EVENT"
             log_event "$E_NOTEXIST" "$EVENT"

+ 80 - 45
install/debian/exim4.conf.template

@@ -1,14 +1,18 @@
-##########################################################################
+######################################################################
+#                                                                    #
+#          Exim configuration file for Vesta Control Panel           #
+#                                                                    #
+######################################################################
+
 #SPAMASSASSIN = yes
 #SPAMASSASSIN = yes
-SPAM_SCORE = 50
-CLAMD =  yes
-##########################################################################
+#SPAM_SCORE = 50
+#CLAMD =  yes
 
 
 domainlist local_domains = dsearch;/etc/exim4/domains/
 domainlist local_domains = dsearch;/etc/exim4/domains/
 domainlist relay_to_domains = dsearch;/etc/exim4/domains/
 domainlist relay_to_domains = dsearch;/etc/exim4/domains/
-hostlist   relay_from_hosts = 127.0.0.1
-hostlist   whitelist = net-iplsearch;/etc/exim4/white-blocks.conf
-hostlist   spammers = net-iplsearch;/etc/exim4/spam-blocks.conf
+hostlist relay_from_hosts = 127.0.0.1
+hostlist whitelist = net-iplsearch;/etc/exim4/white-blocks.conf
+hostlist spammers = net-iplsearch;/etc/exim4/spam-blocks.conf
 no_local_from_check
 no_local_from_check
 untrusted_set_sender = *
 untrusted_set_sender = *
 acl_smtp_connect = acl_check_spammers
 acl_smtp_connect = acl_check_spammers
@@ -43,43 +47,38 @@ DKIM_FILE = /etc/exim4/domains/${lc:${domain:$h_from:}}/dkim.pem
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
 begin acl
 begin acl
-##########################################################################
+
 acl_check_spammers:
 acl_check_spammers:
-  accept hosts = +whitelist
+  accept  hosts         = +whitelist
+
   drop    message       = Your host in blacklist on this server.
   drop    message       = Your host in blacklist on this server.
           log_message   = Host in blacklist
           log_message   = Host in blacklist
           hosts         = +spammers
           hosts         = +spammers
-  deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
-          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}
+
   accept
   accept
 
 
+
 acl_check_mail:
 acl_check_mail:
-  deny
-          condition     = ${if eq{$sender_helo_name}{}}
+  deny    condition     = ${if eq{$sender_helo_name}{}}
           message       = HELO required before MAIL
           message       = HELO required before MAIL
-#  drop
-#          condition     = ${if isip{$sender_helo_name}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
+
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           delay         = 45s
           delay         = 45s
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N^\[\N}{no}{yes}}
-#          condition     = ${if match{$sender_helo_name}{\N\.\N}{no}{yes}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-  drop
-          condition     = ${if isip{$sender_helo_name}}
+
+  drop    condition     = ${if isip{$sender_helo_name}}
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N\.$\N}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-#  drop    message       = "REJECTED - Bad HELO - Host impersonating [$sender_helo_name]"
-#          condition     = ${if match{$sender_helo_name}{$primary_hostname}}
+
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
           message       = $interface_address is _my_ address
           message       = $interface_address is _my_ address
+
   accept
   accept
 
 
 
 
@@ -102,6 +101,10 @@ acl_check_rcpt:
   accept  authenticated = *
   accept  authenticated = *
           control       = submission/domain=
           control       = submission/domain=
 
 
+  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+          hosts         = !+whitelist
+          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}
+
   require message       = relay not permitted
   require message       = relay not permitted
           domains       = +local_domains : +relay_to_domains
           domains       = +local_domains : +relay_to_domains
 
 
@@ -113,27 +116,30 @@ acl_check_rcpt:
 
 
 .ifdef CLAMD
 .ifdef CLAMD
   warn    set acl_m0    = no
   warn    set acl_m0    = no
+
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antivirus}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antivirus}{yes}{no}}
           set acl_m0    = yes
           set acl_m0    = yes
 .endif
 .endif
+
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
   warn    set acl_m1    = no
   warn    set acl_m1    = no
+
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antispam}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antispam}{yes}{no}}
           set acl_m1    = yes
           set acl_m1    = yes
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_data:
 acl_check_data:
 .ifdef CLAMD
 .ifdef CLAMD
-         deny message   = Message contains a virus ($malware_name) and has been rejected
+  deny   message        = Message contains a virus ($malware_name) and has been rejected
          malware        = *
          malware        = *
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
 .endif
 .endif
 
 
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
-  warn
-         !authenticated = *
+  warn   !authenticated = *
          hosts          = !+relay_from_hosts
          hosts          = !+relay_from_hosts
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
@@ -142,23 +148,29 @@ acl_check_data:
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Report: $spam_report
          add_header     = X-Spam-Report: $spam_report
          set acl_m2     = $spam_score_int
          set acl_m2     = $spam_score_int
-  warn
-         condition      = ${if !eq{$acl_m2}{} {yes}{no}}
+
+  warn   condition      = ${if !eq{$acl_m2}{} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          add_header     = X-Spam-Status: Yes
          add_header     = X-Spam-Status: Yes
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_mime:
 acl_check_mime:
-  deny   message       = Blacklisted file extension detected
-         condition     = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+  deny   message        = Blacklisted file extension detected
+         condition      = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+
   accept
   accept
 
 
-##########################################################################
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
 begin authenticators
 begin authenticators
-##########################################################################
+
 dovecot_plain:
 dovecot_plain:
   driver = dovecot
   driver = dovecot
   public_name = PLAIN
   public_name = PLAIN
@@ -171,9 +183,14 @@ dovecot_login:
   server_socket = /var/run/dovecot/auth-client
   server_socket = /var/run/dovecot/auth-client
   server_set_id = $auth1
   server_set_id = $auth1
 
 
-##########################################################################
+
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
 begin routers
 begin routers
-##########################################################################
+
 #smarthost:
 #smarthost:
 #  driver = manualroute
 #  driver = manualroute
 #  domains = ! +local_domains
 #  domains = ! +local_domains
@@ -253,9 +270,12 @@ terminate_alias:
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim4/domains/$domain/aliases}{true}{false}}
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim4/domains/$domain/aliases}{true}{false}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
 begin transports
 begin transports
-##########################################################################
+
 remote_smtp:
 remote_smtp:
   driver = smtp
   driver = smtp
   #helo_data = $sender_address_domain
   #helo_data = $sender_address_domain
@@ -265,7 +285,6 @@ remote_smtp:
   dkim_canon = relaxed
   dkim_canon = relaxed
   dkim_strict = 0
   dkim_strict = 0
 
 
-
 procmail:
 procmail:
   driver = pipe
   driver = pipe
   command = "/usr/bin/procmail -d $local_part"
   command = "/usr/bin/procmail -d $local_part"
@@ -306,7 +325,7 @@ local_spam_delivery:
   delivery_date_add
   delivery_date_add
   envelope_to_add
   envelope_to_add
   return_path_add
   return_path_add
-  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part/.spam"
+  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part/.Spam"
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}M
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}M
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_warn_threshold = 75%
   quota_warn_threshold = 75%
@@ -335,8 +354,24 @@ devnull:
   driver = appendfile
   driver = appendfile
   file = /dev/null
   file = /dev/null
 
 
-##########################################################################
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
 begin retry
 begin retry
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
-##########################################################################
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
 begin rewrite
 begin rewrite
+
+
+
+######################################################################

+ 75 - 41
install/rhel/exim-smarthost.conf

@@ -1,14 +1,18 @@
-##########################################################################
+######################################################################
+#                                                                    #
+#          Exim configuration file for Vesta Control Panel           #
+#                                                                    #
+######################################################################
+
 #SPAMASSASSIN = yes
 #SPAMASSASSIN = yes
-SPAM_SCORE = 10
+#SPAM_SCORE = 50
 #CLAMD =  yes
 #CLAMD =  yes
-##########################################################################
 
 
 domainlist local_domains = dsearch;/etc/exim/domains/
 domainlist local_domains = dsearch;/etc/exim/domains/
 domainlist relay_to_domains = dsearch;/etc/exim/domains/
 domainlist relay_to_domains = dsearch;/etc/exim/domains/
-hostlist   relay_from_hosts = 127.0.0.1
-hostlist   whitelist = net-iplsearch;/etc/exim/white-blocks.conf
-hostlist   spammers = net-iplsearch;/etc/exim/spam-blocks.conf
+hostlist relay_from_hosts = 127.0.0.1
+hostlist whitelist = net-iplsearch;/etc/exim/white-blocks.conf
+hostlist spammers = net-iplsearch;/etc/exim/spam-blocks.conf
 no_local_from_check
 no_local_from_check
 untrusted_set_sender = *
 untrusted_set_sender = *
 acl_smtp_connect = acl_check_spammers
 acl_smtp_connect = acl_check_spammers
@@ -43,43 +47,37 @@ DKIM_FILE = /etc/exim/domains/${lc:${domain:$h_from:}}/dkim.pem
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 
 
 
 
-##########################################################################
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
 begin acl
 begin acl
-##########################################################################
+
 acl_check_spammers:
 acl_check_spammers:
-  accept hosts = +whitelist
+  accept  hosts         = +whitelist
+
   drop    message       = Your host in blacklist on this server.
   drop    message       = Your host in blacklist on this server.
           log_message   = Host in blacklist
           log_message   = Host in blacklist
           hosts         = +spammers
           hosts         = +spammers
-  deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
-          dnslists      = ${readfile {/etc/exim/dnsbl.conf}{:}}
+
   accept
   accept
 
 
+
 acl_check_mail:
 acl_check_mail:
-  deny
-          condition     = ${if eq{$sender_helo_name}{}}
+  deny    condition     = ${if eq{$sender_helo_name}{}}
           message       = HELO required before MAIL
           message       = HELO required before MAIL
-#  drop
-#          condition     = ${if isip{$sender_helo_name}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
+
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           delay         = 45s
           delay         = 45s
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N^\[\N}{no}{yes}}
-#          condition     = ${if match{$sender_helo_name}{\N\.\N}{no}{yes}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-  drop
-          condition     = ${if isip{$sender_helo_name}}
+
+  drop    condition     = ${if isip{$sender_helo_name}}
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N\.$\N}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-#  drop    message       = "REJECTED - Bad HELO - Host impersonating [$sender_helo_name]"
-#          condition     = ${if match{$sender_helo_name}{$primary_hostname}}
+
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
           message       = $interface_address is _my_ address
           message       = $interface_address is _my_ address
+
   accept
   accept
 
 
 
 
@@ -102,6 +100,10 @@ acl_check_rcpt:
   accept  authenticated = *
   accept  authenticated = *
           control       = submission/domain=
           control       = submission/domain=
 
 
+  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+          hosts         = !+whitelist
+          dnslists      = ${readfile {/etc/exim/dnsbl.conf}{:}}
+
   require message       = relay not permitted
   require message       = relay not permitted
           domains       = +local_domains : +relay_to_domains
           domains       = +local_domains : +relay_to_domains
 
 
@@ -113,27 +115,30 @@ acl_check_rcpt:
 
 
 .ifdef CLAMD
 .ifdef CLAMD
   warn    set acl_m0    = no
   warn    set acl_m0    = no
+
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antivirus}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antivirus}{yes}{no}}
           set acl_m0    = yes
           set acl_m0    = yes
 .endif
 .endif
+
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
   warn    set acl_m1    = no
   warn    set acl_m1    = no
+
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antispam}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antispam}{yes}{no}}
           set acl_m1    = yes
           set acl_m1    = yes
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_data:
 acl_check_data:
 .ifdef CLAMD
 .ifdef CLAMD
-         deny message   = Message contains a virus ($malware_name) and has been rejected
+  deny   message        = Message contains a virus ($malware_name) and has been rejected
          malware        = *
          malware        = *
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
 .endif
 .endif
 
 
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
-  warn
-         !authenticated = *
+  warn   !authenticated = *
          hosts          = !+relay_from_hosts
          hosts          = !+relay_from_hosts
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
@@ -142,23 +147,29 @@ acl_check_data:
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Report: $spam_report
          add_header     = X-Spam-Report: $spam_report
          set acl_m2     = $spam_score_int
          set acl_m2     = $spam_score_int
-  warn
-         condition      = ${if !eq{$acl_m2}{} {yes}{no}}
+
+  warn   condition      = ${if !eq{$acl_m2}{} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          add_header     = X-Spam-Status: Yes
          add_header     = X-Spam-Status: Yes
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_mime:
 acl_check_mime:
   deny   message       = Blacklisted file extension detected
   deny   message       = Blacklisted file extension detected
          condition     = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
          condition     = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+
   accept
   accept
 
 
-##########################################################################
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
 begin authenticators
 begin authenticators
-##########################################################################
+
 login:
 login:
   driver = plaintext
   driver = plaintext
   public_name = LOGIN
   public_name = LOGIN
@@ -178,9 +189,13 @@ dovecot_login:
   server_set_id = $auth1
   server_set_id = $auth1
 
 
 
 
-##########################################################################
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
 begin routers
 begin routers
-##########################################################################
+
 smarthost:
 smarthost:
   driver = manualroute
   driver = manualroute
   domains = ! +local_domains
   domains = ! +local_domains
@@ -258,9 +273,12 @@ terminate_alias:
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}{true}{false}}
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}{true}{false}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
 begin transports
 begin transports
-##########################################################################
+
 remote_smtp:
 remote_smtp:
   driver = smtp
   driver = smtp
   dkim_domain = DKIM_DOMAIN
   dkim_domain = DKIM_DOMAIN
@@ -314,7 +332,7 @@ local_spam_delivery:
   delivery_date_add
   delivery_date_add
   envelope_to_add
   envelope_to_add
   return_path_add
   return_path_add
-  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}/mail/$domain/$local_part/.spam"
+  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}/mail/$domain/$local_part/.Spam"
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}M
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}M
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_warn_threshold = 75%
   quota_warn_threshold = 75%
@@ -343,8 +361,24 @@ devnull:
   driver = appendfile
   driver = appendfile
   file = /dev/null
   file = /dev/null
 
 
-##########################################################################
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
 begin retry
 begin retry
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
-##########################################################################
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
 begin rewrite
 begin rewrite
+
+
+
+######################################################################

+ 79 - 45
install/rhel/exim.conf

@@ -1,14 +1,18 @@
-##########################################################################
+######################################################################
+#                                                                    #
+#          Exim configuration file for Vesta Control Panel           #
+#                                                                    #
+######################################################################
+
 #SPAMASSASSIN = yes
 #SPAMASSASSIN = yes
-SPAM_SCORE = 50
+#SPAM_SCORE = 50
 #CLAMD =  yes
 #CLAMD =  yes
-##########################################################################
 
 
 domainlist local_domains = dsearch;/etc/exim/domains/
 domainlist local_domains = dsearch;/etc/exim/domains/
 domainlist relay_to_domains = dsearch;/etc/exim/domains/
 domainlist relay_to_domains = dsearch;/etc/exim/domains/
-hostlist   relay_from_hosts = 127.0.0.1
-hostlist   whitelist = net-iplsearch;/etc/exim/white-blocks.conf
-hostlist   spammers = net-iplsearch;/etc/exim/spam-blocks.conf
+hostlist relay_from_hosts = 127.0.0.1
+hostlist whitelist = net-iplsearch;/etc/exim/white-blocks.conf
+hostlist spammers = net-iplsearch;/etc/exim/spam-blocks.conf
 no_local_from_check
 no_local_from_check
 untrusted_set_sender = *
 untrusted_set_sender = *
 acl_smtp_connect = acl_check_spammers
 acl_smtp_connect = acl_check_spammers
@@ -26,8 +30,8 @@ av_scanner = clamd: /var/run/clamav/clamd.sock
 .endif
 .endif
 
 
 tls_advertise_hosts = *
 tls_advertise_hosts = *
-tls_certificate = /etc/pki/tls/certs/exim.pem
-tls_privatekey = /etc/pki/tls/private/exim.pem
+tls_certificate = /usr/local/vesta/ssl/certificate.crt
+tls_privatekey = /usr/local/vesta/ssl/certificate.key
 
 
 daemon_smtp_ports = 25 : 465 : 587 : 2525
 daemon_smtp_ports = 25 : 465 : 587 : 2525
 tls_on_connect_ports = 465
 tls_on_connect_ports = 465
@@ -43,43 +47,38 @@ DKIM_FILE = /etc/exim/domains/${lc:${domain:$h_from:}}/dkim.pem
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
 begin acl
 begin acl
-##########################################################################
+
 acl_check_spammers:
 acl_check_spammers:
-  accept hosts = +whitelist
+  accept  hosts         = +whitelist
+
   drop    message       = Your host in blacklist on this server.
   drop    message       = Your host in blacklist on this server.
           log_message   = Host in blacklist
           log_message   = Host in blacklist
           hosts         = +spammers
           hosts         = +spammers
-  deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
-          dnslists      = ${readfile {/etc/exim/dnsbl.conf}{:}}
+
   accept
   accept
 
 
+
 acl_check_mail:
 acl_check_mail:
-  deny
-          condition     = ${if eq{$sender_helo_name}{}}
+  deny    condition     = ${if eq{$sender_helo_name}{}}
           message       = HELO required before MAIL
           message       = HELO required before MAIL
-#  drop
-#          condition     = ${if isip{$sender_helo_name}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
+
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           delay         = 45s
           delay         = 45s
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N^\[\N}{no}{yes}}
-#          condition     = ${if match{$sender_helo_name}{\N\.\N}{no}{yes}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-  drop
-          condition     = ${if isip{$sender_helo_name}}
+
+  drop    condition     = ${if isip{$sender_helo_name}}
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N\.$\N}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-#  drop    message       = "REJECTED - Bad HELO - Host impersonating [$sender_helo_name]"
-#          condition     = ${if match{$sender_helo_name}{$primary_hostname}}
+
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
           message       = $interface_address is _my_ address
           message       = $interface_address is _my_ address
+
   accept
   accept
 
 
 
 
@@ -102,6 +101,10 @@ acl_check_rcpt:
   accept  authenticated = *
   accept  authenticated = *
           control       = submission/domain=
           control       = submission/domain=
 
 
+  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+          hosts         = !+whitelist
+          dnslists      = ${readfile {/etc/exim/dnsbl.conf}{:}}
+
   require message       = relay not permitted
   require message       = relay not permitted
           domains       = +local_domains : +relay_to_domains
           domains       = +local_domains : +relay_to_domains
 
 
@@ -113,27 +116,30 @@ acl_check_rcpt:
 
 
 .ifdef CLAMD
 .ifdef CLAMD
   warn    set acl_m0    = no
   warn    set acl_m0    = no
+
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antivirus}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antivirus}{yes}{no}}
           set acl_m0    = yes
           set acl_m0    = yes
 .endif
 .endif
+
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
   warn    set acl_m1    = no
   warn    set acl_m1    = no
+
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antispam}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim/domains/$domain/antispam}{yes}{no}}
           set acl_m1    = yes
           set acl_m1    = yes
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_data:
 acl_check_data:
 .ifdef CLAMD
 .ifdef CLAMD
-         deny message   = Message contains a virus ($malware_name) and has been rejected
+  deny   message        = Message contains a virus ($malware_name) and has been rejected
          malware        = *
          malware        = *
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
 .endif
 .endif
 
 
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
-  warn
-         !authenticated = *
+  warn   !authenticated = *
          hosts          = !+relay_from_hosts
          hosts          = !+relay_from_hosts
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
@@ -142,23 +148,29 @@ acl_check_data:
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Report: $spam_report
          add_header     = X-Spam-Report: $spam_report
          set acl_m2     = $spam_score_int
          set acl_m2     = $spam_score_int
-  warn
-         condition      = ${if !eq{$acl_m2}{} {yes}{no}}
+
+  warn   condition      = ${if !eq{$acl_m2}{} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          add_header     = X-Spam-Status: Yes
          add_header     = X-Spam-Status: Yes
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_mime:
 acl_check_mime:
-  deny   message       = Blacklisted file extension detected
-         condition     = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+  deny   message        = Blacklisted file extension detected
+         condition      = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+
   accept
   accept
 
 
-##########################################################################
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
 begin authenticators
 begin authenticators
-##########################################################################
+
 dovecot_plain:
 dovecot_plain:
   driver = dovecot
   driver = dovecot
   public_name = PLAIN
   public_name = PLAIN
@@ -171,9 +183,14 @@ dovecot_login:
   server_socket = /var/run/dovecot/auth-client
   server_socket = /var/run/dovecot/auth-client
   server_set_id = $auth1
   server_set_id = $auth1
 
 
-##########################################################################
+
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
 begin routers
 begin routers
-##########################################################################
+
 #smarthost:
 #smarthost:
 #  driver = manualroute
 #  driver = manualroute
 #  domains = ! +local_domains
 #  domains = ! +local_domains
@@ -253,9 +270,12 @@ terminate_alias:
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}{true}{false}}
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/domains/$domain/aliases}{true}{false}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
 begin transports
 begin transports
-##########################################################################
+
 remote_smtp:
 remote_smtp:
   driver = smtp
   driver = smtp
   #helo_data = $sender_address_domain
   #helo_data = $sender_address_domain
@@ -265,7 +285,6 @@ remote_smtp:
   dkim_canon = relaxed
   dkim_canon = relaxed
   dkim_strict = 0
   dkim_strict = 0
 
 
-
 procmail:
 procmail:
   driver = pipe
   driver = pipe
   command = "/usr/bin/procmail -d $local_part"
   command = "/usr/bin/procmail -d $local_part"
@@ -335,8 +354,23 @@ devnull:
   driver = appendfile
   driver = appendfile
   file = /dev/null
   file = /dev/null
 
 
-##########################################################################
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
 begin retry
 begin retry
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
-##########################################################################
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
 begin rewrite
 begin rewrite
+
+
+
+######################################################################

+ 80 - 45
install/ubuntu/exim4.conf.template

@@ -1,14 +1,18 @@
-##########################################################################
+######################################################################
+#                                                                    #
+#          Exim configuration file for Vesta Control Panel           #
+#                                                                    #
+######################################################################
+
 #SPAMASSASSIN = yes
 #SPAMASSASSIN = yes
-SPAM_SCORE = 50
-CLAMD =  yes
-##########################################################################
+#SPAM_SCORE = 50
+#CLAMD =  yes
 
 
 domainlist local_domains = dsearch;/etc/exim4/domains/
 domainlist local_domains = dsearch;/etc/exim4/domains/
 domainlist relay_to_domains = dsearch;/etc/exim4/domains/
 domainlist relay_to_domains = dsearch;/etc/exim4/domains/
-hostlist   relay_from_hosts = 127.0.0.1
-hostlist   whitelist = net-iplsearch;/etc/exim4/white-blocks.conf
-hostlist   spammers = net-iplsearch;/etc/exim4/spam-blocks.conf
+hostlist relay_from_hosts = 127.0.0.1
+hostlist whitelist = net-iplsearch;/etc/exim4/white-blocks.conf
+hostlist spammers = net-iplsearch;/etc/exim4/spam-blocks.conf
 no_local_from_check
 no_local_from_check
 untrusted_set_sender = *
 untrusted_set_sender = *
 acl_smtp_connect = acl_check_spammers
 acl_smtp_connect = acl_check_spammers
@@ -43,43 +47,38 @@ DKIM_FILE = /etc/exim4/domains/${lc:${domain:$h_from:}}/dkim.pem
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
 begin acl
 begin acl
-##########################################################################
+
 acl_check_spammers:
 acl_check_spammers:
-  accept hosts = +whitelist
+  accept  hosts         = +whitelist
+
   drop    message       = Your host in blacklist on this server.
   drop    message       = Your host in blacklist on this server.
           log_message   = Host in blacklist
           log_message   = Host in blacklist
           hosts         = +spammers
           hosts         = +spammers
-  deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\\n$dnslist_text
-          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}
+
   accept
   accept
 
 
+
 acl_check_mail:
 acl_check_mail:
-  deny
-          condition     = ${if eq{$sender_helo_name}{}}
+  deny    condition     = ${if eq{$sender_helo_name}{}}
           message       = HELO required before MAIL
           message       = HELO required before MAIL
-#  drop
-#          condition     = ${if isip{$sender_helo_name}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
+
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
   drop    message       = Helo name contains a ip address (HELO was $sender_helo_name) and not is valid
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match{$sender_helo_name}{\N((\d{1,3}[.-]\d{1,3}[.-]\d{1,3}[.-]\d{1,3})|([0-9a-f]{8})|([0-9A-F]{8}))\N}{yes}{no}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           condition     = ${if match {${lookup dnsdb{>: defer_never,ptr=$sender_host_address}}\}{$sender_helo_name}{no}{yes}}
           delay         = 45s
           delay         = 45s
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N^\[\N}{no}{yes}}
-#          condition     = ${if match{$sender_helo_name}{\N\.\N}{no}{yes}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-  drop
-          condition     = ${if isip{$sender_helo_name}}
+
+  drop    condition     = ${if isip{$sender_helo_name}}
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
           message       = Access denied - Invalid HELO name (See RFC2821 4.1.3)
-#  drop
-#          condition     = ${if match{$sender_helo_name}{\N\.$\N}}
-#          message       = Access denied - Invalid HELO name (See RFC2821 4.1.1.1)
-#  drop    message       = "REJECTED - Bad HELO - Host impersonating [$sender_helo_name]"
-#          condition     = ${if match{$sender_helo_name}{$primary_hostname}}
+
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
   drop    condition     = ${if eq{[$interface_address]}{$sender_helo_name}}
           message       = $interface_address is _my_ address
           message       = $interface_address is _my_ address
+
   accept
   accept
 
 
 
 
@@ -102,6 +101,10 @@ acl_check_rcpt:
   accept  authenticated = *
   accept  authenticated = *
           control       = submission/domain=
           control       = submission/domain=
 
 
+  deny    message       = Rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+          hosts         = !+whitelist
+          dnslists      = ${readfile {/etc/exim4/dnsbl.conf}{:}}
+
   require message       = relay not permitted
   require message       = relay not permitted
           domains       = +local_domains : +relay_to_domains
           domains       = +local_domains : +relay_to_domains
 
 
@@ -113,27 +116,30 @@ acl_check_rcpt:
 
 
 .ifdef CLAMD
 .ifdef CLAMD
   warn    set acl_m0    = no
   warn    set acl_m0    = no
+
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antivirus}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antivirus}{yes}{no}}
           set acl_m0    = yes
           set acl_m0    = yes
 .endif
 .endif
+
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
   warn    set acl_m1    = no
   warn    set acl_m1    = no
+
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antispam}{yes}{no}}
   warn    condition     = ${if exists {/etc/exim4/domains/$domain/antispam}{yes}{no}}
           set acl_m1    = yes
           set acl_m1    = yes
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_data:
 acl_check_data:
 .ifdef CLAMD
 .ifdef CLAMD
-         deny message   = Message contains a virus ($malware_name) and has been rejected
+  deny   message        = Message contains a virus ($malware_name) and has been rejected
          malware        = *
          malware        = *
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m0}{yes}{yes}{no}}
 .endif
 .endif
 
 
 .ifdef SPAMASSASSIN
 .ifdef SPAMASSASSIN
-  warn
-         !authenticated = *
+  warn   !authenticated = *
          hosts          = !+relay_from_hosts
          hosts          = !+relay_from_hosts
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if < {$message_size}{100K}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
          condition      = ${if eq{$acl_m1}{yes}{yes}{no}}
@@ -142,23 +148,29 @@ acl_check_data:
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Bar: $spam_bar
          add_header     = X-Spam-Report: $spam_report
          add_header     = X-Spam-Report: $spam_report
          set acl_m2     = $spam_score_int
          set acl_m2     = $spam_score_int
-  warn
-         condition      = ${if !eq{$acl_m2}{} {yes}{no}}
+
+  warn   condition      = ${if !eq{$acl_m2}{} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          condition      = ${if >{$acl_m2}{SPAM_SCORE} {yes}{no}}
          add_header     = X-Spam-Status: Yes
          add_header     = X-Spam-Status: Yes
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
          message        = SpamAssassin detected spam (from $sender_address to $recipients).
 .endif
 .endif
+
   accept
   accept
 
 
 
 
 acl_check_mime:
 acl_check_mime:
-  deny   message       = Blacklisted file extension detected
-         condition     = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+  deny   message        = Blacklisted file extension detected
+         condition      = ${if match {${lc:$mime_filename}}{\N(\.ade|\.adp|\.bat|\.chm|\.cmd|\.com|\.cpl|\.exe|\.hta|\.ins|\.isp|\.jse|\.lib|\.lnk|\.mde|\.msc|\.msp|\.mst|\.pif|\.scr|\.sct|\.shb|\.sys|\.vb|\.vbe|\.vbs|\.vxd|\.wsc|\.wsf|\.wsh)$\N}{1}{0}}
+
   accept
   accept
 
 
-##########################################################################
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
 begin authenticators
 begin authenticators
-##########################################################################
+
 dovecot_plain:
 dovecot_plain:
   driver = dovecot
   driver = dovecot
   public_name = PLAIN
   public_name = PLAIN
@@ -171,9 +183,14 @@ dovecot_login:
   server_socket = /var/run/dovecot/auth-client
   server_socket = /var/run/dovecot/auth-client
   server_set_id = $auth1
   server_set_id = $auth1
 
 
-##########################################################################
+
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
 begin routers
 begin routers
-##########################################################################
+
 #smarthost:
 #smarthost:
 #  driver = manualroute
 #  driver = manualroute
 #  domains = ! +local_domains
 #  domains = ! +local_domains
@@ -253,9 +270,12 @@ terminate_alias:
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim4/domains/$domain/aliases}{true}{false}}
   condition = ${lookup{$local_part@$domain}lsearch{/etc/exim4/domains/$domain/aliases}{true}{false}}
 
 
 
 
-##########################################################################
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
 begin transports
 begin transports
-##########################################################################
+
 remote_smtp:
 remote_smtp:
   driver = smtp
   driver = smtp
   #helo_data = $sender_address_domain
   #helo_data = $sender_address_domain
@@ -265,7 +285,6 @@ remote_smtp:
   dkim_canon = relaxed
   dkim_canon = relaxed
   dkim_strict = 0
   dkim_strict = 0
 
 
-
 procmail:
 procmail:
   driver = pipe
   driver = pipe
   command = "/usr/bin/procmail -d $local_part"
   command = "/usr/bin/procmail -d $local_part"
@@ -306,7 +325,7 @@ local_spam_delivery:
   delivery_date_add
   delivery_date_add
   envelope_to_add
   envelope_to_add
   return_path_add
   return_path_add
-  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part/.spam"
+  directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part/.Spam"
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}M
   quota = ${extract{6}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}M
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_directory = "${extract{5}{:}{${lookup{$local_part}lsearch{/etc/exim4/domains/$domain/passwd}}}}/mail/$domain/$local_part"
   quota_warn_threshold = 75%
   quota_warn_threshold = 75%
@@ -335,8 +354,24 @@ devnull:
   driver = appendfile
   driver = appendfile
   file = /dev/null
   file = /dev/null
 
 
-##########################################################################
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
 begin retry
 begin retry
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
 *                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
-##########################################################################
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
 begin rewrite
 begin rewrite
+
+
+
+######################################################################

+ 6 - 6
install/vst-install-debian.sh

@@ -233,9 +233,6 @@ if [ -z $email ]; then
     if [ -z "$servername" ]; then
     if [ -z "$servername" ]; then
         read -p "Please enter hostname [$(hostname)]: " servername
         read -p "Please enter hostname [$(hostname)]: " servername
     fi
     fi
-    if [ -z "$servername" ]; then
-        servername=$(hostname)
-    fi
 fi
 fi
 
 
 # Validate email
 # Validate email
@@ -464,6 +461,9 @@ if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
 fi
 fi
 
 
 # Set server hostname
 # Set server hostname
+if [ -z "$servername" ]; then
+    servername=$(hostname)
+fi
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 
 
 # Templates
 # Templates
@@ -627,9 +627,9 @@ fi
 
 
 # Exim
 # Exim
 wget $CHOST/$VERSION/exim4.conf.template -O /etc/exim4/exim4.conf.template
 wget $CHOST/$VERSION/exim4.conf.template -O /etc/exim4/exim4.conf.template
-if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
-    sed -i "s/^SPAMASSASSIN/#SPAMASSASSIN/g" /etc/exim4/exim4.conf.template
-    sed -i "s/^CLAMD/#CLAMD/g" /etc/exim4/exim4.conf.template
+if [ "$srv_type" != 'micro' ] &&  [ "$srv_type" != 'small' ]; then
+    sed -i "s/#SPAM/SPAM/g" /etc/exim4/exim4.conf.template
+    sed -i "s/#CLAMD/CLAMD/g" /etc/exim4/exim4.conf.template
 fi
 fi
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim4/dnsbl.conf
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim4/dnsbl.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim4/spam-blocks.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim4/spam-blocks.conf

+ 6 - 6
install/vst-install-rhel.sh

@@ -233,9 +233,6 @@ if [ -z $email ]; then
     if [ -z "$servername" ]; then
     if [ -z "$servername" ]; then
         read -p "Please enter hostname [$(hostname)]: " servername
         read -p "Please enter hostname [$(hostname)]: " servername
     fi
     fi
-    if [ -z "$servername" ]; then
-        servername=$(hostname)
-    fi
 fi
 fi
 
 
 # Validate email
 # Validate email
@@ -524,6 +521,9 @@ if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
 fi
 fi
 
 
 # Set server hostname
 # Set server hostname
+if [ -z "$servername" ]; then
+    servername=$(hostname)
+fi
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 
 
 # Templates
 # Templates
@@ -683,9 +683,9 @@ fi
 
 
 # Exim
 # Exim
 wget $CHOST/$VERSION/exim.conf -O /etc/exim/exim.conf
 wget $CHOST/$VERSION/exim.conf -O /etc/exim/exim.conf
-if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
-    sed -i "s/^SPAMASSASSIN/#SPAMASSASSIN/g" /etc/exim/exim.conf
-    sed -i "s/^CLAMD/#CLAMD/g" /etc/exim/exim.conf
+if [ "$srv_type" != 'micro' ] &&  [ "$srv_type" != 'small' ]; then
+    sed -i "s/#SPAM/SPAM/g" /etc/exim/exim.conf
+    sed -i "s/#CLAMD/CLAMD/g" /etc/exim/exim.conf
 fi
 fi
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim/dnsbl.conf
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim/dnsbl.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim/spam-blocks.conf

+ 6 - 6
install/vst-install-ubuntu.sh

@@ -231,9 +231,6 @@ if [ -z $email ]; then
     if [ -z "$servername" ]; then
     if [ -z "$servername" ]; then
         read -p "Please enter hostname [$(hostname)]: " servername
         read -p "Please enter hostname [$(hostname)]: " servername
     fi
     fi
-    if [ -z "$servername" ]; then
-        servername=$(hostname)
-    fi
 fi
 fi
 
 
 # Validate email
 # Validate email
@@ -462,6 +459,9 @@ if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
 fi
 fi
 
 
 # Set server hostname
 # Set server hostname
+if [ -z "$servername" ]; then
+    servername=$(hostname)
+fi
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 /usr/local/vesta/bin/v-change-sys-hostname $servername 2>/dev/null
 
 
 # Templates
 # Templates
@@ -634,9 +634,9 @@ fi
 
 
 # Exim
 # Exim
 wget $CHOST/$VERSION/exim4.conf.template -O /etc/exim4/exim4.conf.template
 wget $CHOST/$VERSION/exim4.conf.template -O /etc/exim4/exim4.conf.template
-if [ "$srv_type" = 'micro' ] ||  [ "$srv_type" = 'small' ]; then
-    sed -i "s/^SPAMASSASSIN/#SPAMASSASSIN/g" /etc/exim4/exim4.conf.template
-    sed -i "s/^CLAMD/#CLAMD/g" /etc/exim4/exim4.conf.template
+if [ "$srv_type" != 'micro' ] &&  [ "$srv_type" != 'small' ]; then
+    sed -i "s/#SPAM/SPAM/g" /etc/exim4/exim4.conf.template
+    sed -i "s/#CLAMD/CLAMD/g" /etc/exim4/exim4.conf.template
 fi
 fi
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim4/dnsbl.conf
 wget $CHOST/$VERSION/dnsbl.conf -O /etc/exim4/dnsbl.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim4/spam-blocks.conf
 wget $CHOST/$VERSION/spam-blocks.conf -O /etc/exim4/spam-blocks.conf

+ 1 - 1
web/add/cron/autoupdate/index.php

@@ -7,7 +7,7 @@ include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
 
 
 if ($_SESSION['user'] == 'admin') {
 if ($_SESSION['user'] == 'admin') {
     exec (VESTA_CMD."v-add-cron-vesta-autoupdate", $output, $return_var);
     exec (VESTA_CMD."v-add-cron-vesta-autoupdate", $output, $return_var);
-    $_SESSION['error_msg'] = __('Autoupdate has been susscessfully enabled');
+    $_SESSION['error_msg'] = __('Autoupdate has been successfully enabled');
     unset($output);
     unset($output);
 }
 }
 
 

+ 1 - 1
web/delete/cron/autoupdate/index.php

@@ -7,7 +7,7 @@ include($_SERVER['DOCUMENT_ROOT']."/inc/main.php");
 
 
 if ($_SESSION['user'] == 'admin') {
 if ($_SESSION['user'] == 'admin') {
     exec (VESTA_CMD."v-delete-cron-vesta-autoupdate", $output, $return_var);
     exec (VESTA_CMD."v-delete-cron-vesta-autoupdate", $output, $return_var);
-    $_SESSION['error_msg'] = __('Autoupdate has been susscessfully disabled');
+    $_SESSION['error_msg'] = __('Autoupdate has been successfully disabled');
     unset($output);
     unset($output);
 }
 }
 
 

+ 445 - 0
web/inc/i18n/fi.php

@@ -0,0 +1,445 @@
+<?php
+/**
+* Vesta Finnish language file
+* OHakala (onni@koodimonni.fi)
+* RJuho (juho.rasanen@kotikone.fi)
+*/
+
+$LANG['fi'] = array(
+    'Packages' => 'Paketit',
+    'IP' => 'IP',
+    'Graphs' => 'Kuvaajat',
+    'Statistics' => 'Tilastot',
+    'Log' => 'Loki',
+    'Services' => 'Palvelut',
+    'Updates' => 'Päivitykset',
+    'Log in' => 'Kirjaudu',
+    'Log out' => 'Kirjaudu ulos',
+
+    'USER' => 'TILIT',
+    'WEB' => 'WEB',
+    'DNS' => 'DNS',
+    'MAIL' => 'MAIL',
+    'DB' => 'DB',
+    'CRON' => 'CRON',
+    'BACKUP' => 'BACKUP',
+
+    'Add User' => 'Lisää käyttäjä',
+    'Add Domain' => 'Lisää domaini',
+    'Add Web Domain' => 'Lisää Web domain',
+    'Add DNS Domain' => 'Lisää DNS domain',
+    'Add DNS Record' => 'Lisää DNS asetus',
+    'Add Mail Domain' => 'Lisää email domain',
+    'Add Mail Account' => 'Lisää email käyttäjä',
+    'Add Database' => 'Lisää tietokanta',
+    'Add Cron Job' => 'Lisää Cron-tehtävä',
+    'Create Backup' => 'Luo varmuuskopio',
+    'Configure' => 'Määritä',
+    'Restore All' => 'Palauta kaikki',
+    'Add Package' => 'Lisää paketti',
+    'Add IP' => 'Lisää IP',
+    'Search' => 'Haku',
+    'Overall Statistics' => 'Kokonaistilastot',
+    'Daily' => 'Päivä',
+    'Weekly' => 'Viikko',
+    'Monthly' => 'Kuukausi',
+    'Yearly' => 'Vuosi',
+    'Add' => 'Lisää',
+    'Back' => 'Takaisin',
+    'Save' => 'Tallenna',
+    'Submit' => 'Lähetä',
+
+    'toggle all' => 'vaihda kaikki',
+    'apply to selected' => 'toteuta valituissa',
+    'rebuild' => 'palauta',
+    'rebuild web' => 'palauta web',
+    'rebuild dns' => 'palauta dns',
+    'rebuild mail' => 'palauta sähköposti',
+    'rebuild db' => 'palauta tietokanta',
+    'rebuild cron' => 'palauta cron',
+    'update counters' => 'päivitä laskurit',
+    'suspend' => 'keskeytä',
+    'unsuspend' => 'palauta',
+    'delete' => 'poista',
+    'show per user' => 'näytä per käyttäjä',
+    'login as' => 'kirjaudu sisään käyttäjänä',
+    'logout' => 'kirjaudu ulos',
+    'edit' => 'muokkaa',
+    'open webstats' => 'avaa webtilastot',
+    'view logs' => 'näytä lokit',
+    'list records' => 'listaa %s tietuetta',
+    'add record' => 'lisää tietue',
+    'list accounts' => 'listaa %s käyttäjää',
+    'add account' => 'lisää käyttäjä',
+    'open webmail' => 'avaa webmail',
+    'open %s' => 'avaa %s',
+    'download' => 'lataa',
+    'restore' => 'palauta',
+    'configure restore settings' => 'määritä palautusasetukset',
+    'stop' => 'pysäytä',
+    'start' => 'käynnistä',
+    'restart' => 'käynnistä uudelleen',
+    'update' => 'päivitä',
+    'generate' => 'generoi',
+    'Generate CSR' => 'generoi CSR',
+    'reread IP' => 'lue IP uudelleen',
+    'enable autoupdate' => 'päivitä automaattisesti',
+    'disable autoupdate' => 'älä päivitä automaattisesti',
+
+    'Adding User' => 'Lisätään käyttäjää',
+    'Editing User' => 'Muokataan käyttäjää',
+    'Adding Domain' => 'Lisätään domainia',
+    'Editing Domain' => 'Muokataan domainia',
+    'Adding DNS Domain' => 'Lisätään DNS-domainia',
+    'Editing DNS Domain' => 'Muokataan DNS-domainia',
+    'Adding DNS Record' => 'Lisätään DNS-tietuetta',
+    'Editing DNS Record' => 'Muokataan DNS-tietuetta',
+    'Adding Mail Domain' => 'Lisätään sähköpostidomainia',
+    'Editing Mail Domain' => 'Muokataan sähköpostidomainia',
+    'Adding Mail Account' => 'Lisätään sähköpostitiliä',
+    'Editing Mail Account' => 'Muokataan sähköpostitiliä',
+    'Adding database' => 'Lisätään tietokantaa',
+    'Editing Cron Job' => 'Muokataan Cron-tehtävää',
+    'Adding Cron Job' => 'Lisätään Cron-tehtävää',
+    'Editing Database' => 'Muokataan tietokantaa',
+    'Adding Package' => 'Lisätään pakettia',
+    'Editing Package' => 'Muokataan pakettia',
+    'Adding IP address' => 'Lisätään IP-osoitetta',
+    'Editing IP Address' => 'Muokataan IP-osoitetta',
+    'Editing Backup Exclusions' => 'Muokataan Varmuuskopioiden poikkeuksia',
+    'Generating CSR' => 'Generoidaan CSR',
+    'Listing' => 'Listataan',
+    'Search Results' => 'Hakutulokset',
+
+    'active' => 'aktiivinen',
+    'spnd' => 'keskeytetty',
+    'suspended' => 'keskeytetty',
+    'running' => 'käynnissä',
+    'stopped' => 'pysäytetty',
+    'outdated' => 'vanhentunut',
+    'updated' => 'päivitetty',
+
+    'yes' => 'kyllä',
+    'no' => 'ei',
+    'none' => 'ei mitään',
+    'pb' => 'pb', //petatavu
+    'tb' => 'tb', //teratavu
+    'gb' => 'gb', //gigatavu
+    'mb' => 'mb', //megatavu
+    'minute' => 'minuutti',
+    'hour' => 'tunti',
+    'day' => 'päivä',
+    'days' => 'päivää',
+    'hours' => 'tuntia',
+    'minutes' => 'minuuttia',
+    'month' => 'kuukautta',
+    'package' => 'paketti',
+    'traffic' => 'tiedonsiirto',
+    'disk' => 'levytila',
+    'Bandwidth' => 'Kaistanleveys',
+    'Disk' => 'Levy',
+    'Web' => 'Web',
+    'Mail' => 'Sähköposti',
+    'Databases' => 'Tietokannat',
+    'User Directories' => 'Käyttäjähakemistot',
+    'Template' => 'Pohja',
+    'Web Template' => 'Apache-pohja',
+    'Proxy Template' => 'Nginx-pohja',
+    'DNS Template' => 'DNS-pohja',
+    'Web Domains' => 'Web-domainit',
+    'SSL Domains' => 'SSL-domainit',
+    'Web Aliases' => 'Web-aliakset',
+    'per domain' => 'per domaini',
+    'DNS domains' => 'DNS-domainit',
+    'DNS records' => 'DNS-tietueet',
+    'Name Servers' => 'Nimipalvelimet',
+    'Mail Domains' => 'Sähköpostidomainit',
+    'Mail Accounts' => 'Sähköpostikäyttäjät',
+    'Cron Jobs' => 'Cron-tehtävät',
+    'SSH Access' => 'SSH-oikeudet',
+    'IP Addresses' => 'IP-osoitteet',
+    'Backups' => 'Varmuuskopiot',
+    'Backup System' => 'Varmuuskopioi järjestelmä',
+    'backup exclusions' => 'varmuuskopioinnin poikkeukset',
+    'template' => 'pohjat',
+    'SSL Support' => 'SSL-tuki',
+    'SSL Home Directory' => 'SSL-kotihakemisto',
+    'Proxy Support' => 'Nginx tuki',
+    'Proxy Extensions' => 'Nginx laajennukset',
+    'Web Statistics' => 'Webtilastot',
+    'Additional FTP Account' => 'Ylimääräinen FTP-tili',
+    'SOA' => 'SOA',
+    'TTL' => 'TTL',
+    'Expire' => 'Päättyy',
+    'Records' => 'Tietueet',
+    'Catchall email' => 'Catchall-sähköposti',
+    'AntiVirus Support' => 'AntiVirus-tuki',
+    'AntiSpam Support' => 'AntiSpam-tuki',
+    'DKIM Support' => 'DKIM-tuki',
+    'Accounts' => 'Tilit',
+    'Quota' => 'Kiintiö',
+    'Autoreply' => 'Automaattinen vastaus',
+    'Forward to' => 'Uudelleenohjaa',
+    'Do not store forwarded mail' => 'Älä säilytä uudelleenohjattuja viestejä',
+    'database' => 'tietokanta',
+    'User' => 'Käyttäjä',
+    'Host' => 'Host',
+    'Charset' => 'Merkistö',
+    'Min' => 'Min',
+    'Hour' => 'Tunti',
+    'Day' => 'Päivä',
+    'Month' => 'Kuukausi',
+    'Day of week' => 'Viikonpäivä',
+    'local' => 'paikallinen',
+    'Run Time' => 'Run Time',
+    'Backup Size' => 'Varmuuskopion koko',
+    'SYS' => 'SYS',
+    'Domains' => 'Domainit',
+    'Status' => 'Tila',
+    'shared' => 'jaetut',
+    'dedicated' => 'dedicated',
+    'Owner' => 'Omistaja',
+    'Users' => 'Käyttäjät',
+    'Load Average' => 'Keskimääräinen Käyttöaste',
+    'Memory Usage' => 'Muistinkäyttö',
+    'HTTPD Usage' => 'HTTPD-käyttö',
+    'NGINX Usage' => 'NGINX-käyttö',
+    'APACHE2 Usage' => 'APACHE2-käyttö',
+    'MySQL Usage on localhost' => 'MySQL-käyttö @ localhost',
+    'PostgreSQL Usage on localhost' => 'PostgreSQL-käyttö @ localhost',
+    'Bandwidth Usage eth0' => 'Kaistankäyttö eth0',
+    'Bandwidth Usage eth1' => 'Kaistankäyttö eth1',
+    'FTP Usage' => 'FTP-käyttö',
+    'SSH Usage' => 'SSH-käyttö',
+    'reverse proxy' => 'reverse proxy',
+    'web server' => 'web-palvelin',
+    'dns server' => 'dns-palvelin',
+    'mail server' => 'sähköpostipalvelin',
+    'pop/imap server' => 'pop/imap-palvelin',
+    'email antivirus' => 'sähköpostin antivirus',
+    'email antispam' => 'sähköpostin antispam',
+    'database server' => 'tietokantapalvelin',
+    'ftp server' => 'ftp-palvelin',
+    'job scheduler' => 'job scheduler', //no-idea
+    'CPU' => 'Prosessori',
+    'Memory' => 'Muisti',
+    'Uptime' => 'Käyttöaika',
+    'core package' => 'core-paketti',
+    'php interpreter' => 'php-tulkki',
+    'internal web server' => 'sisäinen web-palvelin',
+    'Version' => 'Versio',
+    'Release' => 'Julkaisu',
+    'Architecture' => 'Arkkitehtuuri',
+    'Object' => 'Objekti',
+    'Owner' => 'Omistaja',
+    'Username' => 'Käyttäjä',
+    'Password' => 'Salasana',
+    'Email' => 'Sähköposti',
+    'Package' => 'Paketti',
+    'Language' => 'Kieli',
+    'First Name' => 'Etunimi',
+    'Last Name' => 'Sukunimi',
+    'Send login credentials to email address' => 'Lähetä kirjautumistiedot sähköpostilla.',
+    'Default Template' => 'Oletuspohja',
+    'Default Name Servers' => 'Oletusnimipalvelimet',
+    'Domain' => 'Domain',
+    'DNS Support' => 'Tarvitsee DNS:n',
+    'Mail Support' => 'Tarvitsee Sähköpostin',
+    'Advanced options' => 'Lisäasetukset',
+    'Aliases' => 'Aliakset',
+    'SSL Certificate' => 'SSL-sertifikaatti',
+    'SSL Key' => 'SSL-avain',
+    'SSL Certificate Authority / Intermediate' => 'SSL Certificate Authority / Intermediate', //no-idea
+    'SSL CSR' => 'SSL CSR',
+    'optional' => 'valinnainen',
+    'internal' => 'sisäinen',
+    'Statistics Authorization' => 'Tilastoinnin valtuutus',
+    'Statistics Auth' => 'Tilastoinnin Auth',
+    'Account' => 'Tili',
+    'Prefix will be automaticaly added to username' => 'Etuliite %s lisätään automaattisesti käyttäjänimeen.',
+    'Send FTP credentials to email' => 'Lähetä FTP-kirjautumistiedot sähköpostilla',
+    'Expiration Date' => 'Viimeinen käyttöpäivä',
+    'YYYY-MM-DD' => 'YYYY-MM-DD',
+    'Name servers' => 'Nimipalvelimet',
+    'Record' => 'Tietue',
+    'IP or Value' => 'IP or Value', //no-idea
+    'Priority' => 'Prioriteetti',
+    'Record Number' => 'Tietueen numero',
+    'in megabytes' => 'megatavuissa',
+    'Message' => 'Viesti',
+    'use local-part' => 'use local-part', //no-idea
+    'one or more email addresses' => 'yksi tai useampia sähköposteja',
+    'Prefix will be automaticaly added to database name and database user' => 'Etuliite %s lisätään automaattisesti tietokannan nimeen ja käyttäjään',
+    'Database' => 'Tietokanta',
+    'Type' => 'Tyyppi',
+    'Minute' => 'Minuutti',
+    'Command' => 'Käsky',
+    'Package Name' => 'Paketin nimi',
+    'Netmask' => 'Netmask', //no-idea
+    'Interface' => 'Interface', //no-idea
+    'Shared' => 'Jaettu',
+    'Assigned user' => 'Assigned user',
+    'Assigned domain' => 'Assigned domain',
+    'NAT IP association' => 'NAT IP association', //no-idea
+    'shell' => 'shell',
+    'web domains' => 'web-domainit',
+    'web aliases' => 'web-aliakset',
+    'dns records' => 'dns-tietueet',
+    'mail domains' => 'sähköpostidomainit',
+    'mail accounts' => 'sähköpostitilit',
+    'accounts' => 'tilit',
+    'databases' => 'tietokannat',
+    'cron jobs' => 'cron-tehtävät',
+    'backups' => 'varmuuskopiot',
+    'quota' => 'kiintiö',
+    'day of week' => 'viikonpäivä',
+    'cmd' => 'cmd',
+    'users' => 'käyttäjät',
+    'domains' => 'domainit',
+    'aliases' => 'aliakset',
+    'records' => 'tietueet',
+    'jobs' => 'tehtävät',
+    'username' => 'käyttäjänimi',
+    'password' => 'salasana',
+    'type' => 'tyyppi',
+    'charset' => 'charset',
+    'domain' => 'domain',
+    'ip' => 'ip',
+    'ip address' => 'ip-osoite',
+    'IP address' => 'IP-osoite',
+    'netmask' => 'netmask',
+    'interface' => 'interface',
+    'assigned user' => 'omistaja',
+    'ns1' => 'ns1',
+    'ns2' => 'ns2',
+    'user' => 'käyttäjä',
+    'email' => 'sähköposti',
+    'first name' => 'etunimi',
+    'last name' => 'sukunimi',
+    'account' => 'tili',
+    'ssl certificate' => 'ssl-sertifikaatti',
+    'ssl key' => 'ssl-avain',
+    'stats user password' => 'tilastoinnin käyttäjän salasana',
+    'stats username' => 'tilastoinnin käyttäjä',
+    'stats password' => 'tilastoinnin salasana',
+    'ftp user password' => 'ftp-käyttäjän salasana',
+    'ftp user' => 'ftp-käyttäjä',
+    'Last 70 lines of %s.%s.log' => '%s 70 viimeistä lokimerkintää.%s.log',
+    'Download AccessLog' => 'Lataa AccessLog',
+    'Download ErrorLog' => 'Lataa Virheloki',
+    'Country' => 'Maa',
+    '2 letter code' => '2 kirjaimen lyhenne',
+    'State / Province' => 'Osavaltio / Maakunta',
+    'City / Locality' => 'Kaupunki / Paikkakunta',
+    'Organization' => 'Organisaatio',
+
+   '1 account' => '1 tili',
+    '%s accounts' => '%s tiliä',
+    '1 domain' => '1 domain',
+    '%s domains' => '%s domainia',
+    '1 record' => '1 tietue',
+    '%s records' => '%s tietuetta',
+    '1 mail account' => '1 sähköpostitili',
+    '%s mail accounts' => '%s sähköpostitiliä',
+    '1 database' => '1 tietokanta',
+    '%s databases' => '%s tietokantaa',
+    '1 cron job' => '1 cron-tehtävä',
+    '%s cron jobs' => '%s cron-tehtävää',
+    '1 archive' => '1 archive',
+    '%s archives' => '%s archives',
+    '1 package' => '1 paketti',
+    '%s packages' => '%s pakettia',
+    '1 IP address' => '1 IP-osoite',
+    '%s IP addresses' => '%s IP-osoitetta',
+    '1 month' => '1 kuukausi',
+    '%s months' => '%s kuukautta',
+    '1 log record' => '1 lokimerkintä',
+    '%s log records' => '%s lokimerkintää',
+    '1 object' => '1 objekti',
+    '%s objects' => '%s objektia',
+    'no exclusions' => 'ei poikkeuksia',
+
+    'USER_CREATED_OK' => 'Käyttäjä <a href="/edit/user/?user=%s"><b>%s</b></a> lisättiin onnistuneesti',
+    'WEB_DOMAIN_CREATED_OK' => 'Domain <a href="/edit/web/?domain=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'DNS_DOMAIN_CREATED_OK' => 'DNS-domain <a href="/list/dns/?domain=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'DNS_RECORD_CREATED_OK' => 'Tietue <b>%s.%s</b> lisättiin onnistuneesti.',
+    'MAIL_DOMAIN_CREATED_OK' => 'Sähköpostidomain <a href="/list/mail/?domain=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'MAIL_ACCOUNT_CREATED_OK' => 'Sähköpostitili <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> lisättiin onnistuneesti.',
+    'DATABASE_CREATED_OK' => 'Tietokanta <a href="/edit/db/?database=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'CRON_CREATED_OK' => 'Cron-tehtävä lisättiin onnistuneesti.',
+    'IP_CREATED_OK' => 'IP-osoite <a href="/edit/ip/?ip=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'PACKAGE_CREATED_OK' => 'Paketti <a href="/edit/package/?package=%s"><b>%s</b></a> lisättiin onnistuneesti.',
+    'SSL_GENERATED_OK' => 'Sertifikaatti lisättiin onnistuneesti.',
+    'Autoupdate has been successfully enabled' => 'Automaattinen päivitys otettu käyttöön',
+    'Autoupdate has been successfully disabled' => 'Automaattinen päivitys poistettu käytöstä',
+    'Changes has been saved.' => 'Muutokset tallennettu.',
+    'Confirmation' => 'Hyväksyntä',
+    'DELETE_USER_CONFIRMATION' => 'Haluatko varmasti poistaa käyttäjän %s?',
+    'SUSPEND_USER_CONFIRMATION' => 'Haluatko varmasti keskeyttää käyttäjän %s?',
+    'UNSUSPEND_USER_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön käyttäjän %s?',
+    'DELETE_DOMAIN_CONFIRMATION' => 'Haluatko varmasti poistaa domainin %s?',
+    'SUSPEND_DOMAIN_CONFIRMATION' => 'Haluatko varmasti keskeyttää domainin %s?',
+    'UNSUSPEND_DOMAIN_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön domainin %s?',
+    'DELETE_RECORD_CONFIRMATION' => 'Haluatko varmasti poistaa tietueen %s?',
+    'SUSPEND_RECORD_CONFIRMATION' => 'Haluatko varmasti keskeyttää tietueen %s?',
+    'UNSUSPEND_RECORD_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön tietueen %s?',
+    'DELETE_MAIL_ACCOUNT_CONFIRMATION' => 'Haluatko varmasti poistaa %s?',
+    'SUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Haluatko varmasti keskeyttää %s?',
+    'UNSUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön %s?',
+    'DELETE_DATABASE_CONFIRMATION' => 'Haluatko varmasti poistaa tietokannan %s?',
+    'SUSPEND_DATABASE_CONFIRMATION' => 'Haluatko varmasti keskeyttää tietokannan %s?',
+    'UNSUSPEND_DATABASE_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön tietokannan %s?',
+    'DELETE_CRON_CONFIRMATION' => 'Haluatko varmasti poistaa cron-tehtävän?',
+    'SUSPEND_CRON_CONFIRMATION' => 'Haluatko varmasti keskeyttää cron-tehtävän?',
+    'UNSUSPEND_CRON_CONFIRMATION' => 'Haluatko varmasti ottaa käyttöön cron-tehtävän?',
+    'DELETE_BACKUP_CONFIRMATION' => 'Haluatko varmasti poistaa %s varmuuskopion?',
+    'DELETE_EXCLUSION_CONFIRMATION' => 'Haluatko varmasti poistaa %s poikkeuksen?',
+    'DELETE_PACKAGE_CONFIRMATION' => 'Haluatko varmasti poistaa paketin %s?',
+    'DELETE_IP_CONFIRMATION' => 'Haluatko varmasti poistaa IP-osoitteen %s?',
+    'Welcome' => 'Tervetuloa',
+    'LOGGED_IN_AS' => 'Kirjautunut käyttäjänä %s',
+    'Error' => 'Virhe',
+    'Invalid username or password' => 'Väärä käyttäjänimi tai salasana',
+    'Invalid username or code' => 'Väärä käyttäjänimi tai koodi',
+    'Passwords not match' => 'Salasanat eivät täsmää',
+    'Please enter valid email address.' => 'Syötä toimiva sähköpostiosoite.',
+    'Field "%s" can not be blank.' => 'Kenttä "%s" ei voi olla tyhjä.',
+    'Password is too short.' => 'Salasana on liian lyhyt (min. 6 merkkiä)',
+    'Error code:' => 'Virhekoodi: %s',
+    'SERVICE_ACTION_FAILED' => '"%s" "%s" epäonnistui',
+    'IP address is in use' => 'IP-osoite on käytössä',
+    'BACKUP_SCHEDULED' => 'Tehtävä on lisätty jonoon. Saat sähköpostin kun varmuuskopiosi on valmis ladattavaksi.',
+    'BACKUP_EXISTS' => 'Aikaisempi varmuuskopiointi on vielä käynnissä, odota kunnes se päättyy.',
+    'RESTORE_SCHEDULED' => 'Tehtävä on lisätty jonoon. Saat sähköpostin kun varmuuskopiosi on valmis ladattavaksi.',
+    'RESTORE_EXISTS' => 'Aikaisempi palautus on vielä käynnissä, odota kunnes se päättyy.',
+
+    'WEB_EXCLUSIONS' => "Syötä domainin nimi, yksi per rivi. Syötä '*', jos haluat ohittaa kaikki domainit. Ohittaksesi pois tiettyjä hakemistoja käytä seuraavaa rakennetta: domain.com:public_html/cache:public_html/tmp",
+    'DNS_EXCLUSIONS' => "Syötä domainin nimi, yksi per rivi. Syötä '*', jos haluat ohittaa kaikki domainit.",
+    'MAIL_EXCLUSIONS' => "Syötä domainin nimi, yksi per rivi. Syötä '*', jos haluat ohittaa kaikki domainit. Ohittaksesi pois tiettyjä hakemistoja käytä seuraavaa rakennetta: domain.com:info:support:postmaster",
+    'DB_EXCLUSIONS' => "Syötä koko tietokannan nimi, yksi per rivi. Syötä '*', jos haluat ohittaa kaikki tietokannat.",
+    'CRON_EXCLUSIONS' => "Ohittaaksesi kaikki tehtävät käytä '*'",
+    'USER_EXCLUSIONS' => "Syötä kansion nimi, yksi per rivi. Ohittaaksesi kaikki tietokannat syötä '*'",
+
+    'Welcome to Vesta Control Panel' => 'Tervetuloa Vesta Hallintapaneeliin',
+    'MAIL_FROM' => 'Vesta Hallintapaneeli <noreply@%s>',
+    'GREETINGS_GORDON_FREEMAN' => "Morjens, %s %s,\n",
+    'GREETINGS' => "Morjens,\n",
+    'ACCOUNT_READY' => "Käyttätilisi on luotu ja odottaa innokkaasti ensimmäistä kirjautumista.\n\nhttps://%s/login/\nKäyttäjä: %s\nSalasana: %s\n\n--\nVesta Hallintapaneeli\n",
+
+    'FTP login credentials' => 'FTP-tilitiedot',
+    'FTP_ACCOUNT_READY' => "FTP-tili on luotu ja odottaa innokkaasti ensimmäistä kirjautumista.\n\nHostname: %s\nKäyttäjä: %s_%s\nSalasana: %s\n\n--\nVesta Hallintapaneeli\n",
+
+    'Database Credentials' => 'Tietokannan-tilitiedot',
+    'DATABASE_READY' => "Tietokanta on luotu onnistuneesti.\n\nTietokanta: %s\nKäyttäjä: %s\nSalasana: %s\n%s\n\n--\nVesta Hallintapaneeli\n",
+
+    'forgot password' => 'unohditko salasanan?',
+    'Confirm' => 'Hyväksy',
+    'New Password' => 'Uusi salasana',
+    'Confirm Password' => 'Hyväksy salasana',
+    'Reset' => 'Nollaa',
+    'Reset Code' => 'Nollauskoodi',
+    'RESET_NOTICE' => '',
+    'RESET_CODE_SENT' => 'Salasanan nollauskoodi on lähetetty sähköpostiisi<br>',
+    'MAIL_RESET_SUBJECT' => 'Salana vaihdettiin %s',
+    'PASSWORD_RESET_REQUEST' => "Nollataksesi hallintapaneelin salasanan, seuraa tätä linkkiä:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nVaihtoehtoisesti voit mennä https://%s/reset/?action=code&user=%s ja syöttää nollauskoodin:\n%s\n\nJos et varta vasten pyytänyt tätä salasananvaihtoa, mene paniikkiin ja ota yhteyttä ylläpitoon.\n\n--\nVesta Hallintapaneeli\n",
+);

+ 443 - 0
web/inc/i18n/fr.php

@@ -0,0 +1,443 @@
+<?php
+/**
+ * Vesta language file
+ * French Translation
+ */
+
+$LANG['fr'] = array(
+    'Packages'  => 'Paquets',
+    'IP'  => 'IP',
+    'Graphs'  => 'Graphs',
+    'Statistics'  => 'Statistiques',
+    'Log'  => 'Log',
+    'Services'  => 'Services',
+    'Updates'  => 'Mises-à-jour',
+    'Log in'  => 'Connexion',
+    'Log out'  => 'Déconnexion',
+
+    'USER'  => 'USER',
+    'WEB'  => 'WEB',
+    'DNS'  => 'DNS',
+    'MAIL'  => 'MAIL',
+    'DB'  => 'DB',
+    'CRON'  => 'CRON',
+    'BACKUP'  => 'BACKUP',
+
+    'Add User'  => 'Ajouter un Utilisateur',
+    'Add Domain'  => 'Ajouter un Domaine',
+    'Add Web Domain'  => 'Ajouter un Domaine',
+    'Add DNS Domain'  => 'Ajouter un DNS',
+    'Add DNS Record'  => 'Ajouter un Enregistrement DNS',
+    'Add Mail Domain'  => 'Ajouter un Domaine',
+    'Add Mail Account'  => 'Ajouter un Compte',
+    'Add Database'  => 'Ajouter une BDD',
+    'Add Cron Job'  => 'Ajouter une Tâche',
+    'Create Backup'  => 'Créer un Backup',
+    'Configure'  => 'Configurer',
+    'Restore All'  => 'Restaurer Tout',
+    'Add Package'  => 'Ajouter un Paquet',
+    'Add IP'  => 'Ajouter une IP',
+    'Search'  => 'Rechercher',
+    'Overall Statistics'  => 'Statistiques Générales',
+    'Daily'  => 'Quotidien',
+    'Weekly'  => 'Hebdomadaire',
+    'Monthly'  => 'Mensuel',
+    'Yearly'  => 'Annuel',
+    'Add'  => 'Ajouter',
+    'Back'  => 'Retour',
+    'Save'  => 'Sauvegarde',
+    'Submit'  => 'Envoyer',
+
+    'toggle all'  => 'selectionner tout',
+    'apply to selected'  => 'appliquer à la sélection',
+    'rebuild'  => 'recréer',
+    'rebuild web'  => 'recréer web',
+    'rebuild dns'  => 'recréer dns',
+    'rebuild mail'  => 'recréer mail',
+    'rebuild db'  => 'recréer db',
+    'rebuild cron'  => 'recréer cron',
+    'update counters'  => 'mettre-à-jour les totaux',
+    'suspend'  => 'suspendre',
+    'unsuspend'  => 'réactiver',
+    'delete'  => 'supprimer',
+    'show per user'  => 'voir par utilisateur',
+    'login as'  => 'connexion en tant que',
+    'logout'  => 'déconnexion',
+    'edit'  => 'éditer',
+    'open webstats'  => 'ouvrir les statistiques web',
+    'view logs'  => 'voir les logs',
+    'list records'  => '%s enregistrements listés',
+    'add record'  => 'ajouter un enregistrement',
+    'list accounts'  => '%s comptes listés',
+    'add account'  => 'ajouter un compte',
+    'open webmail'  => 'ouvrir le webmail',
+    'open %s'  => 'ouvrir %s',
+    'download'  => 'télécharger',
+    'restore'  => 'restaurer',
+    'configure restore settings'  => 'configurer les paramètres de restauration',
+    'stop'  => 'stop',
+    'start'  => 'démarrer',
+    'restart'  => 'redémarrer',
+    'update'  => 'mettre-à-jour',
+    'generate'  => 'générer',
+    'Generate CSR' => 'Générer un CSR',
+    'reread IP' => 'actualiser l\'IP',
+    'enable autoupdate' => 'activer la mise-à-jour automatique',
+    'disable autoupdate' => 'desactiver la mise-à-jour automatique',
+
+    'Adding User'  => 'Ajout d\'un Utilisateur',
+    'Editing User'  => 'Edition d\'un Utilisateur',
+    'Adding Domain'  => 'Ajout d\'un Domaine',
+    'Editing Domain'  => 'Edition d\'un Domaine',
+    'Adding DNS Domain'  => 'Ajout d\'un Domaine DNS',
+    'Editing DNS Domain'  => 'Edition d\'un Domaine DNS',
+    'Adding DNS Record'  => 'Ajout d\'un Enregistrement DNS',
+    'Editing DNS Record'  => 'Edition d\'un Enregistrement DNS',
+    'Adding Mail Domain'  => 'Ajout d\'un Domaine Mail',
+    'Editing Mail Domain'  => 'Edition d\'un Domaine Mail',
+    'Adding Mail Account'  => 'Ajout d\'un Compte Mail',
+    'Editing Mail Account'  => 'Edition d\'un Compte Mail',
+    'Adding database'  => 'Ajout d\'une base de données',
+    'Editing Cron Job'  => 'Edition d\'une tâche Cron',
+    'Adding Cron Job'  => 'Ajout d\'une tâche Cron',
+    'Editing Database'  => 'Edition d\'une base de données',
+    'Adding Package'  => 'Ajout d\'un Paquet',
+    'Editing Package'  => 'Edition d\'un Paquet',
+    'Adding IP address'  => 'Ajout d\'une adresse IP',
+    'Editing IP Address'  => 'Edition d\'une adresse IP',
+    'Editing Backup Exclusions' => 'Edition des exclusions de Backup',
+    'Generating CSR' => 'Génération d\'un jeton CSR',
+    'Listing'  => 'Listage',
+    'Search Results'  => 'Résultats de Recherche',
+
+    'active'  => 'actif',
+    'spnd'  => 'suspendu',
+    'suspended'  => 'suspendus',
+    'running'  => 'lancé',
+    'stopped'  => 'arrêté',
+    'outdated'  => 'périmé',
+    'updated'  => 'mis-à-jour',
+
+    'yes'  => 'oui',
+    'no'  => 'non',
+    'none'  => 'aucun',
+    'pb'  => 'po',
+    'tb'  => 'to',
+    'gb'  => 'go',
+    'mb'  => 'mo',
+    'minute'  => 'minute',
+    'hour'  => 'heure',
+    'day'  => 'jour',
+    'days'  => 'jours',
+    'hours'  => 'heures',
+    'minutes'  => 'minutes',
+    'month'  => 'mois',
+    'package'  => 'paquet',
+    'Bandwidth'  => 'Bande Passante',
+    'Disk'  => 'Disque',
+    'Web'  => 'Web',
+    'Mail'  => 'Mail',
+    'Databases'  => 'Bases de Données',
+    'User Directories'  => 'Répertoires Utilisateurs',
+    'Template'  => 'Template',
+    'Web Template'  => 'Template Apache',
+    'Proxy Template'  => 'Template Nginx',
+    'DNS Template'  => 'Template DNS',
+    'Web Domains'  => 'Domaines Web',
+    'SSL Domains'  => 'Domaines SSL',
+    'Web Aliases'  => 'Alias Web',
+    'per domain'  => 'par domaine',
+    'DNS domains'  => 'Domaines DNS',
+    'DNS domains'  => 'Domaines DNS',
+    'DNS records'   => 'Enregistrements DNS'  ,
+    'Name Servers'  => 'Nom des Serveurs',
+    'Mail Domains'  => 'Domaines Mail',
+    'Mail Accounts'  => 'Comptes Mail',
+    'Cron Jobs'  => 'Tâches Cron',
+    'SSH Access'  => 'Accès SSH',
+    'IP Addresses'  => 'Adresses IP',
+    'Backups'  => 'Sauvegardes',
+    'Backup System'  => 'Système de Sauvegarde',
+    'backup exclusions' => 'exclusions de la sauvegarde',
+    'template'  => 'template',
+    'SSL Support'  => 'Support SSL',
+    'SSL Home Directory'  => 'Racine SSL',
+    'Proxy Support'  => 'Support Nginx',
+    'Proxy Extensions'  => 'Extensions Nginx',
+    'Web Statistics'  => 'Statistiques Web',
+    'Additional FTP Account'  => 'FTP Additionnel',
+    'SOA'  => 'SOA',
+    'TTL'  => 'TTL',
+    'Expire'  => 'Expiration',
+    'Records'  => 'Enregistrements',
+    'Catchall email'  => 'Email de Récupération',
+    'AntiVirus Support'  => 'Support de l\'AntiVirus',
+    'AntiSpam Support'  => 'Support de l\'AntiSpam',
+    'DKIM Support'  => 'Support DKIM',
+    'Accounts'  => 'Comptes',
+    'Quota'  => 'Quota',
+    'Autoreply'  => 'Réponse Automatique',
+    'Forward to'  => 'Transférer à',
+    'Do not store forwarded mail' => 'Ne pas conserver le mail transféré',
+    'database'  => 'base de données',
+    'User'  => 'Utilisateur',
+    'Host'  => 'Serveur',
+    'Charset'  => 'Charset',
+    'Min'  => 'Mn',
+    'Hour'  => 'Heure',
+    'Day'  => 'Jour',
+    'Month'  => 'Mois',
+    'Day of week'  => 'Jour de la semaine',
+    'local'  => 'local',
+    'Run Time'  => 'Temps d\'Exécution',
+    'Backup Size'  => 'Taille de la sauvegarde',
+    'SYS'  => 'SYS',
+    'Domains'  => 'Domaines',
+    'Status'  => 'Statuts',
+    'shared'  => 'partagé',
+    'dedicated'  => 'dédié',
+    'Owner' => 'Propriétaire',
+    'Users'  => 'Utilisateurs',
+    'Load Average'  => 'Charge Moyenne',
+    'Memory Usage'  => 'Utilisation de la Mémoire',
+    'HTTPD Usage'  => 'Utilisation HTTPD',
+    'NGINX Usage'  => 'Utilisation NGINX',
+    'MySQL Usage on localhost'  => 'Utilisation de MySQL sur localhost',
+    'PostgreSQL Usage on localhost'  => 'Utilisation de PostgreSQL sur localhost',
+    'Bandwidth Usage eth0'  => 'Utilisation de la Bande Passante sur eth0',
+    'FTP Usage'  => 'Utilisation du FTP',
+    'SSH Usage'  => 'Utilisation SSH',
+    'reverse proxy'  => 'reverse proxy',
+    'web server'  => 'serveur web',
+    'dns server'  => 'serveur dns',
+    'mail server'  => 'serveur mail',
+    'pop/imap server'  => 'serveur pop/imap',
+    'email antivirus'  => 'email antivirus',
+    'email antispam'  => 'email antispam',
+    'database server'  => 'serveur de base de données',
+    'ftp server'  => 'serveur ftp',
+    'job scheduler'  => 'programmation de tâches',
+    'CPU'  => 'CPU',
+    'Memory'  => 'Mémoire',
+    'Uptime'  => 'Temps de Fonctionnement',
+    'core package'  => 'paquet de base',
+    'php interpreter'  => 'interpréteur php',
+    'internal web server'  => 'serveur web interne',
+    'Version'  => 'Version',
+    'Release'  => 'Release',
+    'Architecture'  => 'Architecture',
+    'Object'  => 'Objet',
+    'Owner'  => 'Propriétaire',
+    'Username'  => 'Nom d\'Utilisateur',
+    'Password'  => 'Mot de Passe',
+    'Email'  => 'Email',
+    'Package'  => 'Paquet',
+    'Language'  => 'Langue',
+    'First Name'  => 'Prénom',
+    'Last Name'  => 'Nom',
+    'Send login credentials to email address'  => 'Envoyer les identifiants à l\'adresse email',
+    'Default Template'  => 'Template par défaut',
+    'Default Name Servers'  => 'Nom de Serveurs par Défaut',
+    'Domain'  => 'Domaine',
+    'DNS Support'  => 'Support DNS',
+    'Mail Support'  => 'Support Email',
+    'Advanced options'  => 'Options avancées',
+    'Aliases'  => 'Alias',
+    'SSL Certificate'  => 'Certificat SSL',
+    'SSL Key'  => 'Clé SSL',
+    'SSL Certificate Authority / Intermediate'  => 'Autorité de certification SSL / Intermédiaire',
+    'SSL CSR' => 'Jeton CSR SSL',
+    'optional'  => 'optionnel',
+    'internal' => 'interne',
+    'Statistics Authorization'  => 'Droits d\'Accès aux Statistiques',
+    'Statistics Auth'  => 'Accès aux Statistiques',
+    'Account'  => 'Compte',
+    'Prefix will be automaticaly added to username'  => 'Le préfixe %s sera automatiquement ajouté au nom d\'utilisateur',
+    'Send FTP credentials to email'  => 'Envoyer les identifiants FTP à l\'adresse email',
+    'Expiration Date'  => 'Date d\'Expiration',
+    'YYYY-MM-DD'  => 'YYYY-MM-DD',
+    'Name servers'  => 'Nom des serveurs',
+    'Record'  => 'Valeur de l\'Enregistrement',
+    'IP or Value'  => 'IP ou Valeur',
+    'Priority'  => 'Priorité',
+    'Record Number' => 'Nombre d\'Enregistrements',
+    'in megabytes'  => 'en mégaoctets',
+    'Message'  => 'Message',
+    'use local-part'  => 'utilisation locale',
+    'one or more email addresses'  => 'une ou plusieurs adresses email',
+    'Prefix will be automaticaly added to database name and database user'  => 'Le préfixe %s sera automatiquement ajouté au nom de la base de données et de son utilisateur',
+    'Database'  => 'Base de Données',
+    'Type'  => 'Type',
+    'Minute'  => 'Minute',
+    'Command'  => 'Commande',
+    'Package Name'  => 'Nom du Paquet',
+    'Netmask'  => 'Masque Réseau',
+    'Interface'  => 'Interface',
+    'Shared'  => 'Partagé',
+    'Assigned user'  => 'Utilisateur associé',
+    'Assigned domain'  => 'Domaine associé',
+    'NAT IP association' => 'Association NAT IP',
+    'shell'  => 'shell',
+    'web domains'  => 'domaines web',
+    'web aliases'  => 'alias web',
+    'dns records'  => 'enregistrements dns',
+    'mail domains'  => 'domaines email',
+    'mail accounts'  => 'comptes email',
+    'accounts'  => 'comptes',
+    'databases'  => 'bases données',
+    'cron jobs'  => 'tâches cron',
+    'backups'  => 'sauvegardes',
+    'quota'  => 'quota',
+    'day of week'  => 'jour de la semaine',
+    'cmd'  => 'cmd',
+    'users'  => 'utilisateurs',
+	'disk'  => 'disque',
+	'traffic' => 'traffic',
+    'domains'  => 'domaines',
+    'aliases'  => 'alias',
+    'records'  => 'enregistrements',
+    'jobs'  => 'tâches',
+    'username'  => 'nom d\'utilisateur',
+    'password'  => 'mot de passe',
+    'type'  => 'type',
+    'charset'  => 'charset',
+    'domain'  => 'domaine',
+    'ip'  => 'ip',
+    'ip address'  => 'adresse IP',
+    'IP address'  => 'Adresse IP',
+    'netmask'  => 'masque réseau',
+    'interface'  => 'interface',
+    'assigned user'  => 'utilisateur associé',
+    'ns1'  => 'ns1',
+    'ns2'  => 'ns2',
+    'user'  => 'utilisateur',
+    'email'  => 'email',
+    'first name'  => 'prénom',
+    'last name'  => 'nom',
+    'account'  => 'compte',
+    'ssl certificate'  => 'certificat ssl',
+    'ssl key'  => 'clé ssl',
+    'stats user password'  => 'Mot de passe du compte statistiques',
+    'stats username'  => 'utilisateur statistiques',
+    'stats password'  => 'mot de passe statistiques',
+    'ftp user password'  => 'mot de passe ftp',
+    'ftp user'  => 'utilisateur ftp',
+    'Last 70 lines of %s.%s.log' => 'Dernières 70 lignes du fichier %s.%s.log',
+    'Download AccessLog' => 'Télécharger le fichier AccessLog',
+    'Download ErrorLog' => 'Télécharger le fichier ErrorLog',
+    'Country' => 'Pays',
+    '2 letter code' => 'Code sur 2 lettres',
+    'State / Province' => 'Pays / Province',
+    'City / Locality' => 'Ville',
+    'Organization' => 'Organisation',
+
+   '1 account'  => '1 compte',
+    '%s accounts'  => '%s comptes',
+    '1 domain'  => '1 domaine',
+    '%s domains'  => '%s domaines',
+    '1 record'  => '1 enregistrement',
+    '%s records'  => '%s enregistrements',
+    '1 mail account'  => '1 compte email',
+    '%s mail accounts'  => '%s comptes email',
+    '1 database'  => '1 base de données',
+    '%s databases'  => '%s base de données',
+    '1 cron job'  => '1 tâche cron',
+    '%s cron jobs'  => '%s tâches cron',
+    '1 archive'  => '1 archive',
+    '%s archives'  => '%s archives',
+    '1 package'  => '1 paquet',
+    '%s packages'  => '%s paquets',
+    '1 IP address'  => '1 adresse IP',
+    '%s IP addresses'  => '%s adresses IP',
+    '1 month'  => '1 mois',
+    '%s months'  => '%s mois',
+    '1 log record'  => '1 enregistrement',
+    '%s log records'  => '%s enregistrements',
+    '1 object'  => '1 objet',
+    '%s objects'  => '%s objets',
+    'no exclusions' => 'pas d\'exclusions',
+
+    'USER_CREATED_OK'  => 'Utilisateur <a href="/edit/user/?user=%s"><b>%s</b></a> créé avec succès.',
+    'WEB_DOMAIN_CREATED_OK'  => 'Domaine <a href="/edit/web/?domain=%s"><b>%s</b></a> créé avec succès.',
+    'DNS_DOMAIN_CREATED_OK'  => 'Domaine DNS <a href="/list/dns/?domain=%s"><b>%s</b></a> créé avec succès.',
+    'DNS_RECORD_CREATED_OK'  => 'L\'enregistrement <b>%s.%s</b> a été créé avec succès.',
+    'MAIL_DOMAIN_CREATED_OK'  => 'Le domaine email <a href="/list/mail/?domain=%s"><b>%s</b></a> a été créé avec succès.',
+    'MAIL_ACCOUNT_CREATED_OK'  => 'Le compte email <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> a été créé avec succès.',
+    'DATABASE_CREATED_OK'  => 'La base de données <a href="/edit/db/?database=%s"><b>%s</b></a> a été créée avec succès.',
+    'CRON_CREATED_OK'  => 'La tâche Cron a été créée avec succès.',
+    'IP_CREATED_OK'  => 'L\'adresse IP <a href="/edit/ip/?ip=%s"><b>%s</b></a> a été créée avec succès.',
+    'PACKAGE_CREATED_OK'  => 'Le paquet <a href="/edit/package/?package=%s"><b>%s</b></a> a été créé avec succès.',
+    'SSL_GENERATED_OK' => 'Le certificat a été généré avec succès.',
+    'Autoupdate has been successfully enabled' => 'Les mises-à-jour automatiques ont été activées avec succès.',
+    'Autoupdate has been successfully disabled' => 'Les mises-à-jour automatiques ont été desactivées avec succès.',
+    'Changes has been saved.'  => 'Les changements ont été sauvegardés.',
+    'Confirmation'  => 'Confirmation',
+    'DELETE_USER_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer l\'utilisateur %s ?',
+    'SUSPEND_USER_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre l\'utilisateur %s ?',
+    'UNSUSPEND_USER_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver l\'utilisateur %s ?',
+    'DELETE_DOMAIN_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer le domaine %s ?',
+    'SUSPEND_DOMAIN_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre le domaine %s ?',
+    'UNSUSPEND_DOMAIN_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver le domaine %s ?',
+    'DELETE_RECORD_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer l\'enregistrement %s ?',
+    'SUSPEND_RECORD_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre l\'enregistrement %s ?',
+    'UNSUSPEND_RECORD_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver l\'enregistrement %s ?',
+    'DELETE_MAIL_ACCOUNT_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer %s ?',
+    'SUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre %s ?',
+    'UNSUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver %s ?',
+    'DELETE_DATABASE_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer la base de données %s ?',
+    'SUSPEND_DATABASE_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre la base de données %s ?',
+    'UNSUSPEND_DATABASE_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver la base de données %s ?',
+    'DELETE_CRON_CONFIRMATION' => 'Êtes-vous sûr de vouloir suprimer la tâche cron ?',
+    'SUSPEND_CRON_CONFIRMATION' => 'Êtes-vous sûr de vouloir suspendre la tâche cron ?',
+    'UNSUSPEND_CRON_CONFIRMATION' => 'Êtes-vous sûr de vouloir réactiver la tâche cron ?',
+    'DELETE_BACKUP_CONFIRMATION'  => 'Êtes-vous sûr de vouloir supprimer la sauvergarde %s ?',
+    'DELETE_EXCLUSION_CONFIRMATION' => 'Êtes-vous sûr de vouloir supprimer l\'exclusion %s ?',
+    'DELETE_PACKAGE_CONFIRMATION'  => 'Êtes-vous sûr de vouloir supprimer le paquet %s ?',
+    'DELETE_IP_CONFIRMATION'  => 'Êtes-vous sûr de vouloir supprimer l\'adresse IP %s ?',
+    'Welcome'  => 'Bienvenue',
+    'LOGGED_IN_AS'  => 'Connecté en tant que %s',
+    'Error'  => 'Erreur',
+    'Invalid username or password'  => 'Nom d\'utilisateur ou mot de passe invalide.',
+    'Invalid username or code'  => 'Nom d\'utilisateur ou code de confirmation invalide.',
+    'Passwords not match'  => 'Les mots de passe ne correspondent pas.',
+    'Please enter valid email address.'  => 'Veuillez entrer une adresse email valide.',
+    'Field "%s" can not be blank.'  => 'Le champ "%s" ne peut être vide.',
+    'Password is too short.'  => 'Le mot de passe est trop court (6 caractères minimum)',
+    'Error code:'  => 'Code erreur : %s',
+    'SERVICE_ACTION_FAILED'  => '"%s" "%s" échouée',
+    'IP address is in use' => 'L\'adresse IP est en cours d\'utilisation',
+    'BACKUP_SCHEDULED'  => 'La tâche a bien été ajoutée à la liste. Vous recevrez un mail de confirmation lorsque la sauvegarde sera prête pour le téléchargement.',
+    'BACKUP_EXISTS'  => 'La création d\'une sauvegarde est déjà en cours. Veuillez attendre que celle-ci soit terminée.',
+    'RESTORE_SCHEDULED'  => 'La tâche a bien été ajoutée à la liste. Vous recevrez un mail de confirmation lorsque sera terminée.',
+    'RESTORE_EXISTS'  => 'La restauration d\'une sauvegarde est déjà en cours. Veuillez attendre que celle-ci soit terminée avant d\en lancer une nouvelle.',
+
+    'WEB_EXCLUSIONS' => "Entrez les noms de domaines, un par ligne. Pour exclure tous les domaines utilisez *. Pour exclure des répertoires spécifiques utilisez le format suivant : domain.com:public_html/cache:public_html/tmp",
+    'DNS_EXCLUSIONS' => "Entrez les noms de domaines, un par ligne. Pour exclure tous les domaines utilisez *.",
+    'MAIL_EXCLUSIONS' => "Entrez les domaines, un par ligne. Pour exclure tous les domaines utilisez *. Pour exclure des comptes spécifiques utilisez le format suivant : domain.com:info:support:postmaster",
+    'DB_EXCLUSIONS' => "Entrez le nom complet des bases de données, une par ligne. Pour exclure toutes les bases de données utilisez *.",
+    'CRON_EXCLUSIONS' => "Pour explure toutes les tâches utilisez *.",
+    'USER_EXCLUSIONS' => "Entrez les noms de répertoires, un par ligne. Pour exclure tous les répertoires utilisez *.",
+
+    'Welcome to Vesta Control Panel'  => 'Bienvenue sur l\interface d\'administration Vesta CP',
+    'MAIL_FROM'  => 'Vesta Control Panel <noreply@%s>',
+    'GREETINGS_GORDON_FREEMAN' => "Bonjour, %s %s,\n",
+    'GREETINGS' => "Bonjour,\n",
+    'ACCOUNT_READY' => "Votre compte a été créé avec succès et est prêt à l\'emploi.\n\nhttps://%s/login/\nUtilisateur : %s\nMot de Passe : %s\n\n--\nVesta Control Panel\n",
+
+    'FTP login credentials'  => 'Identifiants de connexion FTP',
+    'FTP_ACCOUNT_READY' => "Le compte FTP a été créé avec succès et est prêt à l\'emploi.\n\nHôte : %s\nUtilisateur : %s_%s\nMot de Passe : %s\n\n--\nVesta Control Panel\n",
+
+    'Database Credentials'  => 'Identifiants de connexion à la Base de Données',
+    'DATABASE_READY' => "La base de données a été créée avec succès et est prête à l\'emploi.\n\nBase de Données : %s\nUtilisateur : %s\nMot de Passe: %s\n%s\n\n--\nVesta Control Panel\n",
+
+    'forgot password'  => 'mot de passe oublié',
+    'Confirm'  => 'Confirmer',
+    'New Password'  => 'Nouveau mot de passe',
+    'Confirm Password'  => 'Confirmer le mot de passe',
+    'Reset'  => 'Réinitialiser',
+    'Reset Code'  => 'Code de Réinitialisation',
+    'RESET_NOTICE'  => '',
+    'RESET_CODE_SENT'  => 'Un Code de Réinitialisation de votre mot de passe a été envoyé à votre adresse email<br>',
+    'MAIL_RESET_SUBJECT'  => 'Réinitialisation du mot de passe de %s',
+    'PASSWORD_RESET_REQUEST' => "Pour réinitialiser votre mot de passe, veuillez suivre le lien suivant :\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nSinon, vous pouvez suivre https://%s/reset/?action=code&user=%s et entrer le code de réinitialisation suivant :\n%s\n\nSi vous n'avez pas demandé la réinitialisation de votre mot de passe, veuillez ignorer ce message. Nous vous prions de nous excuser pour la gène occasionnée.\n\n--\nVesta Control Panel\n",
+);

+ 442 - 0
web/inc/i18n/it.php

@@ -0,0 +1,442 @@
+<?php
+/**
+ * Vesta language file
+ * Fabio Cagliero - fab120 (fabio@webnuvola.com)
+ * https://github.com/fab120/ - https://facebook.com/fab120
+ */
+
+$LANG['it'] = array(
+    'Packages'  => 'Pacchetti',
+    'IP'  => 'IP',
+    'Graphs'  => 'Grafici',
+    'Statistics'  => 'Statistiche',
+    'Log'  => 'Log',
+    'Services'  => 'Servizi',
+    'Updates'  => 'Aggiornamenti',
+    'Log in'  => 'Log in',
+    'Log out'  => 'Log out',
+
+    'USER'  => 'USER',
+    'WEB'  => 'WEB',
+    'DNS'  => 'DNS',
+    'MAIL'  => 'MAIL',
+    'DB'  => 'DB',
+    'CRON'  => 'CRON',
+    'BACKUP'  => 'BACKUP',
+
+    'Add User'  => 'Nuovo Utente',
+    'Add Domain'  => 'Nuovo Dominio',
+    'Add Web Domain'  => 'Nuovo Dominio',
+    'Add DNS Domain'  => 'Nuova Zona DNS',
+    'Add DNS Record'  => 'Nuovo Record',
+    'Add Mail Domain'  => 'Nuovo Dominio',
+    'Add Mail Account'  => 'Nuovo Account',
+    'Add Database'  => 'Nuovo Database',
+    'Add Cron Job'  => 'Nuovo Cron Job',
+    'Create Backup'  => 'Crea Backup',
+    'Configure'  => 'Configura',
+    'Restore All'  => 'Ripristina Tutto',
+    'Add Package'  => 'Nuovo Pacchetto',
+    'Add IP'  => 'Aggiungi IP',
+    'Search'  => 'Cerca',
+    'Overall Statistics'  => 'Statistiche Generali',
+    'Daily'  => 'Giornaliero',
+    'Weekly'  => 'Settimanale',
+    'Monthly'  => 'Mensile',
+    'Yearly'  => 'Annuale',
+    'Add'  => 'Aggiungi',
+    'Back'  => 'Indietro',
+    'Save'  => 'Salva',
+    'Submit'  => 'Invia',
+
+    'toggle all'  => 'inverti tutti',
+    'apply to selected'  => 'applica ai selezionati',
+    'rebuild'  => 'ricostruisci',
+    'rebuild web'  => 'ricostruisci web',
+    'rebuild dns'  => 'ricostruisci dns',
+    'rebuild mail'  => 'ricostruisci mail',
+    'rebuild db'  => 'ricostruisci db',
+    'rebuild cron'  => 'ricostruisci cron',
+    'update counters'  => 'aggiorna contatori',
+    'suspend'  => 'sospendi',
+    'unsuspend'  => 'riabilita',
+    'delete'  => 'cancella',
+    'show per user'  => 'mostra per utente',
+    'login as'  => 'accedi come',
+    'logout'  => 'logout',
+    'edit'  => 'modifica',
+    'open webstats'  => 'apri webstats',
+    'view logs'  => 'visualizza logs',
+    'list records'  => 'mostra %s record',
+    'add record'  => 'nuovo record',
+    'list accounts'  => 'mostra %s account',
+    'add account'  => 'aggiungi account',
+    'open webmail'  => 'apri webmail',
+    'open %s'  => 'apri %s',
+    'download'  => 'download',
+    'restore'  => 'ripristina',
+    'configure restore settings'  => 'configure restore settings',
+    'stop'  => 'ferma',
+    'start'  => 'avvia',
+    'restart'  => 'riavvia',
+    'update'  => 'aggiorna',
+    'generate'  => 'genera',
+    'Generate CSR' => 'Genera CSR',
+    'reread IP' => 'rileggi IP',
+    'enable autoupdate' => 'abilita aggiornamenti automatici',
+    'disable autoupdate' => 'disabilita aggiornamenti automatici',
+
+    'Adding User'  => 'Aggiunta Utente',
+    'Editing User'  => 'Modifica Utente',
+    'Adding Domain'  => 'Aggiunta Dominio',
+    'Editing Domain'  => 'Modifica Dominio',
+    'Adding DNS Domain'  => 'Aggiunta Dominio DNS',
+    'Editing DNS Domain'  => 'Modifica Dominio DNS',
+    'Adding DNS Record'  => 'Aggiunta Record DNS',
+    'Editing DNS Record'  => 'Modifica Record DNS',
+    'Adding Mail Domain'  => 'Aggiunta Dominio Mail',
+    'Editing Mail Domain'  => 'Modifica Dominio Mail',
+    'Adding Mail Account'  => 'Aggiunta Account Mail',
+    'Editing Mail Account'  => 'Modifica Account Mail',
+    'Adding database'  => 'Aggiunta database',
+    'Editing Cron Job'  => 'Modifica Cron Job',
+    'Adding Cron Job'  => 'Aggiunta Cron Job',
+    'Editing Database'  => 'Modifica Database',
+    'Adding Package'  => 'Aggiunta Pacchetto',
+    'Editing Package'  => 'Modifica Pacchetto',
+    'Adding IP address'  => 'Aggiunta Indirizzo IP',
+    'Editing IP Address'  => 'Modifica Indirizzo IP',
+    'Editing Backup Exclusions' => 'Modifica Esclusioni Backup',
+    'Generating CSR' => 'Genera CSR',
+    'Listing'  => 'Lista',
+    'Search Results'  => 'Risultati Ricerca',
+
+    'active'  => 'attivo',
+    'spnd'  => 'sospeso',
+    'suspended'  => 'sospeso',
+    'running'  => 'in esecuzione',
+    'stopped'  => 'fermato',
+    'outdated'  => 'obsoleto',
+    'updated'  => 'aggiornato',
+
+    'yes'  => 'si',
+    'no'  => 'no',
+    'none'  => 'nessuno',
+    'pb'  => 'pb',
+    'tb'  => 'tb',
+    'gb'  => 'gb',
+    'mb'  => 'mb',
+    'minute'  => 'minuto',
+    'hour'  => 'ora',
+    'day'  => 'giorno',
+    'days'  => 'giorni',
+    'hours'  => 'ore',
+    'minutes'  => 'minuti',
+    'month'  => 'mese',
+    'package'  => 'pacchetto',
+    'Bandwidth'  => 'Banda',
+    'Disk'  => 'Disco',
+    'Web'  => 'Web',
+    'Mail'  => 'Mail',
+    'Databases'  => 'Databases',
+    'User Directories'  => 'Directories Utente',
+    'Template'  => 'Template',
+    'Web Template'  => 'Apache Template',
+    'Proxy Template'  => 'Nginx Template',
+    'DNS Template'  => 'DNS Template',
+    'Web Domains'  => 'Domini Web',
+    'SSL Domains'  => 'Domini SSL',
+    'Web Aliases'  => 'Alias Web',
+    'per domain'  => 'per dominio',
+    'DNS Domains'  => 'Zone DNS',
+    'DNS domains'  => 'Zone DNS',
+    'DNS records'   => 'Record DNS',
+    'Name Servers'  => 'Name Servers',
+    'Mail Domains'  => 'Domini Mail',
+    'Mail Accounts'  => 'Account Mail',
+    'Cron Jobs'  => 'Cron Jobs',
+    'SSH Access'  => 'Accesso SSH',
+    'IP Addresses'  => 'Indirizzi IP',
+    'Backups'  => 'Backups',
+    'Backup System'  => 'Sistema Backup',
+    'backup exclusions' => 'esclusioni backup',
+    'template'  => 'template',
+    'SSL Support'  => 'Supporto SSL',
+    'SSL Home Directory'  => 'SSL Home',
+    'Proxy Support'  => 'Supporto Nginx',
+    'Proxy Extensions'  => 'Estensioni Nginx',
+    'Web Statistics'  => 'Statistiche Web',
+    'Additional FTP Account'  => 'FTP Addizionali',
+    'SOA'  => 'SOA',
+    'TTL'  => 'TTL',
+    'Expire'  => 'Scadenza',
+    'Records'  => 'Record',
+    'Catchall email'  => 'Catchall email',
+    'AntiVirus Support'  => 'Supporto AntiVirus',
+    'AntiSpam Support'  => 'Supporto AntiSpam',
+    'DKIM Support'  => 'Supporto DKIM',
+    'Accounts'  => 'Account',
+    'Quota'  => 'Quota',
+    'Autoreply'  => 'Autorisposta',
+    'Forward to'  => 'Inoltra a',
+    'Do not store forwarded mail' => 'Non salvare le email inoltrate',
+    'database'  => 'database',
+    'User'  => 'Utente',
+    'Host'  => 'Host',
+    'Charset'  => 'Charset',
+    'Min'  => 'Minuto',
+    'Hour'  => 'Ora',
+    'Day'  => 'Giorno',
+    'Month'  => 'Mese',
+    'Day of week'  => 'Giorno della settimana',
+    'local'  => 'local',
+    'Run Time'  => 'Tempo di Esecuzione',
+    'Backup Size'  => 'Dimensioni Backup',
+    'SYS'  => 'SYS',
+    'Domains'  => 'Domini',
+    'Status'  => 'Stato',
+    'shared'  => 'condiviso',
+    'dedicated'  => 'dedicato',
+    'Owner' => 'Proprietario',
+    'Users'  => 'Utenti',
+    'Load Average'  => 'Carico Medio',
+    'Memory Usage'  => 'Uso Memoria',
+    'HTTPD Usage'  => 'Utilizzo HTTPD',
+    'NGINX Usage'  => 'Utilizzo NGINX',
+    'MySQL Usage on localhost'  => 'Utilizzo MySQL su localhost',
+    'PostgreSQL Usage on localhost'  => 'Utilizzo PostgreSQL su localhost',
+    'Bandwidth Usage eth0'  => 'Utilizzo banda su eth0',
+    'FTP Usage'  => 'Utilizzo FTP',
+    'SSH Usage'  => 'Utilizzo SSH',
+    'reverse proxy'  => 'reverse proxy',
+    'web server'  => 'web server',
+    'dns server'  => 'dns server',
+    'mail server'  => 'mail server',
+    'pop/imap server'  => 'pop/imap server',
+    'email antivirus'  => 'email antivirus',
+    'email antispam'  => 'email antispam',
+    'database server'  => 'database server',
+    'ftp server'  => 'ftp server',
+    'job scheduler'  => 'job scheduler',
+    'CPU'  => 'CPU',
+    'Memory'  => 'Memoria',
+    'Uptime'  => 'Uptime',
+    'core package'  => 'pacchetto di sistema',
+    'php interpreter'  => 'interprete php',
+    'internal web server'  => 'web server interno',
+    'Version'  => 'Versione',
+    'Release'  => 'Release',
+    'Architecture'  => 'Architettura',
+    'Object'  => 'Oggetto',
+    'Owner'  => 'Proprietario',
+    'Username'  => 'Username',
+    'Password'  => 'Password',
+    'Email'  => 'Email',
+    'Package'  => 'Pacchetto',
+    'Language'  => 'Lingua',
+    'First Name'  => 'Nome',
+    'Last Name'  => 'Cognome',
+    'Send login credentials to email address'  => 'Invia le credenziali di login per email',
+    'Default Template'  => 'Default Template',
+    'Default Name Servers'  => 'Default Name Servers',
+    'Domain'  => 'Dominio',
+    'DNS Support'  => 'Supporto DNS',
+    'Mail Support'  => 'Supporto Mail',
+    'Advanced options'  => 'Opzioni Avanzate',
+    'Aliases'  => 'Alias Dominio',
+    'SSL Certificate'  => 'Certificato SSL',
+    'SSL Key'  => 'SSL Key',
+    'SSL Certificate Authority / Intermediate'  => 'SSL Certificate Authority / Intermediate',
+    'SSL CSR' => 'SSL CSR',
+    'optional'  => 'opzionale',
+    'internal' => 'interno',
+    'Statistics Authorization'  => 'Autorizzazione Statistiche',
+    'Statistics Auth'  => 'Statistiche Auth',
+    'Account'  => 'Account',
+    'Prefix will be automaticaly added to username'  => 'Il prefisso %s verrà automatiamente aggiunto all\'username',
+    'Send FTP credentials to email'  => 'Invia le credenziali FTP per email',
+    'Expiration Date'  => 'Data di scadenza',
+    'YYYY-MM-DD'  => 'YYYY-MM-DD',
+    'Name servers'  => 'Name servers',
+    'Record'  => 'Record',
+    'IP or Value'  => 'IP o Valore',
+    'Priority'  => 'Priorità',
+    'Record Number' => 'Numero Record',
+    'in megabytes'  => 'in megabytes',
+    'Message'  => 'Messaggio',
+    'use local-part'  => 'usa local-part',
+    'one or more email addresses'  => 'uno o più indirizzi email',
+    'Prefix will be automaticaly added to database name and database user'  => 'Il prefisso %s verrà automatiamente aggiunto al nome e all\'utente del database',
+    'Database'  => 'Database',
+    'Type'  => 'Tipo',
+    'Minute'  => 'Minuto',
+    'Command'  => 'Comando',
+    'Package Name'  => 'Nome Pacchetto',
+    'Netmask'  => 'Netmask',
+    'Interface'  => 'Interfaccia',
+    'Shared'  => 'Condiviso',
+    'Assigned user'  => 'Utente Assegnato',
+    'Assigned domain'  => 'Dominio Assegnato',
+    'NAT IP association' => 'Associazione IP NAT',
+    'shell'  => 'shell',
+    'web domains'  => 'domini web',
+    'web aliases'  => 'aliases web',
+    'dns records'  => 'record dns',
+    'mail domains'  => 'domini mail',
+    'mail accounts'  => 'account mail',
+    'accounts'  => 'account',
+    'databases'  => 'database',
+    'cron jobs'  => 'cron jobs',
+    'backups'  => 'backups',
+    'quota'  => 'quota',
+    'day of week'  => 'giorno della settimanta',
+    'cmd'  => 'cmd',
+    'users'  => 'users',
+    'domains'  => 'domini',
+    'aliases'  => 'alias',
+    'records'  => 'record',
+    'jobs'  => 'jobs',
+    'username'  => 'username',
+    'password'  => 'password',
+    'type'  => 'tipo',
+    'charset'  => 'charset',
+    'domain'  => 'dominio',
+    'ip'  => 'ip',
+    'ip address'  => 'indirizzo ip',
+    'IP address'  => 'indirizzo IP',
+    'netmask'  => 'netmask',
+    'interface'  => 'interfaccia',
+    'assigned user'  => 'utente assegnato',
+    'ns1'  => 'ns1',
+    'ns2'  => 'ns2',
+    'user'  => 'user',
+    'email'  => 'email',
+    'first name'  => 'nome',
+    'last name'  => 'cognome',
+    'account'  => 'account',
+    'ssl certificate'  => 'certificato ssl',
+    'ssl key'  => 'key ssl',
+    'stats user password'  => 'stats user password',
+    'stats username'  => 'stats username',
+    'stats password'  => 'stats password',
+    'ftp user password'  => 'ftp user password',
+    'ftp user'  => 'ftp user',
+    'Last 70 lines of %s.%s.log' => 'Ultime 70 righe di %s.%s.log',
+    'Download AccessLog' => 'Download AccessLog',
+    'Download ErrorLog' => 'Download ErrorLog',
+    'Country' => 'Paese',
+    '2 letter code' => 'codice di 2 lettere',
+    'State / Province' => 'Stato / Provincia',
+    'City / Locality' => 'Città / Località',
+    'Organization' => 'Organizzazione',
+
+   '1 account'  => '1 account',
+    '%s accounts'  => '%s account',
+    '1 domain'  => '1 dominio',
+    '%s domains'  => '%s domini',
+    '1 record'  => '1 record',
+    '%s records'  => '%s record',
+    '1 mail account'  => '1 account mail',
+    '%s mail accounts'  => '%s account mail',
+    '1 database'  => '1 database',
+    '%s databases'  => '%s databases',
+    '1 cron job'  => '1 cron job',
+    '%s cron jobs'  => '%s cron jobs',
+    '1 archive'  => '1 archivio',
+    '%s archives'  => '%s archivi',
+    '1 package'  => '1 pacchetto',
+    '%s packages'  => '%s pacchetti',
+    '1 IP address'  => '1 indirizzo IP',
+    '%s IP addresses'  => '%s indirizzi IP',
+    '1 month'  => '1 mese',
+    '%s months'  => '%s mesi',
+    '1 log record'  => '1 log record',
+    '%s log records'  => '%s log record',
+    '1 object'  => '1 oggetto',
+    '%s objects'  => '%s oggetti',
+    'no exclusions' => 'senza esclusioni',
+
+    'USER_CREATED_OK'  => 'L\'utente <a href="/edit/user/?user=%s"><b>%s</b></a> è stato creato con successo.',
+    'WEB_DOMAIN_CREATED_OK'  => 'Il dominio <a href="/edit/web/?domain=%s"><b>%s</b></a> è stato creato con successo.',
+    'DNS_DOMAIN_CREATED_OK'  => 'Il dominio DNS <a href="/list/dns/?domain=%s"><b>%s</b></a> è stato creato con successo.',
+    'DNS_RECORD_CREATED_OK'  => 'Il record <b>%s.%s</b> è stato creato con successo.',
+    'MAIL_DOMAIN_CREATED_OK'  => 'Dominio Mail <a href="/list/mail/?domain=%s"><b>%s</b></a> è stato creato con successo.',
+    'MAIL_ACCOUNT_CREATED_OK'  => 'L\'account mail <a href="/edit/mail/?account=%s&domain=%s"><b>%s@%s</b></a> è stato creato con successo.',
+    'DATABASE_CREATED_OK'  => 'Il database <a href="/edit/db/?database=%s"><b>%s</b></a> è stato creato con successo.',
+    'CRON_CREATED_OK'  => 'Il cron job è stato creato con successo.',
+    'IP_CREATED_OK'  => 'L\'indirizzo IP <a href="/edit/ip/?ip=%s"><b>%s</b></a> è stato creato con successo.',
+    'PACKAGE_CREATED_OK'  => 'Il pacchetto <a href="/edit/package/?package=%s"><b>%s</b></a> è stato creato con successo.',
+    'SSL_GENERATED_OK' => 'Il certificato è stato generato con successo.',
+    'Autoupdate has been successfully enabled' => 'Gli aggiornamenti automatici sono stati abilitati',
+    'Autoupdate has been successfully disabled' => 'Gli aggiornamenti automatici sono stati disabilitati',
+    'Changes has been saved.'  => 'I cambiamenti sono stati salvati.',
+    'Confirmation'  => 'Conferma',
+    'DELETE_USER_CONFIRMATION' => 'Sei sicuro di voler cancellare l\'utente %s?',
+    'SUSPEND_USER_CONFIRMATION' => 'Sei sicuro di voler disabilitare l\'utente %s?',
+    'UNSUSPEND_USER_CONFIRMATION' => 'Sei sicuro di voler riabilitare l\'utente %s?',
+    'DELETE_DOMAIN_CONFIRMATION' => 'Sei sicuro di voler cancellare il dominio %s?',
+    'SUSPEND_DOMAIN_CONFIRMATION' => 'Sei sicuro di voler disabilitare il dominio %s?',
+    'UNSUSPEND_DOMAIN_CONFIRMATION' => 'Sei sicuro di voler riabilitare il dominio %s?',
+    'DELETE_RECORD_CONFIRMATION' => 'Sei sicuro di voler cancellare il record %s?',
+    'SUSPEND_RECORD_CONFIRMATION' => 'Sei sicuro di voler disabilitare il record %s?',
+    'UNSUSPEND_RECORD_CONFIRMATION' => 'Sei sicuro di voler riabilitare il record %s?',
+    'DELETE_MAIL_ACCOUNT_CONFIRMATION' => 'Sei sicuro di voler cancellare %s?',
+    'SUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Sei sicuro di voler disabilitare %s?',
+    'UNSUSPEND_MAIL_ACCOUNT_CONFIRMATION' => 'Sei sicuro di voler riabilitare %s?',
+    'DELETE_DATABASE_CONFIRMATION' => 'Sei sicuro di voler cancellare il database %s?',
+    'SUSPEND_DATABASE_CONFIRMATION' => 'Sei sicuro di voler disabilitare il database %s?',
+    'UNSUSPEND_DATABASE_CONFIRMATION' => 'Sei sicuro di voler riabilitare il database %s?',
+    'DELETE_CRON_CONFIRMATION' => 'Sei sicuro di voler cancellare il cron job?',
+    'SUSPEND_CRON_CONFIRMATION' => 'Sei sicuro di voler disabilitare il cron job?',
+    'UNSUSPEND_CRON_CONFIRMATION' => 'Sei sicuro di voler riabilitare il cron job?',
+    'DELETE_BACKUP_CONFIRMATION'  => 'Sei sicuro di voler cancellare il backup %s?',
+    'DELETE_EXCLUSION_CONFIRMATION' => 'Sei sicuro di voler cancellare l\'esclusione %s?',
+    'DELETE_PACKAGE_CONFIRMATION'  => 'Sei sicuro di voler cancellare il pacchetto %s?',
+    'DELETE_IP_CONFIRMATION'  => 'Sei sicuro di voler l\'indirizoz IP %s?',
+    'Welcome'  => 'Benvenuto',
+    'LOGGED_IN_AS'  => 'Connesso come l\'utente %s',
+    'Error'  => 'Errore',
+    'Invalid username or password'  => 'Username o password non validi',
+    'Invalid username or code'  => 'Esername o codice non validi',
+    'Passwords not match'  => 'Le passwords non coincidono',
+    'Please enter valid email address.'  => 'Inserisci un\'indirizzo email valido.',
+    'Field "%s" can not be blank.'  => 'Il campo "%s" non può essere lasciato vuoto.',
+    'Password is too short.'  => 'La password è troppo corta (minimo 6 caratteri)',
+    'Error code:'  => 'Codice errore: %s',
+    'SERVICE_ACTION_FAILED'  => '"%s" "%s" fallita',
+    'IP address is in use' => 'L\'indirizzo IP è già in uso',
+    'BACKUP_SCHEDULED'  => 'L\'operazione è stata aggiunta alla coda. Riceverai una notifica via email quando il tuo backup sarà pronto per il download.',
+    'BACKUP_EXISTS'  => 'È già in corso la creazione di un backup. Perfavore attendi che il backup finisca.',
+    'RESTORE_SCHEDULED'  => 'L\'operazione è stata aggiunta alla coda. Riceverai una notifica via email quando il tuo backup sarà pronto per il download.',
+    'RESTORE_EXISTS'  => 'È già in corso un\'oprazione di ripristino. Attendi che finisca prima di rilanciarla nuovamento.',
+
+    'WEB_EXCLUSIONS' => "Scrivi un nome di dominio per riga. Per escludere tutti i domini usa *. Per escludere directory specifiche usa il formato: domain.com:public_html/cache:public_html/tmp",
+    'DNS_EXCLUSIONS' => "Scrivi un nome di dominio per riga. Per escludere tutti i domini usa *",
+    'MAIL_EXCLUSIONS' => "Scrivi un nome di dominio per riga. Per escludere tutti i domini usa *. Per escludere account specifici usare il formato: domain.com:info:support:postmaster",
+    'DB_EXCLUSIONS' => "Scrivi un nome completo di database per riga. Per escludere tutti i database usa *",
+    'CRON_EXCLUSIONS' => "Per escludere tutti i cron job usa *",
+    'USER_EXCLUSIONS' => "Scrivi un nome di directory per riga. Per escludere tutte le directory usa *",
+
+    'Welcome to Vesta Control Panel'  => 'Benvenuto nel Vesta Control Panel',
+    'MAIL_FROM'  => 'Vesta Control Panel <noreply@%s>',
+    'GREETINGS_GORDON_FREEMAN' => "Ciao, %s %s,\n",
+    'GREETINGS' => "Ciao,\n",
+    'ACCOUNT_READY' => "Il tuo account è stato creato ed è pronto per l\'utilizzo.\n\nhttps://%s/login/\nUsername: %s\nPassword: %s\n\n--\nVesta Control Panel\n",
+
+    'FTP login credentials'  => 'Credenziali login FTP',
+    'FTP_ACCOUNT_READY' => "L\'account FTP è stato creato ed è pronto per l\'uso.\n\nHostname: %s\nUsername: %s_%s\nPassword: %s\n\n--\nVesta Control Panel\n",
+
+    'Database Credentials'  => 'Credenziali Database',
+    'DATABASE_READY' => "Il database è stato creato con successo.\n\nDatabase: %s\nUser: %s\nPassword: %s\n%s\n\n--\nVesta Control Panel\n",
+
+    'forgot password'  => 'password dimenticata',
+    'Confirm'  => 'Conferma',
+    'New Password'  => 'Nuova Password',
+    'Confirm Password'  => 'Conferma Password',
+    'Reset'  => 'Reset',
+    'Reset Code'  => 'Codice Reset',
+    'RESET_NOTICE'  => '',
+    'RESET_CODE_SENT'  => 'Il codice di reset per la tua password ti è stato inviato per email<br>',
+    'MAIL_RESET_SUBJECT'  => 'Password Reset per %s',
+    'PASSWORD_RESET_REQUEST' => "Per fare il reset della password per il pannello di controllo clicca sul link:\nhttps://%s/reset/?action=confirm&user=%s&code=%s\n\nAlternativamente puoi andare su https://%s/reset/?action=code&user=%s e inserire questo codice di reset:\n%s\n\nSe non hai richiesto il reset della tua password, ignora questa email.\n\n--\nVesta Control Panel\n",
+);