From 2a3be413f05f9ace19f1903fb2b21142b44e2b81 Mon Sep 17 00:00:00 2001 From: andryyy Date: Sat, 17 Dec 2016 21:08:19 +0100 Subject: [PATCH] Testing --- README.md | 19 ++++++++++++------- data/Dockerfiles/sogo/Dockerfile | 2 +- data/Dockerfiles/sogo/docker-entrypoint.sh | 4 ++++ data/conf/sogo/sogo.conf | 2 +- data/web/inc/prerequisites.inc.php | 9 ++++++++- 5 files changed, 26 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a0cfbaa6..c1d198e9 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ -# mailcow-dockerized +# mailcow-dockerized 🐮 🐋 -mailcow dockerized comes with 11 containers linked in a mailcow network: +mailcow dockerized comes with 11 containers linked in a bridged docker network ("mailcow-network"): Dovecot, Memcached, Redis, MariaDB, PowerDNS Recursor, PHP-FPM, Postfix, Nginx, Rmilter, Rspamd and SOGo. +4 volumes to keep dynamic data. Feel free to use a 3rd-party driver to host your mail directory (vmail) in the cloud or whatever else. +vmail-vol-1, dkim-vol-1, redis-vol-1, mysql-vol-1 + +Important configuration files are mounted into the related containers and can be changed. Services should be restarted after they were changed (`docker-compose restart x-mailcow`). + All configurations were written with security in mind. ### Containers and volumes @@ -17,13 +22,13 @@ All configurations were written with security in mind. | Container | mariadb-mailcow | mysql | - | 3306/tcp | mysql-vol-1:/var/lib/mysql/, ./data/conf/mysql/:/etc/mysql/conf.d/:ro | | Container | rmilter-mailcow | rmilter | - | 9000/tcp | ./data/conf/rmilter/:/etc/rmilter.conf.d/:ro | | Container | phpfpm-mailcow | phpfpm | - | 9000/tcp | dkim-vol-1:/data/dkim, ./data/web:/web:ro, ./data/conf/rspamd/dynmaps:/dynmaps:ro | -| Container | sogo-mailcow | sogo | - | 20000/tcp | ./data/conf/sogo/:/etc/sogo/,exposes /usr/lib/GNUstep/SOGo/WebServerResources/ | +| Container | sogo-mailcow | sogo | - | 20000/tcp | ./data/conf/sogo/:/etc/sogo/, /usr/lib/GNUstep/SOGo/WebServerResources/ | | Container | redis-mailcow | redis | - | 6379/tcp | redis-vol-1:/data/ | | Container | memcached-mailcow | memcached | - | 11211/tcp | - | -| Volume | vmail-vol-1 | - | - | - | Mounts to dovecot | -| Volume | dkim-vol-1 | - | - | - | Mounts to rspamd + phpfpm | -| Volume | redis-vol-1 | - | - | - | Mounts to redis | -| Volume | mysql-vol-1 | - | - | - | Mounts to mysql | +| Volume | vmail-vol-1 | - | - | - | Mounts to dovecot-mailcow | +| Volume | dkim-vol-1 | - | - | - | Mounts to rspamd-mailcow + phpfpm-mailcow | +| Volume | redis-vol-1 | - | - | - | Mounts to redis-mailcow | +| Volume | mysql-vol-1 | - | - | - | Mounts to mysql-mailcow | All containers share a network "mailcow-network" with the subnet 172.22.1.0/24 - if you want to change it, set it in the composer file. IPs are dynamic except for PowerDNS resolver which has a static ip address 172.22.1.254. diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile index 57132ed6..b8c543c8 100644 --- a/data/Dockerfiles/sogo/Dockerfile +++ b/data/Dockerfiles/sogo/Dockerfile @@ -5,7 +5,7 @@ ENV DEBIAN_FRONTEND noninteractive ENV GOSU_VERSION 1.9 RUN set -x \ - && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ + && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget cron && rm -rf /var/lib/apt/lists/* \ && dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')" \ && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch" \ && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc" \ diff --git a/data/Dockerfiles/sogo/docker-entrypoint.sh b/data/Dockerfiles/sogo/docker-entrypoint.sh index b3c0a211..445097dd 100755 --- a/data/Dockerfiles/sogo/docker-entrypoint.sh +++ b/data/Dockerfiles/sogo/docker-entrypoint.sh @@ -9,4 +9,8 @@ ${AS_SOGO} defaults write sogod OCSFolderInfoURL "mysql://${DBUSER}:${DBPASS}@my ${AS_SOGO} defaults write sogod OCSEMailAlarmsFolderURL "mysql://${DBUSER}:${DBPASS}@mysql:3306/${DBNAME}/sogo_alarms_folder" ${AS_SOGO} defaults write sogod OCSSessionsFolderURL "mysql://${DBUSER}:${DBPASS}@mysql:3306/${DBNAME}/sogo_sessions_folder" +echo '* * * * * sogo /usr/sbin/sogo-tool expire-sessions 60' > /etc/cron.d/sogo +echo '* * * * * sogo /usr/sbin/sogo-ealarms-notify' > /etc/cron.d/sogo +cron & + exec ${AS_SOGO} "$@" diff --git a/data/conf/sogo/sogo.conf b/data/conf/sogo/sogo.conf index ed5ec384..cf59aab9 100644 --- a/data/conf/sogo/sogo.conf +++ b/data/conf/sogo/sogo.conf @@ -56,7 +56,7 @@ SOGoSieveScriptsEnabled = YES; SOGoTimeZone = "Europe/Berlin"; SOGoTrashFolderName = "Trash"; - SOGoVacationEnabled = YES; + SOGoVacationEnabled = NO; //SOGoDebugRequests = YES; //SoDebugBaseURL = YES; diff --git a/data/web/inc/prerequisites.inc.php b/data/web/inc/prerequisites.inc.php index 08eedfab..cec7454d 100644 --- a/data/web/inc/prerequisites.inc.php +++ b/data/web/inc/prerequisites.inc.php @@ -21,7 +21,14 @@ $opt = [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]; -$pdo = new PDO($dsn, $database_user, $database_pass, $opt); +try { + $pdo = new PDO($dsn, $database_user, $database_pass, $opt); +} +catch (PDOException $e) { +?> +
🐮 Connection failed, database may be in warm-up state, please try again later.

The following error was reported:
getMessage();?>
+