mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
Issue 747 (#748)
* fix for issue #747 (NOT TESTED YET) Need to test this. Dont merge it yet. * Small Cleanup and bug fixes Not done Yet! Not done yet. Dont merge. See comment in issue #747 * Add --ignore-missing. Now is fixed.
This commit is contained in:
parent
420e7741a1
commit
835939d856
|
@ -193,7 +193,7 @@ RUN curl -s https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem > /et
|
|||
|
||||
COPY ./target/bin /usr/local/bin
|
||||
# Start-mailserver script
|
||||
COPY ./target/check_for_changes.sh ./target/start-mailserver.sh ./target/fail2ban-wrapper.sh ./target/postfix-wrapper.sh ./target/docker-configomat/configomat.sh /usr/local/bin/
|
||||
COPY ./target/check-for-changes.sh ./target/start-mailserver.sh ./target/fail2ban-wrapper.sh ./target/postfix-wrapper.sh ./target/docker-configomat/configomat.sh /usr/local/bin/
|
||||
RUN chmod +x /usr/local/bin/*
|
||||
|
||||
# Configure supervisor
|
||||
|
|
4
Makefile
4
Makefile
|
@ -171,7 +171,7 @@ fixtures:
|
|||
docker cp "`pwd`/test/config/sieve/dovecot.sieve" mail:/var/mail/localhost.localdomain/user1/.dovecot.sieve
|
||||
docker exec mail /bin/sh -c "maildirmake.dovecot /var/mail/localhost.localdomain/user1/.INBOX.spam"
|
||||
docker exec mail /bin/sh -c "chown 5000:5000 -R /var/mail/localhost.localdomain/user1/.INBOX.spam"
|
||||
sleep 20
|
||||
sleep 30
|
||||
# Sending test mails
|
||||
docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-spam.txt"
|
||||
docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-virus.txt"
|
||||
|
@ -194,7 +194,7 @@ fixtures:
|
|||
|
||||
docker exec mail_override_hostname /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/existing-user1.txt"
|
||||
# Wait for mails to be analyzed
|
||||
sleep 75
|
||||
sleep 80
|
||||
|
||||
tests:
|
||||
# Start tests
|
||||
|
|
|
@ -1,38 +1,44 @@
|
|||
#! /bin/bash
|
||||
|
||||
# create date for log output
|
||||
log_date=$(date +"%Y-%m-%d %H:%M:%S ")
|
||||
# Prevent a start too early
|
||||
sleep 5
|
||||
echo "${log_date} Start check-for-changes script."
|
||||
|
||||
# change directory
|
||||
cd /tmp/docker-mailserver
|
||||
|
||||
# Update / generate after start
|
||||
echo 'Makeing new chksum'
|
||||
sha512sum --tag postfix-accounts.cf --tag postfix-virtual.cf > chksum
|
||||
# Check postfix-accounts.cf exist else break
|
||||
if [ ! -f postfix-accounts.cf ]; then
|
||||
echo "${log_date} postfix-accounts.cf is missing! This should not run! Exit!"
|
||||
exit
|
||||
fi
|
||||
|
||||
# Update / generate after start
|
||||
echo "${log_date} Makeing new checksum file."
|
||||
if [ -f postfix-virtual.cf ]; then
|
||||
sha512sum --tag postfix-accounts.cf --tag postfix-virtual.cf > chksum
|
||||
else
|
||||
sha512sum --tag postfix-accounts.cf > chksum
|
||||
fi
|
||||
# Run forever
|
||||
while true; do
|
||||
|
||||
# Check postfix-virtual.cf exist else break
|
||||
if [ ! -f postfix-virtual.cf ]; then
|
||||
echo 'postfix-virtual.cf is missing! exit!'
|
||||
break;
|
||||
fi
|
||||
|
||||
# Check postfix-accounts.cf exist else break
|
||||
if [ ! -f postfix-accounts.cf ]; then
|
||||
echo 'postfix-accounts.cf is missing! exit!'
|
||||
break;
|
||||
fi
|
||||
|
||||
# recreate logdate
|
||||
log_date=$(date +"%Y-%m-%d %H:%M:%S ")
|
||||
|
||||
# Get chksum and check it.
|
||||
chksum=$(sha512sum -c chksum)
|
||||
chksum=$(sha512sum -c --ignore-missing chksum)
|
||||
resu_acc=${chksum:21:2}
|
||||
resu_vir=${chksum:44:2}
|
||||
if [ -f postfix-virtual.cf ]; then
|
||||
resu_vir=${chksum:44:2}
|
||||
else
|
||||
resu_vir="OK"
|
||||
fi
|
||||
|
||||
if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
||||
echo "CHANGE DETECT"
|
||||
echo "${log_date} Change detected"
|
||||
#regen postfix accounts.
|
||||
echo -n > /etc/postfix/vmailbox
|
||||
echo -n > /etc/dovecot/userdb
|
||||
|
@ -74,6 +80,7 @@ if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
|||
echo ${domain} >> /tmp/vhost.tmp
|
||||
done
|
||||
fi
|
||||
if [ -f postfix-virtual.cf ]; then
|
||||
# regen postfix aliases
|
||||
echo -n > /etc/postfix/virtual
|
||||
echo -n > /etc/postfix/regexp
|
||||
|
@ -97,6 +104,7 @@ if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
|||
s/$/ regexp:\/etc\/postfix\/regexp/
|
||||
}' /etc/postfix/main.cf
|
||||
fi
|
||||
fi
|
||||
# Set vhost
|
||||
if [ -f /tmp/vhost.tmp ]; then
|
||||
cat /tmp/vhost.tmp | sort | uniq > /etc/postfix/vhost && rm /tmp/vhost.tmp
|
||||
|
@ -115,8 +123,12 @@ if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
|||
supervisorctl restart dovecot
|
||||
fi
|
||||
|
||||
echo 'Update chksum'
|
||||
echo "${log_date} Update checksum"
|
||||
if [ -f postfix-virtual.cf ]; then
|
||||
sha512sum --tag postfix-accounts.cf --tag postfix-virtual.cf > chksum
|
||||
else
|
||||
sha512sum --tag postfix-accounts.cf > chksum
|
||||
fi
|
||||
fi
|
||||
|
||||
sleep 1
|
|
@ -120,4 +120,4 @@ autostart=false
|
|||
autorestart=true
|
||||
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
||||
stderr_logfile=/var/log/supervisor/%(program_name)s.log
|
||||
command=/usr/local/bin/check_for_changes.sh
|
||||
command=/usr/local/bin/check-for-changes.sh
|
||||
|
|
Loading…
Reference in a new issue