diff --git a/edge01/docker/rspamd/.gitignore b/edge01/docker/rspamd/.gitignore new file mode 100644 index 0000000..bc28112 --- /dev/null +++ b/edge01/docker/rspamd/.gitignore @@ -0,0 +1,4 @@ +data/ +redis/ +local.d/worker-controller.inc +local.d/*.backup* diff --git a/edge01/docker/rspamd/compose.yaml b/edge01/docker/rspamd/compose.yaml new file mode 100644 index 0000000..ac850fe --- /dev/null +++ b/edge01/docker/rspamd/compose.yaml @@ -0,0 +1,75 @@ +services: + redis: + image: redis:7-alpine + container_name: rspamd-redis + restart: unless-stopped + + command: + - redis-server + - --appendonly + - "yes" + - --save + - "900" + - "1" + - --save + - "300" + - "10" + + volumes: + - ./redis:/data + + networks: + - rspamd-internal + + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 10s + timeout: 3s + retries: 5 + + security_opt: + - no-new-privileges:true + + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + + rspamd: + image: rspamd/rspamd:latest + container_name: rspamd + restart: unless-stopped + + depends_on: + redis: + condition: service_healthy + + ports: + - "127.0.0.1:11332:11332" + - "127.0.0.1:11334:11334" + + volumes: + - ./local.d:/etc/rspamd/local.d:ro + - ./override.d:/etc/rspamd/override.d:ro + - ./data:/var/lib/rspamd + + networks: + - rspamd-internal + - proxy + + security_opt: + - no-new-privileges:true + + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + +networks: + rspamd-internal: + internal: true + + proxy: + external: true diff --git a/edge01/docker/rspamd/local.d/actions.conf b/edge01/docker/rspamd/local.d/actions.conf new file mode 100644 index 0000000..1a12931 --- /dev/null +++ b/edge01/docker/rspamd/local.d/actions.conf @@ -0,0 +1,3 @@ +reject = 12; +add_header = 5; +greylist = 4; diff --git a/edge01/docker/rspamd/local.d/classifier-bayes.conf b/edge01/docker/rspamd/local.d/classifier-bayes.conf new file mode 100644 index 0000000..167ba2d --- /dev/null +++ b/edge01/docker/rspamd/local.d/classifier-bayes.conf @@ -0,0 +1,11 @@ +backend = "redis"; + +servers = "rspamd-redis:6379"; + +autolearn = true; + +min_tokens = 11; + +cache { + backend = "redis"; +} diff --git a/edge01/docker/rspamd/local.d/dkim_signing.conf b/edge01/docker/rspamd/local.d/dkim_signing.conf new file mode 100644 index 0000000..a6ee831 --- /dev/null +++ b/edge01/docker/rspamd/local.d/dkim_signing.conf @@ -0,0 +1 @@ +enabled = false; diff --git a/edge01/docker/rspamd/local.d/history_redis.conf b/edge01/docker/rspamd/local.d/history_redis.conf new file mode 100644 index 0000000..ffe112a --- /dev/null +++ b/edge01/docker/rspamd/local.d/history_redis.conf @@ -0,0 +1,4 @@ +servers = "rspamd-redis:6379"; +key_prefix = "rs_history"; +compress = true; +subject_privacy = false; diff --git a/edge01/docker/rspamd/local.d/options.inc b/edge01/docker/rspamd/local.d/options.inc new file mode 100644 index 0000000..bd4d293 --- /dev/null +++ b/edge01/docker/rspamd/local.d/options.inc @@ -0,0 +1,8 @@ +task_timeout = 15s; + +dns { + nameserver = ["172.20.0.1:53"]; + timeout = 2s; + retransmits = 2; + sockets = 16; +} diff --git a/edge01/docker/rspamd/local.d/redis.conf b/edge01/docker/rspamd/local.d/redis.conf new file mode 100644 index 0000000..db259aa --- /dev/null +++ b/edge01/docker/rspamd/local.d/redis.conf @@ -0,0 +1 @@ +servers = "rspamd-redis:6379"; diff --git a/edge01/docker/rspamd/local.d/worker-controller.inc.example b/edge01/docker/rspamd/local.d/worker-controller.inc.example new file mode 100644 index 0000000..ae784b7 --- /dev/null +++ b/edge01/docker/rspamd/local.d/worker-controller.inc.example @@ -0,0 +1,2 @@ +password = "$2$REPLACE_WITH_HASH"; +enable_password = "$2$REPLACE_WITH_HASH";