public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
[Web] Allow actions in quarantine modal, fixes #1991 [Web] Fixes for Source Sans Pro font [Rspamd] Add global rcpt blacklist and whitelist [Compose] New Rspamd image
d445d7d2
data/conf/rspamd/custom/global_from_blacklist.map | 2 +-
data/conf/rspamd/custom/global_from_whitelist.map | 2 +-
data/conf/rspamd/custom/global_rcpt_blacklist.map | 1 +
data/conf/rspamd/custom/global_rcpt_whitelist.map | 1 +
data/conf/rspamd/local.d/multimap.conf | 16 ++++++++++++++++
data/web/css/mailcow.css | 4 ----
data/web/fonts/SourceSansPro-Bold.woff2 | Bin 13892 -> 76972 bytes
data/web/fonts/SourceSansPro-BoldIt.woff2 | Bin 13716 -> 44536 bytes
data/web/fonts/SourceSansPro-Light.woff2 | Bin 14308 -> 76560 bytes
data/web/fonts/SourceSansPro-Regular.woff2 | Bin 14308 -> 77476 bytes
data/web/js/quarantine.js | 6 ++++++
data/web/modals/quarantine.php | 11 +++++++++++
docker-compose.yml | 2 +-
13 files changed, 38 insertions(+), 7 deletions(-)
create mode 100644 data/conf/rspamd/custom/global_rcpt_blacklist.map
create mode 100644 data/conf/rspamd/custom/global_rcpt_whitelist.map
Diff
diff --git a/data/conf/rspamd/custom/global_from_blacklist.map b/data/conf/rspamd/custom/global_from_blacklist.map
index dd04f45c..926c6b32 100644
--- a/data/conf/rspamd/custom/global_from_blacklist.map
+++ b/data/conf/rspamd/custom/global_from_blacklist.map
@@ -1 +1 @@
-# /.*@example.com/i'
+# /.*@example.com/i
diff --git a/data/conf/rspamd/custom/global_from_whitelist.map b/data/conf/rspamd/custom/global_from_whitelist.map
index dd04f45c..926c6b32 100644
--- a/data/conf/rspamd/custom/global_from_whitelist.map
+++ b/data/conf/rspamd/custom/global_from_whitelist.map
@@ -1 +1 @@
-# /.*@example.com/i'
+# /.*@example.com/i
diff --git a/data/conf/rspamd/custom/global_rcpt_blacklist.map b/data/conf/rspamd/custom/global_rcpt_blacklist.map
new file mode 100644
index 00000000..926c6b32
--- /dev/null
+++ b/data/conf/rspamd/custom/global_rcpt_blacklist.map
@@ -0,0 +1 @@
+# /.*@example.com/i
diff --git a/data/conf/rspamd/custom/global_rcpt_whitelist.map b/data/conf/rspamd/custom/global_rcpt_whitelist.map
new file mode 100644
index 00000000..926c6b32
--- /dev/null
+++ b/data/conf/rspamd/custom/global_rcpt_whitelist.map
@@ -0,0 +1 @@
+# /.*@example.com/i
diff --git a/data/conf/rspamd/local.d/multimap.conf b/data/conf/rspamd/local.d/multimap.conf
index 40cbfda7..47eca4ff 100644
--- a/data/conf/rspamd/local.d/multimap.conf
+++ b/data/conf/rspamd/local.d/multimap.conf
@@ -49,3 +49,19 @@ GLOBAL_FROM_BL {
prefilter = true;
action = "reject";
}
+
+GLOBAL_RCPT_WL {
+ type = "rcpt";
+ map = "$LOCAL_CONFDIR/custom/global_rcpt_whitelist.map";
+ regexp = true;
+ prefilter = true;
+ action = "accept";
+}
+
+GLOBAL_RCPT_BL {
+ type = "rcpt";
+ map = "$LOCAL_CONFDIR/custom/global_rcpt_blacklist.map";
+ regexp = true;
+ prefilter = true;
+ action = "reject";
+}
diff --git a/data/web/css/mailcow.css b/data/web/css/mailcow.css
index 04d1b874..ee6eb2a5 100644
--- a/data/web/css/mailcow.css
+++ b/data/web/css/mailcow.css
@@ -3,28 +3,24 @@
font-style: normal;
font-weight: 300;
src: local('Source Sans Pro Light'), local('SourceSansPro-Light'), url('../fonts/SourceSansPro-Light.woff2') format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Source Sans Pro';
font-style: normal;
font-weight: 400;
src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url('../fonts/SourceSansPro-Regular.woff2') format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Source Sans Pro';
font-style: normal;
font-weight: 700;
src: local('Source Sans Pro Bold'), local('SourceSansPro-Bold'), url('../fonts/SourceSansPro-Bold.woff2') format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
@font-face {
font-family: 'Source Sans Pro';
font-style: italic;
font-weight: 700;
src: local('Source Sans Pro Bold Italic'), local('SourceSansPro-BoldIt'), url('../fonts/SourceSansPro-BoldIt.woff2') format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215;
}
#maxmsgsize { min-width: 80px; }
#slider1 .slider-selection {
diff --git a/data/web/fonts/SourceSansPro-Bold.woff2 b/data/web/fonts/SourceSansPro-Bold.woff2
index 89bfd796..e6f92a55 100644
Binary files a/data/web/fonts/SourceSansPro-Bold.woff2 and b/data/web/fonts/SourceSansPro-Bold.woff2 differ
diff --git a/data/web/fonts/SourceSansPro-BoldIt.woff2 b/data/web/fonts/SourceSansPro-BoldIt.woff2
index 83d5b491..50c117d9 100644
Binary files a/data/web/fonts/SourceSansPro-BoldIt.woff2 and b/data/web/fonts/SourceSansPro-BoldIt.woff2 differ
diff --git a/data/web/fonts/SourceSansPro-Light.woff2 b/data/web/fonts/SourceSansPro-Light.woff2
index 75ec2c04..9b18cc1a 100644
Binary files a/data/web/fonts/SourceSansPro-Light.woff2 and b/data/web/fonts/SourceSansPro-Light.woff2 differ
diff --git a/data/web/fonts/SourceSansPro-Regular.woff2 b/data/web/fonts/SourceSansPro-Regular.woff2
index 6dda30cd..e49739d4 100644
Binary files a/data/web/fonts/SourceSansPro-Regular.woff2 and b/data/web/fonts/SourceSansPro-Regular.woff2 differ
diff --git a/data/web/js/quarantine.js b/data/web/js/quarantine.js
index f8438099..9f655564 100644
--- a/data/web/js/quarantine.js
+++ b/data/web/js/quarantine.js
@@ -60,6 +60,12 @@ jQuery(function($){
$( "#qid_error" ).text(data.error);
$( "#qid_error" ).show();
}
+ $( "li" ).each(function( index ) {
+ console.log( index + ": " + $( this ).text() );
+ });
+ $('[data-id="qitems_single"]').each(function( index ) {
+ $(this).attr("data-item", qitem);
+ });
$('#qid_detail_subj').text(data.subject);
$('#qid_detail_text').text(data.text_plain);
$('#qid_detail_text_from_html').text(data.text_html);
diff --git a/data/web/modals/quarantine.php b/data/web/modals/quarantine.php
index 41a63413..30a0d3b8 100644
--- a/data/web/modals/quarantine.php
+++ b/data/web/modals/quarantine.php
@@ -12,6 +12,7 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
<h3 class="modal-title"><span class="glyphicon glyphicon-info"></span> <?=$lang['quarantine']['qitem'];?></h3>
</div>
<div class="modal-body">
+ <?=var_dump($_POST);?>
<div id="qid_error" style="display:none" class="alert alert-danger"></div>
<div class="form-group">
<label for="qid_detail_subj"><h4><?=$lang['quarantine']['subj'];?>:</h4></label>
@@ -29,6 +30,16 @@ if (!isset($_SESSION['mailcow_cc_role'])) {
<label for="qid_detail_atts"><h4><?=$lang['quarantine']['atts'];?>:</h4></label>
<div id="qid_detail_atts">-</div>
</div>
+ <div class="btn-group" data-acl="<?=$_SESSION['acl']['quarantine'];?>">
+ <a class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown" href="#"><?=$lang['quarantine']['quick_actions'];?> <span class="caret"></span></a>
+ <ul class="dropdown-menu">
+ <li><a data-action="edit_selected" data-id="qitems_single" data-item="" data-api-url='edit/qitem' data-api-attr='{"action":"release"}' href="#"><?=$lang['quarantine']['release'];?></a></li>
+ <li role="separator" class="divider"></li>
+ <li><a data-action="edit_selected" data-id="qitems_single" data-item="" data-api-url='edit/qitem' data-api-attr='{"action":"learnspam"}' href="#"><?=$lang['quarantine']['learn_spam_delete'];?></a></li>
+ <li role="separator" class="divider"></li>
+ <li><a data-action="delete_selected" data-id="qitems_single" data-item="" data-api-url='delete/qitem' href="#"><?=$lang['quarantine']['remove'];?></a></li>
+ </ul>
+ </div>
</div>
</div>
</div>
diff --git a/docker-compose.yml b/docker-compose.yml
index 0d0e610a..20c123cb 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -72,7 +72,7 @@ services:
- clamd
rspamd-mailcow:
- image: mailcow/rspamd:1.30
+ image: mailcow/rspamd:1.31
build: ./data/Dockerfiles/rspamd
stop_grace_period: 30s
depends_on: