diff --git a/data/web/admin.php b/data/web/admin.php
index 0e635566..bcd08d9d 100644
--- a/data/web/admin.php
+++ b/data/web/admin.php
@@ -14,7 +14,7 @@ if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CAC
   <ul class="nav nav-tabs" role="tablist">
     <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-routing" aria-controls="tab-config" role="tab" data-toggle="tab"><?=$lang['admin']['routing'];?></a></li>
+    <li role="presentation"><a href="#tab-routing" aria-controls="tab-routing" role="tab" data-toggle="tab"><?=$lang['admin']['routing'];?></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"><?=$lang['admin']['queue_manager'];?></a></li>
     <li role="presentation"><a href="#tab-rspamdmaps" aria-controls="tab-rspamdmaps" role="tab" data-toggle="tab"><?=$lang['admin']['rspamd_global_filters'];?></a></li>
@@ -350,8 +350,8 @@ if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CAC
 
   <div role="tabpanel" class="tab-pane" id="tab-config">
     <div class="row">
-    <div id="sidebar-admin" class="col-sm-2 hidden-xs">
-      <div id="scrollbox" class="list-group">
+    <div id="sidebar-admin-config" class="col-sm-2 hidden-xs">
+      <div id="scrollbox-config" class="list-group">
         <a href="#dkim" class="list-group-item"><?=$lang['admin']['dkim_keys'];?></a>
         <a href="#fwdhosts" class="list-group-item"><?=$lang['admin']['forwarding_hosts'];?></a>
         <a href="#f2bparams" class="list-group-item"><?=$lang['admin']['f2b_parameters'];?></a>
