Browse Source

[Compose] Updated PHP-FPM image
[Web] Rename configuration menu
[Web] Show warning when configuration disabled quarantine

andryyy 6 years ago
parent
commit
57aa379a2a

+ 1 - 0
.gitignore

@@ -25,5 +25,6 @@ data/conf/rspamd/custom/*
 data/conf/portainer/
 data/conf/portainer/
 data/gitea/
 data/gitea/
 data/gogs/
 data/gogs/
+data/conf/sogo/plist_ldap
 .github/
 .github/
 docker-compose.override.yml
 docker-compose.override.yml

+ 1 - 1
data/web/admin.php

@@ -11,7 +11,7 @@ $tfa_data = get_tfa();
     <li role="presentation" class="active"><a href="#tab-access" aria-controls="tab-access" role="tab" data-toggle="tab"><?=$lang['admin']['access'];?></a></li>
     <li role="presentation" class="active"><a href="#tab-access" aria-controls="tab-access" role="tab" data-toggle="tab"><?=$lang['admin']['access'];?></a></li>
     <li role="presentation"><a href="#tab-config" aria-controls="tab-config" role="tab" data-toggle="tab"><?=$lang['admin']['configuration'];?></a></li>
     <li role="presentation"><a href="#tab-config" aria-controls="tab-config" role="tab" data-toggle="tab"><?=$lang['admin']['configuration'];?></a></li>
     <li role="presentation"><a href="#tab-sys-mails" aria-controls="tab-sys-mails" role="tab" data-toggle="tab"><?=$lang['admin']['sys_mails'];?></a></li>
     <li role="presentation"><a href="#tab-sys-mails" aria-controls="tab-sys-mails" role="tab" data-toggle="tab"><?=$lang['admin']['sys_mails'];?></a></li>
-    <li role="presentation"><a href="#tab-mailq" aria-controls="tab-mailq" role="tab" data-toggle="tab">Queue manager</a></li>
+    <li role="presentation"><a href="#tab-mailq" aria-controls="tab-mailq" role="tab" data-toggle="tab"><?=$lang['admin']['queue_manager'];?></a></li>
   </ul>
   </ul>
 
 
   <div class="tab-content" style="padding-top:20px">
   <div class="tab-content" style="padding-top:20px">

+ 3 - 9
data/web/inc/functions.quarantine.inc.php

@@ -349,16 +349,10 @@ function quarantine($_action, $_data = null) {
       return $q_meta;
       return $q_meta;
     break;
     break;
     case 'settings':
     case 'settings':
-      if ($_SESSION['mailcow_cc_role'] != "admin") {
-        $_SESSION['return'][] = array(
-          'type' => 'danger',
-          'log' => array(__FUNCTION__, $_action, $_data_log),
-          'msg' => 'access_denied'
-        );
-        return false;
-      }
       try {
       try {
-        $settings['exclude_domains'] = json_decode($redis->Get('Q_EXCLUDE_DOMAINS'), true);
+        if ($_SESSION['mailcow_cc_role'] == "admin") {
+          $settings['exclude_domains'] = json_decode($redis->Get('Q_EXCLUDE_DOMAINS'), true);
+        }
         $settings['max_size'] = $redis->Get('Q_MAX_SIZE');
         $settings['max_size'] = $redis->Get('Q_MAX_SIZE');
         $settings['retention_size'] = $redis->Get('Q_RETENTION_SIZE');
         $settings['retention_size'] = $redis->Get('Q_RETENTION_SIZE');
       }
       }

+ 1 - 0
data/web/inc/header.inc.php

@@ -78,6 +78,7 @@
                 ?>
                 ?>
                   <li<?= (preg_match("/admin/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/admin"><?= $lang['header']['administration']; ?></a></li>
                   <li<?= (preg_match("/admin/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/admin"><?= $lang['header']['administration']; ?></a></li>
                   <li<?= (preg_match("/debug/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/debug"><?= $lang['header']['debug']; ?></a></li>
                   <li<?= (preg_match("/debug/i", $_SERVER['REQUEST_URI'])) ? ' class="active"' : ''; ?>><a href="/debug"><?= $lang['header']['debug']; ?></a></li>
+                  <li class="divider"></li>
                 <?php
                 <?php
                 }
                 }
                 if ($_SESSION['mailcow_cc_role'] == 'admin' || $_SESSION['mailcow_cc_role'] == 'domainadmin') {
                 if ($_SESSION['mailcow_cc_role'] == 'admin' || $_SESSION['mailcow_cc_role'] == 'domainadmin') {

+ 6 - 5
data/web/lang/lang.de.php

@@ -249,9 +249,12 @@ $lang['start']['imap_smtp_server_auth_info'] = 'Bitte verwenden Sie Ihre vollst
 Ihre Anmeldedaten werden durch die obligatorische Verschlüsselung entgegen des Begriffes "PLAIN" nicht unverschlüsselt übertragen.';
 Ihre Anmeldedaten werden durch die obligatorische Verschlüsselung entgegen des Begriffes "PLAIN" nicht unverschlüsselt übertragen.';
 $lang['start']['help'] = 'Hilfe ein-/ausblenden';
 $lang['start']['help'] = 'Hilfe ein-/ausblenden';
 $lang['header']['mailcow_settings'] = 'Konfiguration';
 $lang['header']['mailcow_settings'] = 'Konfiguration';
-$lang['header']['administration'] = 'Administration';
-$lang['header']['mailboxes'] = 'Mailboxen';
+$lang['header']['administration'] = 'Server-Konfiguration';
+$lang['header']['mailboxes'] = 'E-Mail-Setup';
 $lang['header']['user_settings'] = 'Benutzereinstellungen';
 $lang['header']['user_settings'] = 'Benutzereinstellungen';
+$lang['header']['quarantine'] = "Quarantäne";
+$lang['header']['debug'] = "Systeminformation";
+$lang['quarantine']['disabled_by_config'] = "Die derzeitige Konfiguration deaktiviert die Funktion des Quarantäne-Systems.";
 $lang['mailbox']['tls_policy_maps'] = 'TLS-Richtlinien';
 $lang['mailbox']['tls_policy_maps'] = 'TLS-Richtlinien';
 $lang['mailbox']['tls_policy_maps_long'] = 'Ausgehende TLS-Richtlinien';
 $lang['mailbox']['tls_policy_maps_long'] = 'Ausgehende TLS-Richtlinien';
 $lang['mailbox']['tls_policy_maps_info'] = 'Nachstehende Richtlinien erzwingen TLS-Transportregeln unabhängig von TLS-Richtlinieneinstellungen eines Benutzers.<br>
 $lang['mailbox']['tls_policy_maps_info'] = 'Nachstehende Richtlinien erzwingen TLS-Transportregeln unabhängig von TLS-Richtlinieneinstellungen eines Benutzers.<br>
@@ -512,6 +515,7 @@ $lang['admin']['dkim_from_title'] = 'Quellobjekt für Duplizierung';
 $lang['admin']['dkim_to_title'] = 'Ziel-Objekt(e) werden überschrieben';
 $lang['admin']['dkim_to_title'] = 'Ziel-Objekt(e) werden überschrieben';
 $lang['admin']['dkim_domains_wo_keys'] = "Domains mit fehlenden Keys auswählen";
 $lang['admin']['dkim_domains_wo_keys'] = "Domains mit fehlenden Keys auswählen";
 $lang['admin']['add'] = 'Hinzufügen';
 $lang['admin']['add'] = 'Hinzufügen';
+$lang['admin']['queue_manager'] = 'Queue Manager';
 $lang['add']['add_domain_restart'] = 'Domain hinzufügen und SOGo neustarten';
 $lang['add']['add_domain_restart'] = 'Domain hinzufügen und SOGo neustarten';
 $lang['add']['add_domain_only'] = 'Nur Domain hinzufügen';
 $lang['add']['add_domain_only'] = 'Nur Domain hinzufügen';
 $lang['admin']['configuration'] = 'Konfiguration';
 $lang['admin']['configuration'] = 'Konfiguration';
@@ -656,9 +660,6 @@ $lang['warning']['fuzzy_learn_error'] = "Fuzzy Lernfehler: %s";
 $lang['danger']['spam_learn_error'] = "Spam Lernfehler: %s";
 $lang['danger']['spam_learn_error'] = "Spam Lernfehler: %s";
 $lang['success']['qlearn_spam'] = "Nachricht ID %s wurde als Spam gelernt und gelöscht";
 $lang['success']['qlearn_spam'] = "Nachricht ID %s wurde als Spam gelernt und gelöscht";
 
 
-$lang['header']['quarantine'] = "Quarantäne";
-$lang['header']['debug'] = "Debugging";
-
 $lang['debug']['log_info'] = '<p>mailcow <b>in-memory Logs</b> werden in Redis Listen gespeichert, die maximale Anzahl der Einträge pro Anwendung richtet sich nach LOG_LINES (%d).
 $lang['debug']['log_info'] = '<p>mailcow <b>in-memory Logs</b> werden in Redis Listen gespeichert, die maximale Anzahl der Einträge pro Anwendung richtet sich nach LOG_LINES (%d).
   <br>In-memory Logs sind vergänglich und nicht zur ständigen Aufbewahrung bestimmt. Alle Anwendungen, die in-memory protokollieren, schreiben ebenso in den Docker Daemon.
   <br>In-memory Logs sind vergänglich und nicht zur ständigen Aufbewahrung bestimmt. Alle Anwendungen, die in-memory protokollieren, schreiben ebenso in den Docker Daemon.
   <br>Das in-memory Protokoll versteht sich als schnelle Übersicht zum Debugging eines Containers, für komplexere Protokolle sollte der Docker Daemon konsultiert werden.</p>
   <br>Das in-memory Protokoll versteht sich als schnelle Übersicht zum Debugging eines Containers, für komplexere Protokolle sollte der Docker Daemon konsultiert werden.</p>

+ 7 - 6
data/web/lang/lang.en.php

@@ -252,9 +252,12 @@ $lang['start']['imap_smtp_server_auth_info'] = 'Please use your full email addre
 Your login data will be encrypted by the server-side mandatory encryption.';
 Your login data will be encrypted by the server-side mandatory encryption.';
 $lang['start']['help'] = 'Show/Hide help panel';
 $lang['start']['help'] = 'Show/Hide help panel';
 $lang['header']['mailcow_settings'] = 'Configuration';
 $lang['header']['mailcow_settings'] = 'Configuration';
-$lang['header']['administration'] = 'Administration';
-$lang['header']['mailboxes'] = 'Mailboxes';
-$lang['header']['user_settings'] = 'User settings';
+$lang['header']['administration'] = 'Configuration & Details';
+$lang['header']['mailboxes'] = 'Mail Setup';
+$lang['header']['user_settings'] = 'User Settings';
+$lang['header']['quarantine'] = "Quarantine";
+$lang['header']['debug'] = "System Information";
+$lang['quarantine']['disabled_by_config'] = "The current system configuration disables the quarantine functionality.";
 $lang['mailbox']['tls_policy_maps'] = 'TLS policy maps';
 $lang['mailbox']['tls_policy_maps'] = 'TLS policy maps';
 $lang['mailbox']['tls_policy_maps_long'] = 'Outgoing TLS policy map overrides';
 $lang['mailbox']['tls_policy_maps_long'] = 'Outgoing TLS policy map overrides';
 $lang['mailbox']['tls_policy_maps_info'] = 'This policy map overrides outgoing TLS transport rules independently of a users TLS policy settings.<br>
 $lang['mailbox']['tls_policy_maps_info'] = 'This policy map overrides outgoing TLS transport rules independently of a users TLS policy settings.<br>
@@ -494,6 +497,7 @@ $lang['admin']['rspamd-com_settings'] = '<a href="https://rspamd.com/doc/configu
   - A setting name will be auto-generated, please see the example presets below.';
   - A setting name will be auto-generated, please see the example presets below.';
 
 
 $lang['admin']['no_new_rows'] = 'No further rows available';
 $lang['admin']['no_new_rows'] = 'No further rows available';
+$lang['admin']['queue_manager'] = 'Queue manager';
 $lang['admin']['additional_rows'] = ' additional rows were added'; // parses to 'n additional rows were added'
 $lang['admin']['additional_rows'] = ' additional rows were added'; // parses to 'n additional rows were added'
 $lang['admin']['private_key'] = 'Private key';
 $lang['admin']['private_key'] = 'Private key';
 $lang['admin']['import'] = 'Import';
 $lang['admin']['import'] = 'Import';
@@ -672,9 +676,6 @@ $lang['warning']['fuzzy_learn_error'] = "Fuzzy hash learn error: %s";
 $lang['danger']['spam_learn_error'] = "Spam learn error: %s";
 $lang['danger']['spam_learn_error'] = "Spam learn error: %s";
 $lang['success']['qlearn_spam'] = "Message ID %s was learned as spam and deleted";
 $lang['success']['qlearn_spam'] = "Message ID %s was learned as spam and deleted";
 
 
-$lang['header']['quarantine'] = "Quarantine";
-$lang['header']['debug'] = "Debug";
-
 $lang['debug']['log_info'] = '<p>mailcow <b>in-memory logs</b> are collected in Redis lists and trimmed to LOG_LINES (%d) every minute to reduce hammering.
 $lang['debug']['log_info'] = '<p>mailcow <b>in-memory logs</b> are collected in Redis lists and trimmed to LOG_LINES (%d) every minute to reduce hammering.
   <br>In-memory logs are not meant to be persistent. All applications that log in-memory, also log to the Docker daemon and therefore to the default logging driver.
   <br>In-memory logs are not meant to be persistent. All applications that log in-memory, also log to the Docker daemon and therefore to the default logging driver.
   <br>The in-memory log type should be used for debugging minor issues with containers.</p>
   <br>The in-memory log type should be used for debugging minor issues with containers.</p>

+ 9 - 0
data/web/quarantine.php

@@ -14,6 +14,15 @@ $_SESSION['return_to'] = $_SERVER['REQUEST_URI'];
           <h3 class="panel-title"><?=$lang['quarantine']['quarantine'];?></h3>
           <h3 class="panel-title"><?=$lang['quarantine']['quarantine'];?></h3>
         </div>
         </div>
         <p style="margin:10px" class="help-block"><?=$lang['quarantine']['qinfo'];?></p>
         <p style="margin:10px" class="help-block"><?=$lang['quarantine']['qinfo'];?></p>
+        <p style="margin:10px">
+        <?php
+        if (empty(quarantine('settings')['retention_size']) || empty(quarantine('settings')['max_size'])):
+        ?>
+        <span class="help-block"><span class="glyphicon glyphicon-remove text-danger" style="font-size:10px"></span> <b><?=$lang['quarantine']['disabled_by_config'];?></b></span>
+        <?php
+        endif;
+        ?>
+        </p>
         <div class="table-responsive">
         <div class="table-responsive">
           <table id="quarantinetable" class="table table-striped"></table>
           <table id="quarantinetable" class="table table-striped"></table>
         </div>
         </div>

+ 1 - 1
docker-compose.yml

@@ -95,7 +95,7 @@ services:
             - rspamd
             - rspamd
 
 
     php-fpm-mailcow:
     php-fpm-mailcow:
-      image: mailcow/phpfpm:1.23
+      image: mailcow/phpfpm:1.24
       build: ./data/Dockerfiles/phpfpm
       build: ./data/Dockerfiles/phpfpm
       command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
       command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
       depends_on:
       depends_on: