From 1e9cae908491cd7c6cb2c35b30d7bc89a8c5e23f Mon Sep 17 00:00:00 2001
From: "andre.peters" <andre.peters@servercow.de>
Date: Mon, 8 Jan 2018 22:00:54 +0100
Subject: [PATCH] [Compose] New images with LOG_LINES [Update] Do not add empty
 line in each loop

---
 data/Dockerfiles/acme/docker-entrypoint.sh |  2 +-
 data/Dockerfiles/dovecot/Dockerfile        |  3 ++-
 data/Dockerfiles/dovecot/syslog-ng.conf    |  2 +-
 data/Dockerfiles/postfix/syslog-ng.conf    |  2 +-
 data/Dockerfiles/sogo/syslog-ng.conf       |  2 +-
 data/Dockerfiles/watchdog/watchdog.sh      |  2 +-
 docker-compose.yml                         | 18 ++++++++++++------
 generate_config.sh                         |  2 ++
 update.sh                                  |  9 ++++++++-
 9 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/data/Dockerfiles/acme/docker-entrypoint.sh b/data/Dockerfiles/acme/docker-entrypoint.sh
index 8d910e5d..057a0c30 100755
--- a/data/Dockerfiles/acme/docker-entrypoint.sh
+++ b/data/Dockerfiles/acme/docker-entrypoint.sh
@@ -12,7 +12,7 @@ log_f() {
   fi
   redis-cli -h redis LPUSH ACME_LOG "{\"time\":\"$(date +%s)\",\"message\":\"$(printf '%s' "${1}" | \
     tr '%&;$"_[]{}-\r\n' ' ')\"}" > /dev/null
-  redis-cli -h redis LTRIM ACME_LOG 0 9999 > /dev/null
+  redis-cli -h redis LTRIM ACME_LOG 0 ${LOG_LINES} > /dev/null
 }
 
 if [[ "${SKIP_LETS_ENCRYPT}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
diff --git a/data/Dockerfiles/dovecot/Dockerfile b/data/Dockerfiles/dovecot/Dockerfile
index 1da6678a..669f51ff 100644
--- a/data/Dockerfiles/dovecot/Dockerfile
+++ b/data/Dockerfiles/dovecot/Dockerfile
@@ -6,7 +6,7 @@ ENV LC_ALL C
 ENV DOVECOT_VERSION 2.2.33.2
 ENV PIGEONHOLE_VERSION 0.4.21
 
-RUN apt-get update && apt-get -y install \
+RUN apt-get update && apt-get -y --no-install-recommends install \
 	automake \
 	autotools-dev \
 	build-essential \
@@ -56,6 +56,7 @@ RUN apt-get update && apt-get -y install \
 	make \
   procps \
 	supervisor \
+  cron \
 	syslog-ng \
 	syslog-ng-core \
 	syslog-ng-mod-redis \
diff --git a/data/Dockerfiles/dovecot/syslog-ng.conf b/data/Dockerfiles/dovecot/syslog-ng.conf
index 216111f2..7677d1bf 100644
--- a/data/Dockerfiles/dovecot/syslog-ng.conf
+++ b/data/Dockerfiles/dovecot/syslog-ng.conf
@@ -35,7 +35,7 @@ destination d_redis_cleanup {
     host("redis-mailcow")
     persist-name("redis3")
     port(6379)
-    command("LTRIM" "DOVECOT_MAILLOG" "0" "9999")
+    command("LTRIM" "DOVECOT_MAILLOG" "0" "`LOG_LINES`")
   );
 };
 filter f_mail { facility(mail); };
diff --git a/data/Dockerfiles/postfix/syslog-ng.conf b/data/Dockerfiles/postfix/syslog-ng.conf
index 9aa45e3a..2e36a1ae 100644
--- a/data/Dockerfiles/postfix/syslog-ng.conf
+++ b/data/Dockerfiles/postfix/syslog-ng.conf
@@ -35,7 +35,7 @@ destination d_redis_cleanup {
     host("redis-mailcow")
     persist-name("redis3")
     port(6379)
-    command("LTRIM" "POSTFIX_MAILLOG" "0" "9999")
+    command("LTRIM" "POSTFIX_MAILLOG" "0" "`LOG_LINES`")
   );
 };
 filter f_mail { facility(mail); };
diff --git a/data/Dockerfiles/sogo/syslog-ng.conf b/data/Dockerfiles/sogo/syslog-ng.conf
index 51628353..d587b9b2 100644
--- a/data/Dockerfiles/sogo/syslog-ng.conf
+++ b/data/Dockerfiles/sogo/syslog-ng.conf
@@ -38,7 +38,7 @@ destination d_redis_cleanup {
     host("redis-mailcow")
     persist-name("redis3")
     port(6379)
-    command("LTRIM" "SOGO_LOG" "0" "9999")
+    command("LTRIM" "SOGO_LOG" "0" "`LOG_LINES`")
   );
 };
 log {
diff --git a/data/Dockerfiles/watchdog/watchdog.sh b/data/Dockerfiles/watchdog/watchdog.sh
index ec7133e5..e0da33de 100755
--- a/data/Dockerfiles/watchdog/watchdog.sh
+++ b/data/Dockerfiles/watchdog/watchdog.sh
@@ -37,7 +37,7 @@ log_msg() {
     redis-cli -h redis LPUSH WATCHDOG_LOG "{\"time\":\"$(date +%s)\",\"message\":\"$(printf '%s' "${1}" | \
       tr '%&;$"_[]{}-\r\n' ' ')\"}" > /dev/null
   fi
-  redis-cli -h redis LTRIM WATCHDOG_LOG 0 9999 > /dev/null
+  redis-cli -h redis LTRIM WATCHDOG_LOG 0 ${LOG_LINES} > /dev/null
   echo $(date) $(printf '%s\n' "${1}")
 }
 
diff --git a/docker-compose.yml b/docker-compose.yml
index 7f7b548b..9428472a 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -91,7 +91,7 @@ services:
             - rspamd
 
     php-fpm-mailcow:
-      image: mailcow/phpfpm:1.6
+      image: mailcow/phpfpm:1.7
       build: ./data/Dockerfiles/phpfpm
       command: "php-fpm -d date.timezone=${TZ} -d expose_php=0"
       depends_on:
@@ -102,6 +102,7 @@ services:
         - dkim-vol-1:/data/dkim
         - ./data/conf/rspamd/meta_exporter:/meta_exporter:ro
       environment:
+        - LOG_LINES=${LOG_LINES}
         - TZ=${TZ}
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}
@@ -124,13 +125,14 @@ services:
             - phpfpm
 
     sogo-mailcow:
