diff --git a/.gitignore b/.gitignore index 77b86547..0200c7c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ rebuild-images.sh +data/conf/sogo/sieve.creds +data/conf/dovecot/dovecot-master.passwd diff --git a/data/Dockerfiles/dovecot/docker-entrypoint.sh b/data/Dockerfiles/dovecot/docker-entrypoint.sh index 0c92b058..0662472d 100755 --- a/data/Dockerfiles/dovecot/docker-entrypoint.sh +++ b/data/Dockerfiles/dovecot/docker-entrypoint.sh @@ -13,4 +13,10 @@ chown -R vmail:vmail /var/vmail/sieve # Do not do this every start-up, it may take a very long time. So we use a stat check here. if [[ $(stat -c %U /var/vmail/) != "vmail" ]] ; then chown -R vmail:vmail /var/vmail ; fi +# Create random master for SOGo sieve features +RAND_USER=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1) +RAND_PASS=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 24 | head -n 1) +echo ${RAND_USER}:$(doveadm pw -s PBKDF2 -p ${RAND_PASSWD}) > /etc/dovecot/dovecot-master.passwd +echo ${RAND_USER}:${RAND_PASS} > /etc/sogo/sieve.creds + exec "$@" diff --git a/data/Dockerfiles/sogo/sogo-cron.sh b/data/Dockerfiles/sogo/sogo-cron.sh index da51d784..14362145 100755 --- a/data/Dockerfiles/sogo/sogo-cron.sh +++ b/data/Dockerfiles/sogo/sogo-cron.sh @@ -5,5 +5,6 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin while true; do /usr/sbin/sogo-tool expire-sessions 60 /usr/sbin/sogo-ealarms-notify +/usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds sleep 60 done diff --git a/data/web/add.php b/data/web/add.php index 4d155dc4..273769ba 100644 --- a/data/web/add.php +++ b/data/web/add.php @@ -80,6 +80,7 @@ if (isset($_SESSION['mailcow_cc_role']) && ($_SESSION['mailcow_cc_role'] == "adm +

date('Y-m-d H:i:s'), ':relay_all_recipients' => $relay_all_recipients )); - /* - PoC for a restart with supervisord unix socket - * $sock = stream_socket_client("unix:///var/run/controller/supervisord.sock", $errno, $errstr, 30); - * fwrite($sock, "GET ?processname=sogo&action=restart HTTP/1.0\r\nAccept: */*\r\n\r\n"); - * fclose($sock); - */ + // + // PoC for a restart with supervisord unix socket + // * $sock = stream_socket_client("unix:///var/run/controller/supervisord.sock", $errno, $errstr, 30); + // * fwrite($sock, "GET ?processname=sogo&action=restart HTTP/1.0\r\nAccept: */*\r\n\r\n"); + // * fclose($sock); + // $_SESSION['return'] = array( 'type' => 'success', 'msg' => sprintf($lang['success']['domain_added'], htmlspecialchars($domain)) diff --git a/data/web/lang/lang.de.php b/data/web/lang/lang.de.php index b35a89a9..dc96774e 100644 --- a/data/web/lang/lang.de.php +++ b/data/web/lang/lang.de.php @@ -283,6 +283,7 @@ $lang['add']['select_domain'] = 'Bitte zuerst eine Domain auswählen'; $lang['add']['password'] = 'Passwort:'; $lang['add']['password_repeat'] = 'Passwort (Wiederholung):'; $lang['add']['previous'] = 'Vorherige Seite'; +$lang['add']['restart_sogo_hint'] = 'Der SOGo Container muss nach dem Hinzufügen einer neuen Domain neugestartet werden!'; $lang['login']['title'] = 'Anmeldung'; $lang['login']['administration'] = 'Administration'; diff --git a/data/web/lang/lang.en.php b/data/web/lang/lang.en.php index 12313cfe..4f227ede 100644 --- a/data/web/lang/lang.en.php +++ b/data/web/lang/lang.en.php @@ -283,6 +283,7 @@ $lang['add']['select_domain'] = 'Please select a domain first'; $lang['add']['password'] = 'Password:'; $lang['add']['password_repeat'] = 'Confirmation password (repeat):'; $lang['add']['previous'] = 'Previous page'; +$lang['add']['restart_sogo_hint'] = 'You will need to restart the SOGo service container after adding a new domain!'; $lang['login']['title'] = 'Login'; $lang['login']['administration'] = 'Administration'; diff --git a/docker-compose.yml b/docker-compose.yml index e2f63c55..3f4f21af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -134,6 +134,8 @@ services: - ./data/conf/dovecot:/etc/dovecot - ./data/assets/ssl:/etc/ssl/mail/:ro - vmail-vol-1:/var/vmail + volumes_from: + - sogo-mailcow environment: - DBNAME=${DBNAME} - DBUSER=${DBUSER}