@@ -1139,43 +1139,57 @@ if (!isset($_SESSION['gal']) && $license_cache = $redis->Get('LICENSE_STATUS_CAC
   </div>
 
   <div role="tabpanel" class="tab-pane" id="tab-rspamdmaps">
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <?=$lang['admin']['rspamd_global_filters'];?>
+    <div class="row">
+    <div id="sidebar-admin-maps" class="col-sm-2 hidden-xs">
+      <div id="scrollbox-maps" class="list-group">
+        <a href="#regexmaps" class="list-group-item">Regex maps</a>
+        <!-- <a href="#standardmaps" class="list-group-item">Standard maps</a> -->
+        <a href="#top" class="list-group-item" style="border-top:1px dashed #dadada">↸ <?=$lang['admin']['to_top'];?></a>
       </div>
-      <div class="panel-body">
-        <p><?=$lang['admin']['rspamd_global_filters_info'];?></p>
-        <div id="confirm_show_rspamd_global_filters" class="<?=($_SESSION['show_rspamd_global_filters'] === true) ? 'hidden' : '';?>">
-          <div class="form-group">
-            <div class="col-sm-offset-2 col-sm-10">
-              <label>
-                <input type="checkbox" id="show_rspamd_global_filters"> <?=$lang['admin']['rspamd_global_filters_agree'];?>
-              </label>
-            </div>
-          </div>
+    </div>
+    <div class="col-sm-10">
+      <div class="panel panel-default">
+        <div class="panel-heading">
+          <?=$lang['admin']['rspamd_global_filters'];?>
         </div>
-        <div id="rspamd_global_filters" class="<?=($_SESSION['show_rspamd_global_filters'] !== true) ? 'hidden' : '';?>">
-        <?php
-        foreach ($RSPAMD_MAPS as $rspamd_desc => $rspamd_map):
-        ?>
-        <hr>
-        <form class="form-horizontal" data-id="<?=$rspamd_map;?>" role="form" method="post">
-          <div class="form-group">
-            <label class="control-label col-sm-3" for="<?=$rspamd_map;?>"><?=$rspamd_desc;?><br><small><?=$rspamd_map;?></small></label>
-            <div class="col-sm-9">
-              <textarea id="<?=$rspamd_map;?>" spellcheck="false" autocorrect="off" autocapitalize="none" class="form-control textarea-code" rows="10" name="rspamd_map_data" required><?=file_get_contents('/rspamd_custom_maps/' . $rspamd_map);?></textarea>
+        <div class="panel-body">
+          <p><?=$lang['admin']['rspamd_global_filters_info'];?></p>
+          <div id="confirm_show_rspamd_global_filters" class="<?=($_SESSION['show_rspamd_global_filters'] === true) ? 'hidden' : '';?>">
+            <div class="form-group">
+              <div class="col-sm-offset-2 col-sm-10">
+                <label>
+                  <input type="checkbox" id="show_rspamd_global_filters"> <?=$lang['admin']['rspamd_global_filters_agree'];?>
+                </label>
+              </div>
             </div>
           </div>
-          <div class="form-group">
-            <div class="col-sm-offset-3 col-sm-9">
-              <button class="btn btn-xs btn-default validate_rspamd_regex" data-regex-map="<?=$rspamd_map;?>" href="#"><?=$lang['add']['validate'];?></button>
-              <button class="btn btn-xs btn-success submit_rspamd_regex" data-action="edit_selected" data-id="<?=$rspamd_map;?>" data-item="<?=htmlspecialchars($rspamd_map);?>" data-api-url='edit/rspamd-map' data-api-attr='{}' href="#" disabled><?=$lang['edit']['save'];?></button>
+          <div id="rspamd_global_filters" class="<?=($_SESSION['show_rspamd_global_filters'] !== true) ? 'hidden' : '';?>">
+          <hr>
+          <span class="anchor" id="regexmaps"></span>
+          <h4>Regex Maps</h4>
+          <p><?=$lang['admin']['rspamd_global_filters_regex'];?></p>
+          <?php
+          foreach ($RSPAMD_MAPS['regex'] as $rspamd_regex_desc => $rspamd_regex_map):
+          ?>
+          <hr>
+          <form class="form-horizontal" data-id="<?=$rspamd_regex_map;?>" role="form" method="post">
+            <div class="form-group">
+              <label class="control-label col-sm-3" for="<?=$rspamd_regex_map;?>"><?=$rspamd_regex_desc;?><br><small><?=$rspamd_regex_map;?></small></label>
+              <div class="col-sm-9">
+                <textarea id="<?=$rspamd_regex_map;?>" spellcheck="false" autocorrect="off" autocapitalize="none" class="form-control textarea-code" rows="10" name="rspamd_regex_map_data" required><?=file_get_contents('/rspamd_custom_maps/' . $rspamd_regex_map);?></textarea>
+              </div>
             </div>
+            <div class="form-group">
+              <div class="col-sm-offset-3 col-sm-9">
+                <button class="btn btn-xs btn-default validate_rspamd_regex" data-regex-map="<?=$rspamd_regex_map;?>" href="#"><?=$lang['add']['validate'];?></button>
+                <button class="btn btn-xs btn-success submit_rspamd_regex" data-action="edit_selected" data-id="<?=$rspamd_regex_map;?>" data-item="<?=htmlspecialchars($rspamd_regex_map);?>" data-api-url='edit/rspamd-map' data-api-attr='{}' href="#" disabled><?=$lang['edit']['save'];?></button>
+              </div>
+            </div>
+          </form>
+          <?php
+          endforeach;
+          ?>
           </div>
-        </form>
-        <?php
-        endforeach;
-        ?>
         </div>
       </div>
     </div>
diff --git a/data/web/inc/functions.dkim.inc.php b/data/web/inc/functions.dkim.inc.php
index f4bfd997..61ec54d6 100644
--- a/data/web/inc/functions.dkim.inc.php
+++ b/data/web/inc/functions.dkim.inc.php
@@ -247,7 +247,12 @@ function dkim($_action, $_data = null) {
         }
         $dkimdata['dkim_txt'] = 'v=DKIM1;k=rsa;t=s;s=email;p=' . $redis_dkim_key_data;
         $dkimdata['dkim_selector'] = $redis->hGet('DKIM_SELECTORS', $_data);
-        $dkimdata['privkey'] = base64_encode($redis->hGet('DKIM_PRIV_KEYS', $dkimdata['dkim_selector'] . '.' . $_data));
+        if ($GLOBALS['SHOW_DKIM_PRIV_KEYS']) {
+          $dkimdata['privkey'] = base64_encode($redis->hGet('DKIM_PRIV_KEYS', $dkimdata['dkim_selector'] . '.' . $_data));
+        }
+        else {
+          $dkimdata['privkey'] = '';
+        }
       }
       return $dkimdata;
     break;
diff --git a/data/web/inc/vars.inc.php b/data/web/inc/vars.inc.php
index 3fefdd8b..167f3c9a 100644
--- a/data/web/inc/vars.inc.php
+++ b/data/web/inc/vars.inc.php
@@ -157,13 +157,15 @@ $MAILBOX_DEFAULT_ATTRIBUTES['mailbox_format'] = 'maildir:';
 
 // Set visible Rspamd maps in mailcow UI, do not change unless you know what you are doing
 $RSPAMD_MAPS = array(
-  'Header-From: Blacklist' => 'global_mime_from_blacklist.map',
-  'Header-From: Whitelist' => 'global_mime_from_whitelist.map',
-  'Envelope Sender Blacklist' => 'global_smtp_from_blacklist.map',
-  'Envelope Sender Whitelist' => 'global_smtp_from_whitelist.map',
-  'Recipient Blacklist' => 'global_rcpt_blacklist.map',
-  'Recipient Whitelist' => 'global_rcpt_whitelist.map',
-  'Fishy TLDS (only fired in combination with bad words)' => 'fishy_tlds.map',
-  'Bad Words (only fired in combination with fishy TLDs)' => 'bad_words.map',
-  'Bad Languages' => 'bad_languages.map',
+  'regex' => array(
+    'Header-From: Blacklist' => 'global_mime_from_blacklist.map',
+    'Header-From: Whitelist' => 'global_mime_from_whitelist.map',
+    'Envelope Sender Blacklist' => 'global_smtp_from_blacklist.map',
+    'Envelope Sender Whitelist' => 'global_smtp_from_whitelist.map',
+    'Recipient Blacklist' => 'global_rcpt_blacklist.map',
+    'Recipient Whitelist' => 'global_rcpt_whitelist.map',
+    'Fishy TLDS (only fired in combination with bad words)' => 'fishy_tlds.map',
+    'Bad Words (only fired in combination with fishy TLDs)' => 'bad_words.map',
+    'Bad Languages' => 'bad_languages.map',
+  )
 );
diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js
index f3007dec..49bf9308 100644
--- a/data/web/js/site/admin.js
+++ b/data/web/js/site/admin.js
@@ -442,23 +442,31 @@ jQuery(function($){
   });
 });
 $(window).load(function(){
-  initial_width = $("#sidebar-admin").width();
-  $("#scrollbox").css("width", initial_width);
+  initial_width_config = $("#sidebar-admin-config").width();
+  initial_width_maps = $("#sidebar-admin-maps").width();
+  $("#scrollbox-config").css("width", initial_width_config);
+  $("#scrollbox-maps").css("width", initial_width_maps);
   if (sessionStorage.scrollTop > 70) {
-    $('#scrollbox').addClass('scrollboxFixed');
+    $('#scrollbox-config').addClass('scrollboxFixed');
+    $('#scrollbox-maps').addClass('scrollboxFixed');
   }
   $(window).bind('scroll', function() {
     if ($(window).scrollTop() > 70) {
-      $('#scrollbox').addClass('scrollboxFixed');
+      $('#scrollbox-config').addClass('scrollboxFixed');
+      $('#scrollbox-maps').addClass('scrollboxFixed');
     } else {
-      $('#scrollbox').removeClass('scrollboxFixed');
+      $('#scrollbox-config').removeClass('scrollboxFixed');
+      $('#scrollbox-maps').removeClass('scrollboxFixed');
     }
   });
 });
 function resizeScrollbox() {
-  on_resize_width = $("#sidebar-admin").width();
-  $("#scrollbox").removeAttr("style");
-  $("#scrollbox").css("width", on_resize_width);
+  on_resize_width_config = $("#sidebar-admin-config").width();
+  on_resize_width_maps = $("#sidebar-admin-maps").width();
+  $("#scrollbox-config").removeAttr("style");
+  $("#scrollbox-config").css("width", on_resize_width_config);
+  $("#scrollbox-maps").removeAttr("style");
+  $("#scrollbox-maps").css("width", on_resize_width_maps);
 }
 $(window).on('resize', resizeScrollbox);
 $('a[data-toggle="tab"]').on('shown.bs.tab', resizeScrollbox);
