diff --git a/admin/freeposte/admin/models.py b/admin/freeposte/admin/models.py index 69570215..dd461a75 100644 --- a/admin/freeposte/admin/models.py +++ b/admin/freeposte/admin/models.py @@ -143,7 +143,7 @@ class User(Email): # Settings displayed_name = db.Column(db.String(160), nullable=False, default="") spam_enabled = db.Column(db.Boolean(), nullable=False, default=True) - spam_threshold = db.Column(db.Numeric(), nullable=False, default=10.0) + spam_threshold = db.Column(db.Numeric(), nullable=False, default=80.0) # Flask-login attributes is_authenticated = True diff --git a/admin/freeposte/admin/templates/user/settings.html b/admin/freeposte/admin/templates/user/settings.html index 229510e5..ede0b608 100644 --- a/admin/freeposte/admin/templates/user/settings.html +++ b/admin/freeposte/admin/templates/user/settings.html @@ -13,8 +13,8 @@ User settings {{ form.hidden_tag() }} {{ macros.form_field(form.displayed_name) }} {{ macros.form_field(form.spam_enabled) }} - {{ macros.form_field(form.spam_threshold, step=1, max=15, - prepend=''+(form.spam_threshold.data).__int__().__str__()+' / 15', + {{ macros.form_field(form.spam_threshold, step=1, max=100, + prepend=''+(form.spam_threshold.data).__int__().__str__()+' / 100', oninput='$("#threshold").text(this.value);') }} {{ macros.form_field(form.submit) }} diff --git a/admin/migrations/versions/27ae2f102682_.py b/admin/migrations/versions/27ae2f102682_.py new file mode 100644 index 00000000..d3a543ef --- /dev/null +++ b/admin/migrations/versions/27ae2f102682_.py @@ -0,0 +1,37 @@ +"""spam_threshold in percent + +Revision ID: 27ae2f102682 +Revises: dc8c25cf5b98 +Create Date: 2016-09-30 08:06:15.025190 + +""" + +# revision identifiers, used by Alembic. +revision = '27ae2f102682' +down_revision = 'dc8c25cf5b98' + +from alembic import op +import sqlalchemy as sa + +from freeposte.admin.models import User +from freeposte import db + +def upgrade(): + # spam_threshold is a X/15 based value, we're converting it to percent. + for user in User.query.all(): + user.spam_threshold = int(100. * float(user.spam_threshold or 0.) / 15.) + db.session.commit() + + # set default to 80% + with op.batch_alter_table('user') as batch: + batch.alter_column('spam_threshold', default=80.) + +def downgrade(): + # spam_threshold is a X/15 based value, we're converting it from percent. + for user in User.query.all(): + user.spam_threshold = int(15. * float(user.spam_threshold or 0.) / 100.) + db.session.commit() + + # set default to 10/15 + with op.batch_alter_table('user') as batch: + batch.alter_column('spam_threshold', default=10.) diff --git a/dovecot/conf/dovecot.conf b/dovecot/conf/dovecot.conf index 88a63f92..9f1d1bf3 100644 --- a/dovecot/conf/dovecot.conf +++ b/dovecot/conf/dovecot.conf @@ -149,7 +149,7 @@ service managesieve-login { plugin { sieve_dir = ~/sieve sieve_plugins = sieve_extdata - sieve_extensions = +vnd.dovecot.extdata + sieve_extensions = +vnd.dovecot.extdata +spamtest +spamtestplus sieve_before = /var/lib/dovecot/before.sieve sieve_default = /var/lib/dovecot/default.sieve sieve_after = /var/lib/dovecot/after.sieve @@ -162,8 +162,13 @@ plugin { antispam_mail_spam = learn_spam antispam_mail_notspam = learn_ham antispam_mail_sendmail_args = -h;antispam:11334;-P;q1 -} + # extract spam score from + # X-Spam-Result: .... [ /