mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
Introducing global filters. (#934)
* Introducing global filters * added optional after.dovecot.sieve/before.dovecot.sieve files * added global filter test
This commit is contained in:
parent
137d623171
commit
cc7c1f8804
|
@ -117,10 +117,8 @@ RUN sed -i -e 's/include_try \/usr\/share\/dovecot\/protocols\.d/include_try \/e
|
|||
chmod 755 /etc/dovecot/ssl && \
|
||||
cd /usr/share/dovecot && \
|
||||
./mkcert.sh && \
|
||||
mkdir /usr/lib/dovecot/sieve-pipe && \
|
||||
chmod 755 /usr/lib/dovecot/sieve-pipe && \
|
||||
mkdir /usr/lib/dovecot/sieve-filter && \
|
||||
chmod 755 /usr/lib/dovecot/sieve-filter
|
||||
mkdir -p /usr/lib/dovecot/sieve-pipe /usr/lib/dovecot/sieve-filter /usr/lib/dovecot/sieve-global && \
|
||||
chmod 755 -R /usr/lib/dovecot/sieve-pipe /usr/lib/dovecot/sieve-filter /usr/lib/dovecot/sieve-global
|
||||
|
||||
# Configures LDAP
|
||||
COPY target/dovecot/dovecot-ldap.conf.ext /etc/dovecot
|
||||
|
|
|
@ -31,14 +31,14 @@ plugin {
|
|||
# executed. The order of execution within a directory is determined by the
|
||||
# file names, using a normal 8bit per-character comparison. Multiple script
|
||||
# file or directory paths can be specified by appending an increasing number.
|
||||
#sieve_before =
|
||||
#sieve_before = /usr/lib/dovecot/sieve-global/before.dovecot.sieve
|
||||
#sieve_before2 =
|
||||
#sieve_before3 = (etc...)
|
||||
|
||||
# Identical to sieve_before, only the specified scripts are executed after the
|
||||
# user's script (only when keep is still in effect!). Multiple script file or
|
||||
# directory paths can be specified by appending an increasing number.
|
||||
#sieve_after =
|
||||
#sieve_after = /usr/lib/dovecot/sieve-global/after.dovecot.sieve
|
||||
#sieve_after2 =
|
||||
#sieve_after2 = (etc...)
|
||||
|
||||
|
|
|
@ -483,16 +483,25 @@ function _setup_dovecot() {
|
|||
# Copy pipe and filter programs, if any
|
||||
rm -f /usr/lib/dovecot/sieve-filter/*
|
||||
rm -f /usr/lib/dovecot/sieve-pipe/*
|
||||
if [ -d /tmp/docker-mailserver/sieve-filter ]; then
|
||||
cp /tmp/docker-mailserver/sieve-filter/* /usr/lib/dovecot/sieve-filter/
|
||||
chown docker:docker /usr/lib/dovecot/sieve-filter/*
|
||||
chmod 550 /usr/lib/dovecot/sieve-filter/*
|
||||
[ -d /tmp/docker-mailserver/sieve-filter ] && cp /tmp/docker-mailserver/sieve-filter/* /usr/lib/dovecot/sieve-filter/
|
||||
[ -d /tmp/docker-mailserver/sieve-pipe ] && cp /tmp/docker-mailserver/sieve-pipe/* /usr/lib/dovecot/sieve-pipe/
|
||||
if [ -f /tmp/docker-mailserver/before.dovecot.sieve ]; then
|
||||
sed -i "s/#sieve_before =/sieve_before =/" /etc/dovecot/conf.d/90-sieve.conf
|
||||
cp /tmp/docker-mailserver/before.dovecot.sieve /usr/lib/dovecot/sieve-global/
|
||||
sievec /usr/lib/dovecot/sieve-global/before.dovecot.sieve
|
||||
else
|
||||
sed -i "s/ sieve_before =/ #sieve_before =/" /etc/dovecot/conf.d/90-sieve.conf
|
||||
fi
|
||||
if [ -d /tmp/docker-mailserver/sieve-pipe ]; then
|
||||
cp /tmp/docker-mailserver/sieve-pipe/* /usr/lib/dovecot/sieve-pipe/
|
||||
chown docker:docker /usr/lib/dovecot/sieve-pipe/*
|
||||
chmod 550 /usr/lib/dovecot/sieve-pipe/*
|
||||
|
||||
if [ -f /tmp/docker-mailserver/after.dovecot.sieve ]; then
|
||||
sed -i "s/#sieve_after =/sieve_after =/" /etc/dovecot/conf.d/90-sieve.conf
|
||||
cp /tmp/docker-mailserver/after.dovecot.sieve /usr/lib/dovecot/sieve-global/
|
||||
sievec /usr/lib/dovecot/sieve-global/after.dovecot.sieve
|
||||
else
|
||||
sed -i "s/ sieve_after =/ #sieve_after =/" /etc/dovecot/conf.d/90-sieve.conf
|
||||
fi
|
||||
chown docker:docker -R /usr/lib/dovecot/sieve*
|
||||
chmod 550 -R /usr/lib/dovecot/sieve*
|
||||
}
|
||||
|
||||
function _setup_dovecot_local_user() {
|
||||
|
|
6
test/config/before.dovecot.sieve
Normal file
6
test/config/before.dovecot.sieve
Normal file
|
@ -0,0 +1,6 @@
|
|||
require ["fileinto", "copy"];
|
||||
|
||||
if address :contains ["From"] "spam@spam.com" {
|
||||
fileinto :copy "INBOX";
|
||||
}
|
||||
|
|
@ -329,7 +329,7 @@ load 'test_helper/bats-assert/load'
|
|||
@test "checking smtp: user1 should have received 6 mails" {
|
||||
run docker exec mail /bin/sh -c "ls -A /var/mail/localhost.localdomain/user1/new | wc -l"
|
||||
assert_success
|
||||
assert_output 6
|
||||
assert_output 7
|
||||
}
|
||||
|
||||
@test "checking smtp: rejects mail to unknown user" {
|
||||
|
@ -1047,6 +1047,10 @@ load 'test_helper/bats-assert/load'
|
|||
assert_output 1
|
||||
}
|
||||
|
||||
@test "checking sieve global: user1 should have gotten a copy of his spam mail" {
|
||||
run docker exec mail /bin/sh -c "grep 'Spambot <spam@spam.com>' -R /var/mail/localhost.localdomain/user1/new/"
|
||||
assert_success
|
||||
}
|
||||
#
|
||||
# accounts
|
||||
#
|
||||
|
|
Loading…
Reference in a new issue