diff --git a/data/web/js/site/admin.js b/data/web/js/site/admin.js
index d47a2227..97196964 100644
--- a/data/web/js/site/admin.js
+++ b/data/web/js/site/admin.js
@@ -70,8 +70,10 @@ jQuery(function($){
     }
 
     $('#domainadminstable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -143,8 +145,10 @@ jQuery(function($){
     }
 
     $('#oauth2clientstable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -206,8 +210,10 @@ jQuery(function($){
     }
 
     $('#adminstable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -272,8 +278,10 @@ jQuery(function($){
     }
 
     $('#forwardinghoststable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -330,8 +338,10 @@ jQuery(function($){
     }
 
     $('#relayhoststable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -402,8 +412,10 @@ jQuery(function($){
     }
 
     $('#transportstable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/debug.js b/data/web/js/site/debug.js
index ea7b9fd3..14092f18 100644
--- a/data/web/js/site/debug.js
+++ b/data/web/js/site/debug.js
@@ -119,8 +119,10 @@ jQuery(function($){
     }
 
     $('#autodiscover_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -176,8 +178,10 @@ jQuery(function($){
     }
 
     $('#postfix_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -218,8 +222,10 @@ jQuery(function($){
     }
 
     $('#watchdog_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -264,8 +270,10 @@ jQuery(function($){
     }
 
     $('#api_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -317,8 +325,10 @@ jQuery(function($){
     }
 
     $('#rl_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -408,8 +418,10 @@ jQuery(function($){
     }
 
     $('#ui_logs').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -479,8 +491,10 @@ jQuery(function($){
     }
 
     $('#sasl_logs').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -527,8 +541,10 @@ jQuery(function($){
     }
 
     $('#acme_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -564,8 +580,10 @@ jQuery(function($){
     }
 
     $('#netfilter_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -606,8 +624,10 @@ jQuery(function($){
     }
 
     $('#sogo_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -648,8 +668,10 @@ jQuery(function($){
     }
 
     $('#dovecot_log').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
@@ -751,8 +773,10 @@ jQuery(function($){
     }
 
     $('#rspamd_history').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       order: [[0, 'desc']],
       ajax: {
diff --git a/data/web/js/site/edit.js b/data/web/js/site/edit.js
index 55a8e6b4..4ca77ed9 100644
--- a/data/web/js/site/edit.js
+++ b/data/web/js/site/edit.js
@@ -78,8 +78,10 @@ jQuery(function($){
   }
   function draw_wl_policy_domain_table() {
     $('#wl_policy_domain_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -133,8 +135,10 @@ jQuery(function($){
   }
   function draw_bl_policy_domain_table() {
     $('#bl_policy_domain_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/mailbox.js b/data/web/js/site/mailbox.js
index 12c4bb4d..47540ae3 100644
--- a/data/web/js/site/mailbox.js
+++ b/data/web/js/site/mailbox.js
@@ -433,8 +433,10 @@ jQuery(function($){
     }
 
     var table = $('#domain_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -619,9 +621,10 @@ jQuery(function($){
     }
 
     $('#templates_domain_table').DataTable({
-			responsive : true,
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -816,9 +819,10 @@ jQuery(function($){
     }
 
     $('#mailbox_table').DataTable({
-			responsive : true,
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1074,9 +1078,10 @@ jQuery(function($){
     }
 
     $('#templates_mbox_table').DataTable({
-			responsive : true,
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1285,8 +1290,10 @@ jQuery(function($){
     }
 
     $('#resource_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1411,8 +1418,10 @@ jQuery(function($){
     }
     
     $('#bcc_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1507,8 +1516,10 @@ jQuery(function($){
     }
 
     $('#recipient_map_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1590,8 +1601,10 @@ jQuery(function($){
     }
 
     $('#tls_policy_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1683,8 +1696,10 @@ jQuery(function($){
     }
 
     $('#alias_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1823,8 +1838,10 @@ jQuery(function($){
     }
 
     $('#aliasdomain_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -1905,8 +1922,10 @@ jQuery(function($){
     }
 
     $('#sync_job_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -2044,9 +2063,11 @@ jQuery(function($){
     }
 
     var table = $('#filter_table').DataTable({
+			responsive: true,
       autoWidth: false,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/quarantine.js b/data/web/js/site/quarantine.js
index 34531b0d..c2028d28 100644
--- a/data/web/js/site/quarantine.js
+++ b/data/web/js/site/quarantine.js
@@ -14,8 +14,10 @@ jQuery(function($){
   });
   function draw_quarantine_table() {
     $('#quarantinetable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -129,9 +131,15 @@ jQuery(function($){
             title: lang.received,
             data: 'created',
             defaultContent: '',
-            render: function (data,type) {
-              var date = new Date(data ? data * 1000 : 0); 
-              return date.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
+            createdCell: function(td, cellData) {    
+              $(td).attr({
+                "data-order": cellData,
+                "data-sort": cellData
+              });
+              
+              var date = new Date(cellData ? cellData * 1000 : 0); 
+              var dateString = date.toLocaleDateString(undefined, {year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit"});
+              $(td).html(dateString);
             }
           },
           {
diff --git a/data/web/js/site/queue.js b/data/web/js/site/queue.js
index 057ad840..a5ee95fd 100644
--- a/data/web/js/site/queue.js
+++ b/data/web/js/site/queue.js
@@ -35,8 +35,10 @@ jQuery(function($){
     }
 
     $('#queuetable').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
diff --git a/data/web/js/site/user.js b/data/web/js/site/user.js
index 36bcfa63..9caae599 100644
--- a/data/web/js/site/user.js
+++ b/data/web/js/site/user.js
@@ -135,8 +135,10 @@ jQuery(function($){
     }
 
     $('#tla_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -216,8 +218,10 @@ jQuery(function($){
     }
 
     $('#sync_job_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -366,8 +370,10 @@ jQuery(function($){
     }
 
     $('#app_passwd_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -456,8 +462,10 @@ jQuery(function($){
     }
 
     $('#wl_policy_mailbox_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",
@@ -521,8 +529,10 @@ jQuery(function($){
     }
 
     $('#bl_policy_mailbox_table').DataTable({
+			responsive: true,
       processing: true,
       serverSide: false,
+      stateSave: true,
       language: lang_datatables,
       ajax: {
         type: "GET",