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
|
COPY ./target/bin /usr/local/bin
|
||||||
# Start-mailserver script
|
# 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/*
|
RUN chmod +x /usr/local/bin/*
|
||||||
|
|
||||||
# Configure supervisor
|
# 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 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 "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"
|
docker exec mail /bin/sh -c "chown 5000:5000 -R /var/mail/localhost.localdomain/user1/.INBOX.spam"
|
||||||
sleep 20
|
sleep 30
|
||||||
# Sending test mails
|
# 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-spam.txt"
|
||||||
docker exec mail /bin/sh -c "nc 0.0.0.0 25 < /tmp/docker-mailserver-test/email-templates/amavis-virus.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"
|
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
|
# Wait for mails to be analyzed
|
||||||
sleep 75
|
sleep 80
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
# Start tests
|
# Start tests
|
||||||
|
|
|
@ -1,38 +1,44 @@
|
||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
|
|
||||||
|
# create date for log output
|
||||||
|
log_date=$(date +"%Y-%m-%d %H:%M:%S ")
|
||||||
# Prevent a start too early
|
# Prevent a start too early
|
||||||
sleep 5
|
sleep 5
|
||||||
|
echo "${log_date} Start check-for-changes script."
|
||||||
|
|
||||||
# change directory
|
# change directory
|
||||||
cd /tmp/docker-mailserver
|
cd /tmp/docker-mailserver
|
||||||
|
|
||||||
# Update / generate after start
|
# Check postfix-accounts.cf exist else break
|
||||||
echo 'Makeing new chksum'
|
if [ ! -f postfix-accounts.cf ]; then
|
||||||
sha512sum --tag postfix-accounts.cf --tag postfix-virtual.cf > chksum
|
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
|
# Run forever
|
||||||
while true; do
|
while true; do
|
||||||
|
|
||||||
# Check postfix-virtual.cf exist else break
|
# recreate logdate
|
||||||
if [ ! -f postfix-virtual.cf ]; then
|
log_date=$(date +"%Y-%m-%d %H:%M:%S ")
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
# Get chksum and check it.
|
# Get chksum and check it.
|
||||||
chksum=$(sha512sum -c chksum)
|
chksum=$(sha512sum -c --ignore-missing chksum)
|
||||||
resu_acc=${chksum:21:2}
|
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
|
if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
||||||
echo "CHANGE DETECT"
|
echo "${log_date} Change detected"
|
||||||
#regen postfix accounts.
|
#regen postfix accounts.
|
||||||
echo -n > /etc/postfix/vmailbox
|
echo -n > /etc/postfix/vmailbox
|
||||||
echo -n > /etc/dovecot/userdb
|
echo -n > /etc/dovecot/userdb
|
||||||
|
@ -74,6 +80,7 @@ if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
||||||
echo ${domain} >> /tmp/vhost.tmp
|
echo ${domain} >> /tmp/vhost.tmp
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
if [ -f postfix-virtual.cf ]; then
|
||||||
# regen postfix aliases
|
# regen postfix aliases
|
||||||
echo -n > /etc/postfix/virtual
|
echo -n > /etc/postfix/virtual
|
||||||
echo -n > /etc/postfix/regexp
|
echo -n > /etc/postfix/regexp
|
||||||
|
@ -97,6 +104,7 @@ if ! [ $resu_acc = "OK" ] || ! [ $resu_vir = "OK" ]; then
|
||||||
s/$/ regexp:\/etc\/postfix\/regexp/
|
s/$/ regexp:\/etc\/postfix\/regexp/
|
||||||
}' /etc/postfix/main.cf
|
}' /etc/postfix/main.cf
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
# Set vhost
|
# Set vhost
|
||||||
if [ -f /tmp/vhost.tmp ]; then
|
if [ -f /tmp/vhost.tmp ]; then
|
||||||
cat /tmp/vhost.tmp | sort | uniq > /etc/postfix/vhost && rm /tmp/vhost.tmp
|
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
|
supervisorctl restart dovecot
|
||||||
fi
|
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
|
sha512sum --tag postfix-accounts.cf --tag postfix-virtual.cf > chksum
|
||||||
|
else
|
||||||
|
sha512sum --tag postfix-accounts.cf > chksum
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sleep 1
|
sleep 1
|
|
@ -120,4 +120,4 @@ autostart=false
|
||||||
autorestart=true
|
autorestart=true
|
||||||
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
stdout_logfile=/var/log/supervisor/%(program_name)s.log
|
||||||
stderr_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