diff --git a/Dockerfile b/Dockerfile index 7e819097..15b23283 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 diff --git a/Makefile b/Makefile index cb2150d2..b68b3f63 100644 --- a/Makefile +++ b/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 diff --git a/target/check_for_changes.sh b/target/check-for-changes.sh similarity index 83% rename from target/check_for_changes.sh rename to target/check-for-changes.sh index 215ef76d..50b6349b 100755 --- a/target/check_for_changes.sh +++ b/target/check-for-changes.sh @@ -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 diff --git a/target/supervisor/conf.d/supervisor-app.conf b/target/supervisor/conf.d/supervisor-app.conf index c768ba4b..86eb6c99 100644 --- a/target/supervisor/conf.d/supervisor-app.conf +++ b/target/supervisor/conf.d/supervisor-app.conf @@ -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