mirror of
https://github.com/zokradonh/kopano-docker
synced 2025-06-06 23:46:24 +00:00
Extract spamd-extras into separate extras and add documentation (#482)
Signed-off-by: René Plötz <reneploetz@users.noreply.github.com>
This commit is contained in:
parent
83794eb8ab
commit
5617325d8e
@ -516,29 +516,6 @@ services:
|
|||||||
tmpfs:
|
tmpfs:
|
||||||
- /tmp
|
- /tmp
|
||||||
|
|
||||||
kopano_spamd:
|
|
||||||
image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest}
|
|
||||||
read_only: true
|
|
||||||
restart: unless-stopped
|
|
||||||
container_name: ${COMPOSE_PROJECT_NAME}_spamd
|
|
||||||
depends_on:
|
|
||||||
- kopano_server
|
|
||||||
volumes:
|
|
||||||
- /etc/machine-id:/etc/machine-id
|
|
||||||
- /etc/machine-id:/var/lib/dbus/machine-id
|
|
||||||
- kopanosocket/:/run/kopano
|
|
||||||
- kopanossl/:/kopano/ssl
|
|
||||||
- kopanospamd/:/var/lib/kopano/spamd
|
|
||||||
environment:
|
|
||||||
- SERVICE_TO_START=spamd
|
|
||||||
- TZ=${TZ}
|
|
||||||
env_file:
|
|
||||||
- kopano_spamd.env
|
|
||||||
networks:
|
|
||||||
- kopano-net
|
|
||||||
tmpfs:
|
|
||||||
- /tmp
|
|
||||||
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
kdavstates:
|
kdavstates:
|
||||||
@ -546,7 +523,6 @@ volumes:
|
|||||||
kopanograpi:
|
kopanograpi:
|
||||||
kopanolicenses:
|
kopanolicenses:
|
||||||
kopanosocket:
|
kopanosocket:
|
||||||
kopanospamd:
|
|
||||||
kopanossl:
|
kopanossl:
|
||||||
kopanowebapp:
|
kopanowebapp:
|
||||||
web:
|
web:
|
||||||
|
2
setup.sh
2
setup.sh
@ -41,7 +41,7 @@ if [ ! -e /etc/machine-id ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Creating individual env files for containers (if they do not exist already)"
|
echo "Creating individual env files for containers (if they do not exist already)"
|
||||||
for dockerenv in ldap password-self-service mail db kopano_ssl kopano_server kopano_webapp kopano_zpush kopano_grapi kopano_kapi kopano_dagent kopano_spooler kopano_gateway kopano_ical kopano_monitor kopano_scheduler kopano_search kopano_konnect kopano_kwmbridge kopano_kwmserver kopano_meet kopano_kapps kopano_spamd; do
|
for dockerenv in ldap password-self-service mail db kopano_ssl kopano_server kopano_webapp kopano_zpush kopano_grapi kopano_kapi kopano_dagent kopano_spooler kopano_gateway kopano_ical kopano_monitor kopano_scheduler kopano_search kopano_konnect kopano_kwmbridge kopano_kwmserver kopano_meet kopano_kapps; do
|
||||||
touch ./"$dockerenv".env
|
touch ./"$dockerenv".env
|
||||||
done
|
done
|
||||||
|
|
||||||
|
31
spamd-extras/README.md
Normal file
31
spamd-extras/README.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# kopano-spamd extras for kopano-docker
|
||||||
|
|
||||||
|
This directory contains a compose file including optional containers to enable learning spam to be used with the [SpamAssassin](https://spamassassin.apache.org/) bayes filter.
|
||||||
|
|
||||||
|
## How to use this compose file?
|
||||||
|
|
||||||
|
1. Add the `spamd-extras.yml` to the `COMPOSE_FILE` variable in your `.env` file.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
COMPOSE_FILE=docker-compose.yml:docker-compose.ports.yml:spamd-extras/spamd-extras.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Run `docker-compose up -d`.
|
||||||
|
|
||||||
|
|
||||||
|
## kopano-spamd
|
||||||
|
|
||||||
|
After startup there will be a new service `kopano-spamd` which will persist mails that are moved to `Junk` to a folder named `spam` inside the `kopanospamd` volume.
|
||||||
|
Likewise mails that are moved from the `Junk` back to `Inbox` are persisted in `ham`. Both folders indicate mails that should be trained as either being ham or spam.
|
||||||
|
|
||||||
|
The `kopano-scheduler` container is extended to run the training inside the `mail` docker container at about 4am with training results being picked up by SpamAssassin
|
||||||
|
automatically. You can check the docker logs of the scheduler for the results of each run.
|
||||||
|
|
||||||
|
While already trained files can be deleted immediately after each training run, there is no cleanup provided here. The `kopanospamd` volume will therefore grow over time.
|
||||||
|
|
||||||
|
For the bayes filter to start working you will need to train at least 200 mails of each ham and spam. To create a set of initial data you can use the Kopano WebApp
|
||||||
|
by selecting mails and using the `Export as` function to create a zip file of those mails and put them into the appropriate folder.
|
||||||
|
|
||||||
|
Read more about how to create effective training data here: https://spamassassin.apache.org/full/3.4.x/doc/sa-learn.html#EFFECTIVE-TRAINING
|
37
spamd-extras/spamd-extras.yml
Normal file
37
spamd-extras/spamd-extras.yml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
version: "3.5"
|
||||||
|
|
||||||
|
services:
|
||||||
|
kopano_spamd:
|
||||||
|
image: ${docker_repo:-zokradonh}/kopano_core:${CORE_VERSION:-latest}
|
||||||
|
read_only: true
|
||||||
|
restart: unless-stopped
|
||||||
|
container_name: ${COMPOSE_PROJECT_NAME}_spamd
|
||||||
|
depends_on:
|
||||||
|
- kopano_server
|
||||||
|
- mail
|
||||||
|
volumes:
|
||||||
|
- /etc/machine-id:/etc/machine-id
|
||||||
|
- /etc/machine-id:/var/lib/dbus/machine-id
|
||||||
|
- kopanosocket/:/run/kopano
|
||||||
|
- kopanossl/:/kopano/ssl
|
||||||
|
- kopanospamd/:/var/lib/kopano/spamd
|
||||||
|
environment:
|
||||||
|
- SERVICE_TO_START=spamd
|
||||||
|
- TZ=${TZ}
|
||||||
|
- KCCONF_SPAMD_SA_GROUP=kopano
|
||||||
|
networks:
|
||||||
|
- kopano-net
|
||||||
|
tmpfs:
|
||||||
|
- /tmp
|
||||||
|
|
||||||
|
mail:
|
||||||
|
volumes:
|
||||||
|
- kopanospamd/:/var/lib/kopano/spamd
|
||||||
|
|
||||||
|
kopano_scheduler:
|
||||||
|
environment:
|
||||||
|
- CRONDELAYED_LEARN_HAM=0 4 * * * docker exec kopano_mail sa-learn --spam /var/lib/kopano/spamd/spam --dbpath /var/mail-state/lib-amavis/.spamassassin
|
||||||
|
- CRONDELAYED_LEARN_SPAM=15 4 * * * docker exec kopano_mail sa-learn --ham /var/lib/kopano/spamd/ham --dbpath /var/mail-state/lib-amavis/.spamassassin
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
kopanospamd:
|
Loading…
x
Reference in New Issue
Block a user