diff --git a/data/web/lang/lang.de.json b/data/web/lang/lang.de.json
index ad47c322..15ffa019 100644
--- a/data/web/lang/lang.de.json
+++ b/data/web/lang/lang.de.json
@@ -497,7 +497,8 @@
         "transport_dest_format": "Syntax: example.org, .example.org, *, box@example.org (mehrere Werte getrennt durch Komma einzugeben)",
         "rspamd_global_filters_agree": "Ich werde vorsichtig sein!",
         "rspamd_global_filters": "Globale Filter-Maps",
-        "rspamd_global_filters_info": "Globale Filter-Maps steuern globales White- und Blacklisting dieses Servers. Die akzeptierte Form für Einträge sind <b>ausschließlich</b> Regular Expressions.\r\n  Trotz rudimentärer Überprüfung der Map, kann es zu fehlerhaften Einträgen kommen, die Rspamd im schlechtesten Fall mit unvorhersehbarer Funktionalität bestraft.<br>\r\n  Das korrekte Format lautet \"/pattern/options\" (Beispiel: <code>/.+@domain\\.tld/i</code>).<br>\r\n  Der Name der Map beschreibt die jeweilige Funktion.<br>\r\n  Rspamd versucht die Maps umgehend aufzulösen. Bei Problemen sollte <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">Rspamd manuell neugestartet werden</a>.",
+        "rspamd_global_filters_info": "Globale Filter-Maps steuern globales White- und Blacklisting dieses Servers.",
+        "rspamd_global_filters_regex": "Die akzeptierte Form für Einträge sind <b>ausschließlich</b> Regular Expressions.\r\n  Trotz rudimentärer Überprüfung der Map, kann es zu fehlerhaften Einträgen kommen, die Rspamd im schlechtesten Fall mit unvorhersehbarer Funktionalität bestraft.<br>\r\n  Das korrekte Format lautet \"/pattern/options\" (Beispiel: <code>/.+@domain\\.tld/i</code>).<br>\r\n  Der Name der Map beschreibt die jeweilige Funktion.<br>\r\n  Rspamd versucht die Maps umgehend aufzulösen. Bei Problemen sollte <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">Rspamd manuell neugestartet werden</a>.",
         "add_admin": "Administrator hinzufügen",
         "dkim_domains_selector": "Selektor",
         "search_domain_da": "Suche Domains",
