Move sieve script generation to the admin container
This commit is contained in:
@@ -6,7 +6,7 @@ import socket
|
|||||||
import flask
|
import flask
|
||||||
|
|
||||||
|
|
||||||
internal = flask.Blueprint('internal', __name__)
|
internal = flask.Blueprint('internal', __name__, template_folder='templates')
|
||||||
|
|
||||||
@internal.app_errorhandler(RateLimitExceeded)
|
@internal.app_errorhandler(RateLimitExceeded)
|
||||||
def rate_limit_handler(e):
|
def rate_limit_handler(e):
|
||||||
|
|||||||
@@ -8,8 +8,6 @@ require "regex";
|
|||||||
require "relational";
|
require "relational";
|
||||||
require "date";
|
require "date";
|
||||||
require "comparator-i;ascii-numeric";
|
require "comparator-i;ascii-numeric";
|
||||||
require "vnd.dovecot.extdata";
|
|
||||||
require "vnd.dovecot.execute";
|
|
||||||
require "spamtestplus";
|
require "spamtestplus";
|
||||||
require "editheader";
|
require "editheader";
|
||||||
require "index";
|
require "index";
|
||||||
@@ -20,21 +18,23 @@ if header :index 2 :matches "Received" "from * by * for <*>; *"
|
|||||||
addheader "Delivered-To" "<${3}>";
|
addheader "Delivered-To" "<${3}>";
|
||||||
}
|
}
|
||||||
|
|
||||||
if allof (string :is "${extdata.spam_enabled}" "1",
|
{% if user.spam_enabled %}
|
||||||
spamtest :percent :value "gt" :comparator "i;ascii-numeric" "${extdata.spam_threshold}")
|
if spamtest :percent :value "gt" :comparator "i;ascii-numeric" "{{ user.spam_threshold }}"
|
||||||
{
|
{
|
||||||
setflag "\\seen";
|
setflag "\\seen";
|
||||||
fileinto :create "Junk";
|
fileinto :create "Junk";
|
||||||
stop;
|
stop;
|
||||||
}
|
}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
if exists "X-Virus" {
|
if exists "X-Virus" {
|
||||||
discard;
|
discard;
|
||||||
stop;
|
stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if allof (string :is "${extdata.reply_enabled}" "1",
|
{% if user.reply_enabled %}
|
||||||
currentdate :value "le" "date" "${extdata.reply_enddate}")
|
if currentdate :value "le" "date" "{{ user.reply_enddate }}"
|
||||||
{
|
{
|
||||||
vacation :days 1 :subject "${extdata.reply_subject}" "${extdata.reply_body}";
|
vacation :days 1 :subject "{{ user.reply_subject }}" "{{ user.reply_body }}";
|
||||||
}
|
}
|
||||||
|
{% endif %}
|
||||||
@@ -122,7 +122,7 @@ def dovecot_quota(ns, user_email):
|
|||||||
def dovecot_sieve(script, user_email):
|
def dovecot_sieve(script, user_email):
|
||||||
user = models.User.query.get(user_email) or flask.abort(404)
|
user = models.User.query.get(user_email) or flask.abort(404)
|
||||||
if script == "default":
|
if script == "default":
|
||||||
pass
|
return flask.jsonify(flask.render_template("default.sieve"))
|
||||||
else:
|
else:
|
||||||
flask.abort(404)
|
flask.abort(404)
|
||||||
|
|
||||||
|
|||||||
@@ -139,9 +139,6 @@ plugin {
|
|||||||
sieve = dict:proxy:/tmp/podop.socket:sieve
|
sieve = dict:proxy:/tmp/podop.socket:sieve
|
||||||
sieve_plugins = sieve_imapsieve sieve_extprograms
|
sieve_plugins = sieve_imapsieve sieve_extprograms
|
||||||
sieve_global_extensions = +spamtest +spamtestplus +vnd.dovecot.execute +editheader
|
sieve_global_extensions = +spamtest +spamtestplus +vnd.dovecot.execute +editheader
|
||||||
sieve_before = /var/lib/dovecot/before.sieve
|
|
||||||
sieve_default = /var/lib/dovecot/default.sieve
|
|
||||||
sieve_after = /var/lib/dovecot/after.sieve
|
|
||||||
|
|
||||||
# Sieve execute
|
# Sieve execute
|
||||||
sieve_execute_bin_dir = /var/lib/dovecot/bin
|
sieve_execute_bin_dir = /var/lib/dovecot/bin
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
rspamc -h antispam:11334 -P mailu "learn_$1" /dev/stdin <&0
|
|
||||||
Reference in New Issue
Block a user