-      image: mailcow/sogo:1.12
+      image: mailcow/sogo:1.13
       build: ./data/Dockerfiles/sogo
       environment:
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}
         - DBPASS=${DBPASS}
         - TZ=${TZ}
+        - LOG_LINES=${LOG_LINES}
         - MAILCOW_HOSTNAME=${MAILCOW_HOSTNAME}
       volumes:
         - ./data/conf/sogo/:/etc/sogo/
@@ -144,7 +146,7 @@ services:
             - sogo
 
     dovecot-mailcow:
-      image: mailcow/dovecot:1.13
+      image: mailcow/dovecot:1.14
       build: ./data/Dockerfiles/dovecot
       cap_add:
         - NET_BIND_SERVICE
@@ -155,6 +157,7 @@ services:
         - vmail-vol-1:/var/vmail
         - crypt-vol-1:/mail_crypt/
       environment:
+        - LOG_LINES=${LOG_LINES}
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}
         - DBPASS=${DBPASS}
@@ -181,7 +184,7 @@ services:
             - dovecot
 
     postfix-mailcow:
-      image: mailcow/postfix:1.10
+      image: mailcow/postfix:1.11
       build: ./data/Dockerfiles/postfix
       volumes:
         - ./data/conf/postfix:/opt/postfix/conf
@@ -189,6 +192,7 @@ services:
         - postfix-vol-1:/var/spool/postfix
         - crypt-vol-1:/var/lib/zeyple
       environment:
+        - LOG_LINES=${LOG_LINES}
         - TZ=${TZ}
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}
@@ -256,11 +260,12 @@ services:
       depends_on:
         - nginx-mailcow
         - mysql-mailcow
-      image: mailcow/acme:1.26
+      image: mailcow/acme:1.27
       build: ./data/Dockerfiles/acme
       dns:
         - 172.22.1.254
       environment:
+        - LOG_LINES=${LOG_LINES}
         - ADDITIONAL_SAN=${ADDITIONAL_SAN}
         - MAILCOW_HOSTNAME=${MAILCOW_HOSTNAME}
         - DBNAME=${DBNAME}
@@ -300,12 +305,13 @@ services:
         - /lib/modules:/lib/modules:ro
 
     watchdog-mailcow:
-      image: mailcow/watchdog:1.11
+      image: mailcow/watchdog:1.12
       build: ./data/Dockerfiles/watchdog
       volumes:
         - vmail-vol-1:/vmail:ro
       restart: always
       environment:
+        - LOG_LINES=${LOG_LINES}
         - TZ=${TZ}
         - DBNAME=${DBNAME}
         - DBUSER=${DBUSER}
diff --git a/generate_config.sh b/generate_config.sh
index 34be645e..e34fb7cb 100755
--- a/generate_config.sh
+++ b/generate_config.sh
@@ -101,6 +101,8 @@ USE_WATCHDOG=n
 # Send notifications by mail (no DKIM signature, sent from watchdog@MAILCOW_HOSTNAME)
 #WATCHDOG_NOTIFY_EMAIL=
 
+LOG_LINES=9999
+
 EOF
 
 mkdir -p data/assets/ssl
diff --git a/update.sh b/update.sh
index 461b2a2a..635be106 100755
--- a/update.sh
+++ b/update.sh
@@ -4,8 +4,10 @@ for bin in curl docker-compose docker git awk sha1sum; do
 	if [[ -z $(which ${bin}) ]]; then echo "Cannot find ${bin}, exiting..."; exit 1; fi
 done
 
+[[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing"; exit 1;}
+
 CONFIG_ARRAY=("SKIP_LETS_ENCRYPT" "USE_WATCHDOG" "WATCHDOG_NOTIFY_EMAIL" "SKIP_CLAMD" "SKIP_IP_CHECK" "SKIP_FAIL2BAN" "ADDITIONAL_SAN" "DOVEADM_PORT")
-echo >> mailcow.conf
+sed -i '$a\' mailcow.conf
 for option in ${CONFIG_ARRAY[@]}; do
 	if [[ ${option} == "ADDITIONAL_SAN" ]]; then
 		if ! grep -q ${option} mailcow.conf; then
@@ -27,6 +29,11 @@ for option in ${CONFIG_ARRAY[@]}; do
 			echo "Adding new option \"${option}\" to mailcow.conf"
 			echo "WATCHDOG_NOTIFY_EMAIL=" >> mailcow.conf
 		fi
+  elif [[ ${option} == "LOG_LINES" ]]; then
+    if ! grep -q ${option} mailcow.conf; then
+      echo "Adding new option \"${option}\" to mailcow.conf"
+      echo "LOG_LINES=9999" >> mailcow.conf
+    fi
 	elif ! grep -q ${option} mailcow.conf; then
 		echo "Adding new option \"${option}\" to mailcow.conf"
 		echo "${option}=n" >> mailcow.conf