diff --git a/data/web/lang/lang.en.json b/data/web/lang/lang.en.json
index 312273d1..df3ce2b7 100644
--- a/data/web/lang/lang.en.json
+++ b/data/web/lang/lang.en.json
@@ -509,7 +509,8 @@
         "transport_dest_format": "Syntax: example.org, .example.org, *, box@example.org (multiple values can be comma-separated)",
         "rspamd_global_filters_agree": "I will be careful!",
         "rspamd_global_filters": "Global filter maps",
-        "rspamd_global_filters_info": "Global filter maps contain different kind of global black and whitelists. Their names explain their purpose. All content must contain valid regular expression in the format of \"/pattern/options\" (e.g. <code>/.+@domain\\.tld/i</code>).<br>\r\n  Although rudimentary checks are being executed on each line of regex, Rspamds functionality can be broken, if it fails to read the syntax correctly.<br>\r\n  Rspamd will try to read the map content when changed. If you experience problems, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">restart Rspamd</a> to enforce a map reload."
+        "rspamd_global_filters_info": "Global filter maps contain different kind of global black and whitelists.",
+        "rspamd_global_filters_regex": "Their names explain their purpose. All content must contain valid regular expression in the format of \"/pattern/options\" (e.g. <code>/.+@domain\\.tld/i</code>).<br>\r\n  Although rudimentary checks are being executed on each line of regex, Rspamds functionality can be broken, if it fails to read the syntax correctly.<br>\r\n  Rspamd will try to read the map content when changed. If you experience problems, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">restart Rspamd</a> to enforce a map reload."
     },
     "start": {
         "mailcow_apps_detail": "Use a mailcow app to access your mails, calendar, contacts and more.",
diff --git a/data/web/lang/lang.nl.json b/data/web/lang/lang.nl.json
index 280c8a94..35b7e8d1 100644
--- a/data/web/lang/lang.nl.json
+++ b/data/web/lang/lang.nl.json
@@ -499,7 +499,8 @@
         "transport_dest_format": "Voorbeeld: example.org, .example.org, *, postvak@example.org (meerdere waarden zijn kommagescheiden)",
         "rspamd_global_filters_agree": "Ik ben me ervan bewust dat aanpassingen desastreuze gevolgen kunnen hebben",
         "rspamd_global_filters": "Globale filters",
-        "rspamd_global_filters_info": "Ieder globaal filter heeft zijn eigen functie, zie de namen. De velden kunnen enkel regular expressions bevatten met het formaat \"/pattern/options\", bijvoorbeeld <code>/.+@domain\\.tld/i</code>.<br>Ondanks dat alle invoer wordt gecontroleerd op fouten, is het toch mogelijk dat Rspamd onbruikbaar wordt als deze de invoer niet kan lezen.<br>Als je problemen ervaart, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">herstart Rspamd</a> dan om de filters opnieuw te laten lezen."
+        "rspamd_global_filters_info": "Ieder globaal filter heeft zijn eigen functie, zie de namen.",
+        "rspamd_global_filters_regex": "De velden kunnen enkel regular expressions bevatten met het formaat \"/pattern/options\", bijvoorbeeld <code>/.+@domain\\.tld/i</code>.<br>Ondanks dat alle invoer wordt gecontroleerd op fouten, is het toch mogelijk dat Rspamd onbruikbaar wordt als deze de invoer niet kan lezen.<br>Als je problemen ervaart, <a href=\"\" data-toggle=\"modal\" data-container=\"rspamd-mailcow\" data-target=\"#RestartContainer\">herstart Rspamd</a> dan om de filters opnieuw te laten lezen."
     },
     "start": {
         "mailcow_apps_detail": "Gebruik een Mailcow-app om je mails, agenda, contacten en meer te bekijken.",