diff --git a/setup/start.sh b/setup/start.sh index e8fd2d4fb..8b16548e3 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -126,9 +126,9 @@ mkdir -p "${DATA_DIR}/mysql" mkdir -p "${DATA_DIR}/postgresql" mkdir -p "${DATA_DIR}/mongodb" mkdir -p "${DATA_DIR}/snapshots" -mkdir -p "${DATA_DIR}/addons" +mkdir -p "${DATA_DIR}/addons/mail" mkdir -p "${DATA_DIR}/collectd/collectd.conf.d" -mkdir -p "${DATA_DIR}/acme" # acme challenges +mkdir -p "${DATA_DIR}/acme" echo "==> Configuring journald" sed -e "s/^#SystemMaxUse=.*$/SystemMaxUse=100M/" \ diff --git a/src/infra_version.js b/src/infra_version.js index e9665942e..6a83222e7 100644 --- a/src/infra_version.js +++ b/src/infra_version.js @@ -17,7 +17,7 @@ exports = module.exports = { 'postgresql': { repo: 'cloudron/postgresql', tag: 'cloudron/postgresql:0.15.0' }, 'mongodb': { repo: 'cloudron/mongodb', tag: 'cloudron/mongodb:0.11.0' }, 'redis': { repo: 'cloudron/redis', tag: 'cloudron/redis:0.10.0' }, - 'mail': { repo: 'cloudron/mail', tag: 'cloudron/mail:0.26.0' }, + 'mail': { repo: 'cloudron/mail', tag: 'cloudron/mail:0.27.0' }, 'graphite': { repo: 'cloudron/graphite', tag: 'cloudron/graphite:0.10.0' } } }; diff --git a/src/platform.js b/src/platform.js index 09d1358aa..60f22aa2b 100644 --- a/src/platform.js +++ b/src/platform.js @@ -227,9 +227,7 @@ function createMailConfig(callback) { user.getOwner(function (error, owner) { var alertsTo = [ 'webmaster@cloudron.io' ].concat(error ? [] : owner.email).join(','); - // be careful of how this file is created because mail_vars is a file mount - // and an inode change won't reflect in the container (https://github.com/docker/docker/issues/15793) - if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/mail_vars.ini', + if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/mail/mail_vars.ini', `mail_domain=${fqdn}\nmail_server_name=${mailFqdn}\nalerts_from=${alertsFrom}\nalerts_to=${alertsTo}`, 'utf8')) { return callback(new Error('Could not create mail var file:' + safe.error.message)); } @@ -252,8 +250,8 @@ function startMail(callback) { certificates.getAdminCertificate(function (error, cert, key) { if (error) return callback(error); - if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/tls_cert.pem', cert)) return callback(new Error('Could not create cert file:' + safe.error.message)); - if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/tls_key.pem', key)) return callback(new Error('Could not create key file:' + safe.error.message)); + if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/mail/tls_cert.pem', cert)) return callback(new Error('Could not create cert file:' + safe.error.message)); + if (!safe.fs.writeFileSync(paths.DATA_DIR + '/addons/mail/tls_key.pem', key)) return callback(new Error('Could not create key file:' + safe.error.message)); settings.getMailConfig(function (error, mailConfig) { if (error) return callback(error); @@ -272,9 +270,7 @@ function startMail(callback) { --memory-swap ${memoryLimit * 2}m \ -v "${dataDir}/box/mail:/app/data" \ -v "${dataDir}/mail:/run" \ - -v "${dataDir}/addons/tls_cert.pem:/etc/tls_cert.pem:ro" \ - -v "${dataDir}/addons/tls_key.pem:/etc/tls_key.pem:ro" \ - -v "${dataDir}/addons/mail_vars.ini:/etc/mail.ini:ro" \ + -v "${dataDir}/addons/mail:/etc/mail" \ ${ports} \ --read-only -v /tmp ${tag}`;