mirror of
https://github.com/Mailu/Mailu.git
synced 2025-04-17 11:56:22 +02:00
Merge pull request #527 from ofthesun9/feat-fuzzyhashes
Trying to enable fuzzy hashes for rspamd
This commit is contained in:
commit
727970514d
@ -2,7 +2,7 @@ FROM alpine:3.8
|
|||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
dovecot dovecot-pigeonhole-plugin dovecot-fts-lucene rspamd-client \
|
dovecot dovecot-pigeonhole-plugin dovecot-fts-lucene rspamd-client \
|
||||||
python3 py3-pip \
|
bash python3 py3-pip \
|
||||||
&& pip3 install --upgrade pip \
|
&& pip3 install --upgrade pip \
|
||||||
&& pip3 install jinja2 podop tenacity
|
&& pip3 install jinja2 podop tenacity
|
||||||
|
|
||||||
|
4
core/dovecot/conf/bin/ham
Executable file
4
core/dovecot/conf/bin/ham
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
tee >(rspamc -h antispam:11334 -P mailu learn_ham /dev/stdin) \
|
||||||
|
| rspamc -h antispam:11334 -P mailu -f 13 fuzzy_add /dev/stdin
|
@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
rspamc -h antispam:11334 -P mailu "learn_$1" /dev/stdin <&0
|
|
4
core/dovecot/conf/bin/spam
Executable file
4
core/dovecot/conf/bin/spam
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
tee >(rspamc -h antispam:11334 -P mailu learn_spam /dev/stdin) \
|
||||||
|
>(rspamc -h antispam:11334 -P mailu -f 11 fuzzy_add /dev/stdin)
|
@ -8,4 +8,4 @@ if string "${mailbox}" "Trash" {
|
|||||||
stop;
|
stop;
|
||||||
}
|
}
|
||||||
|
|
||||||
execute :pipe "mailtrain" "ham";
|
execute :pipe "ham";
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
require "vnd.dovecot.execute";
|
require "vnd.dovecot.execute";
|
||||||
|
|
||||||
execute :pipe "mailtrain" "spam";
|
execute :pipe "spam";
|
||||||
|
@ -36,5 +36,5 @@ for dovecot_file in glob.glob("/conf/*.conf"):
|
|||||||
|
|
||||||
# Run Podop, then postfix
|
# Run Podop, then postfix
|
||||||
multiprocessing.Process(target=start_podop).start()
|
multiprocessing.Process(target=start_podop).start()
|
||||||
os.system("chown -R mail:mail /mail /var/lib/dovecot")
|
os.system("chown -R mail:mail /mail /var/lib/dovecot /conf")
|
||||||
os.execv("/usr/sbin/dovecot", ["dovecot", "-c", "/etc/dovecot/dovecot.conf", "-F"])
|
os.execv("/usr/sbin/dovecot", ["dovecot", "-c", "/etc/dovecot/dovecot.conf", "-F"])
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
FROM alpine:3.8
|
FROM alpine:3.8
|
||||||
|
|
||||||
RUN apk add --no-cache python py-jinja2 rspamd rspamd-controller rspamd-proxy ca-certificates py-pip \
|
RUN apk add --no-cache python py-jinja2 rspamd rspamd-controller rspamd-proxy rspamd-fuzzy ca-certificates py-pip \
|
||||||
&& pip install --upgrade pip \
|
&& pip install --upgrade pip \
|
||||||
&& pip install tenacity
|
&& pip install tenacity
|
||||||
|
|
||||||
@ -9,10 +9,7 @@ RUN mkdir /run/rspamd
|
|||||||
COPY conf/ /conf
|
COPY conf/ /conf
|
||||||
COPY start.py /start.py
|
COPY start.py /start.py
|
||||||
|
|
||||||
# Temporary fix to remove references to rspamd-fuzzy for now
|
EXPOSE 11332/tcp 11334/tcp 11335/tcp
|
||||||
RUN sed -i '/fuzzy/,$d' /etc/rspamd/rspamd.conf
|
|
||||||
|
|
||||||
EXPOSE 11332/tcp 11334/tcp
|
|
||||||
|
|
||||||
VOLUME ["/var/lib/rspamd"]
|
VOLUME ["/var/lib/rspamd"]
|
||||||
|
|
||||||
|
34
services/rspamd/conf/fuzzy_check.conf
Normal file
34
services/rspamd/conf/fuzzy_check.conf
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
rule "local" {
|
||||||
|
# Fuzzy storage server list
|
||||||
|
servers = "localhost:11335";
|
||||||
|
# Default symbol for unknown flags
|
||||||
|
symbol = "LOCAL_FUZZY_UNKNOWN";
|
||||||
|
# Additional mime types to store/check
|
||||||
|
mime_types = ["application/*"];
|
||||||
|
# Hash weight threshold for all maps
|
||||||
|
max_score = 20.0;
|
||||||
|
# Whether we can learn this storage
|
||||||
|
read_only = no;
|
||||||
|
# Ignore unknown flags
|
||||||
|
skip_unknown = yes;
|
||||||
|
# Hash generation algorithm
|
||||||
|
algorithm = "mumhash";
|
||||||
|
|
||||||
|
# Map flags to symbols
|
||||||
|
fuzzy_map = {
|
||||||
|
LOCAL_FUZZY_DENIED {
|
||||||
|
# Local threshold
|
||||||
|
max_score = 20.0;
|
||||||
|
# Flag to match
|
||||||
|
flag = 11;
|
||||||
|
}
|
||||||
|
LOCAL_FUZZY_PROB {
|
||||||
|
max_score = 10.0;
|
||||||
|
flag = 12;
|
||||||
|
}
|
||||||
|
LOCAL_FUZZY_WHITE {
|
||||||
|
max_score = 2.0;
|
||||||
|
flag = 13;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
services/rspamd/conf/metrics.conf
Normal file
19
services/rspamd/conf/metrics.conf
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
group "fuzzy" {
|
||||||
|
max_score = 12.0;
|
||||||
|
symbol "LOCAL_FUZZY_UNKNOWN" {
|
||||||
|
weight = 5.0;
|
||||||
|
description = "Generic fuzzy hash match";
|
||||||
|
}
|
||||||
|
symbol "LOCAL_FUZZY_DENIED" {
|
||||||
|
weight = 12.0;
|
||||||
|
description = "Denied fuzzy hash";
|
||||||
|
}
|
||||||
|
symbol "LOCAL_FUZZY_PROB" {
|
||||||
|
weight = 5.0;
|
||||||
|
description = "Probable fuzzy hash";
|
||||||
|
}
|
||||||
|
symbol "LOCAL_FUZZY_WHITE" {
|
||||||
|
weight = -2.1;
|
||||||
|
description = "Whitelisted fuzzy hash";
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,4 @@
|
|||||||
|
type = "controller";
|
||||||
bind_socket = "*:11334";
|
bind_socket = "*:11334";
|
||||||
password = "mailu";
|
password = "mailu";
|
||||||
secure_ip = "{{ FRONT_ADDRESS }}";
|
secure_ip = "{{ FRONT_ADDRESS }}";
|
||||||
|
6
services/rspamd/conf/worker-fuzzy.inc
Normal file
6
services/rspamd/conf/worker-fuzzy.inc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
type = "fuzzy";
|
||||||
|
bind_socket = "*:11335";
|
||||||
|
count = 1;
|
||||||
|
backend = "redis";
|
||||||
|
expire = 90d;
|
||||||
|
allow_update = ["127.0.0.1"];
|
@ -1 +1,2 @@
|
|||||||
|
type = "normal";
|
||||||
enabled = false;
|
enabled = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user