From 520caf65571c0cdbac88e7fb56c04bacfb112778 Mon Sep 17 00:00:00 2001 From: Erik Hennig Date: Sun, 2 Jan 2022 14:11:41 +0100 Subject: [PATCH 1/8] fix: typo in system backup template (#2081) --- management/templates/system-backup.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/management/templates/system-backup.html b/management/templates/system-backup.html index 6cbcc4fa..3075b912 100644 --- a/management/templates/system-backup.html +++ b/management/templates/system-backup.html @@ -5,7 +5,7 @@

Backup Status

-

The box makes an incremental backup each night. By default the backup is stored on the machine itself, but you can also store in on S3-compatible services like Amazon Web Services (AWS).

+

The box makes an incremental backup each night. By default the backup is stored on the machine itself, but you can also store it on S3-compatible services like Amazon Web Services (AWS).

Configuration

From aab1ec691c1cdfbf56332642277434892336ac91 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 8 Jan 2022 07:46:24 -0500 Subject: [PATCH 2/8] CHANGELOG entries --- CHANGELOG.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bff4d661..5611b42a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,26 @@ CHANGELOG ========= - In Development -------------- +Setup: + +* Fixed failed setup if a previous attempt failed while updating Nextcloud. + Mail: + * Roundcube's persistent_login plugin update to better support Roundcube 1.5 +Control panel: + +* Fixed a crash if a custom DNS entry is not under a zone managed by the box. +* Fix DNSSEC instructions typo. + +Other: + +* Fixed log processing for submission lines that have a sasl_sender or other extra information. + Version 55 (October 18, 2021) ----------------------------- From a312acc3bc44ce163ceb5d15ffd38ea5ee16f1fb Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 8 Jan 2022 08:16:02 -0500 Subject: [PATCH 3/8] Update to Nextcloud 20.0.8 and update apps --- CHANGELOG.md | 9 +++++---- setup/nextcloud.sh | 47 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5611b42a..99eff739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,14 +4,15 @@ CHANGELOG In Development -------------- +Software updates: + +* Roundcube's persistent_login plugin update to better support Roundcube 1.5. +* Nextcloud updated to 20.0.14 (from 20.0.8), contacts to 4.0.7 (from 3.5.1), and calendar to 3.0.4 (from 2.2.0). + Setup: * Fixed failed setup if a previous attempt failed while updating Nextcloud. -Mail: - -* Roundcube's persistent_login plugin update to better support Roundcube 1.5 - Control panel: * Fixed a crash if a custom DNS entry is not under a zone managed by the box. diff --git a/setup/nextcloud.sh b/setup/nextcloud.sh index b43816e4..d8ce7635 100755 --- a/setup/nextcloud.sh +++ b/setup/nextcloud.sh @@ -9,6 +9,39 @@ source /etc/mailinabox.conf # load global vars echo "Installing Nextcloud (contacts/calendar)..." +# Nextcloud core and app (plugin) versions to install. +# With each version we store a hash to ensure we install what we expect. + +# Nextcloud core +# -------------- +# * See https://nextcloud.com/changelog for the latest version. +# * Check https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html +# for whether it supports the version of PHP available on this machine. +# * Since Nextcloud only supports upgrades from consecutive major versions, +# we automatically install intermediate versions as needed. +# * The hash is the SHA1 hash of the ZIP package, which you can find by just running this script and +# copying it from the error message when it doesn't match what is below. +nextcloud_ver=20.0.14 +nextcloud_hash=92cac708915f51ee2afc1787fd845476fd090c81 + +# Nextcloud apps +# -------------- +# * Find the most recent tag that is compatible with the Nextcloud version above by +# consulting the ... node at: +# https://github.com/nextcloud-releases/contacts/blob/maaster/appinfo/info.xml +# https://github.com/nextcloud-releases/calendar/blob/master/appinfo/info.xml +# https://github.com/nextcloud/user_external/blob/master/appinfo/info.xml +# * The hash is the SHA1 hash of the ZIP package, which you can find by just running this script and +# copying it from the error message when it doesn't match what is below. +contacts_ver=4.0.7 +contacts_hash=8ab31d205408e4f12067d8a4daa3595d46b513e3 +calendar_ver=3.0.4 +calendar_hash=6fb1e998d307c53245faf1c37a96eb982bbee8ba +user_external_ver=1.0.0 +user_external_hash=3bf2609061d7214e7f0f69dd8883e55c4ec8f50a + +# Clear prior packages and install dependencies from apt. + apt-get purge -qq -y owncloud* # we used to use the package manager apt_install php php-fpm \ @@ -46,11 +79,11 @@ InstallNextcloud() { # their github repositories. mkdir -p /usr/local/lib/owncloud/apps - wget_verify https://github.com/nextcloud/contacts/releases/download/v$version_contacts/contacts.tar.gz $hash_contacts /tmp/contacts.tgz + wget_verify https://github.com/nextcloud-releases/contacts/releases/download/v$version_contacts/contacts-v$version_contacts.tar.gz $hash_contacts /tmp/contacts.tgz tar xf /tmp/contacts.tgz -C /usr/local/lib/owncloud/apps/ rm /tmp/contacts.tgz - wget_verify https://github.com/nextcloud/calendar/releases/download/v$version_calendar/calendar.tar.gz $hash_calendar /tmp/calendar.tgz + wget_verify https://github.com/nextcloud-releases/calendar/releases/download/v$version_calendar/calendar-v$version_calendar.tar.gz $hash_calendar /tmp/calendar.tgz tar xf /tmp/calendar.tgz -C /usr/local/lib/owncloud/apps/ rm /tmp/calendar.tgz @@ -96,16 +129,6 @@ InstallNextcloud() { fi } -# Nextcloud Version to install. Checks are done down below to step through intermediate versions. -nextcloud_ver=20.0.8 -nextcloud_hash=372b0b4bb07c7984c04917aff86b280e68fbe761 -contacts_ver=3.5.1 -contacts_hash=d2ffbccd3ed89fa41da20a1dff149504c3b33b93 -calendar_ver=2.2.0 -calendar_hash=673ad72ca28adb8d0f209015ff2dca52ffad99af -user_external_ver=1.0.0 -user_external_hash=3bf2609061d7214e7f0f69dd8883e55c4ec8f50a - # Current Nextcloud Version, #1623 # Checking /usr/local/lib/owncloud/version.php shows version of the Nextcloud application, not the DB # $STORAGE_ROOT/owncloud is kept together even during a backup. It is better to rely on config.php than From 34b7a02f4f4e4f1b76fa94021851af8e72d2e24b Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 8 Jan 2022 08:21:54 -0500 Subject: [PATCH 4/8] Update Roundcube to 1.5.2 --- CHANGELOG.md | 2 +- setup/webmail.sh | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 99eff739..d450cf97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ In Development Software updates: -* Roundcube's persistent_login plugin update to better support Roundcube 1.5. +* Roundcube updated to 1.5.2 (from 1.5.0), and the persistent_login and CardDAV (to 4.3.0 from 3.0.3) plugins are updated. * Nextcloud updated to 20.0.14 (from 20.0.8), contacts to 4.0.7 (from 3.5.1), and calendar to 3.0.4 (from 2.2.0). Setup: diff --git a/setup/webmail.sh b/setup/webmail.sh index 957fd2e3..4855d0dc 100755 --- a/setup/webmail.sh +++ b/setup/webmail.sh @@ -28,13 +28,19 @@ apt_install \ # Install Roundcube from source if it is not already present or if it is out of date. # Combine the Roundcube version number with the commit hash of plugins to track # whether we have the latest version of everything. - -VERSION=1.5.0 -HASH=2a9d11d9c10c8e8756120606c47eef702f00fe6d +# For the latest versions, see: +# https://github.com/roundcube/roundcubemail/releases +# https://github.com/mfreiholz/persistent_login/commits/master +# https://github.com/stremlau/html5_notifier/commits/master +# https://github.com/mstilkerich/rcmcarddav/releases +# The easiest way to get the package hashes is to run this script and get the hash from +# the error message. +VERSION=1.5.2 +HASH=208ce4ca0be423cc0f7070ff59bd03588b4439bf PERSISTENT_LOGIN_VERSION=59ca1b0d3a02cff5fa621c1ad581d15f9d642fe8 HTML5_NOTIFIER_VERSION=68d9ca194212e15b3c7225eb6085dbcf02fd13d7 # version 0.6.4+ -CARDDAV_VERSION=3.0.3 -CARDDAV_HASH=d1e3b0d851ffa2c6bd42bf0c04f70d0e1d0d78f8 +CARDDAV_VERSION=4.3.0 +CARDDAV_HASH=4ad7df8843951062878b1375f77c614f68bc5c61 UPDATE_KEY=$VERSION:$PERSISTENT_LOGIN_VERSION:$HTML5_NOTIFIER_VERSION:$CARDDAV_VERSION @@ -77,13 +83,13 @@ if [ $needs_update == 1 ]; then # download and verify the full release of the carddav plugin wget_verify \ - https://github.com/blind-coder/rcmcarddav/releases/download/v${CARDDAV_VERSION}/carddav-${CARDDAV_VERSION}.zip \ + https://github.com/blind-coder/rcmcarddav/releases/download/v${CARDDAV_VERSION}/carddav-v${CARDDAV_VERSION}.tar.gz \ $CARDDAV_HASH \ - /tmp/carddav.zip + /tmp/carddav.tar.gz # unzip and cleanup - unzip -q /tmp/carddav.zip -d ${RCM_PLUGIN_DIR} - rm -f /tmp/carddav.zip + tar -C ${RCM_PLUGIN_DIR} -zxf /tmp/carddav.tar.gz + rm -f /tmp/carddav.tar.gz # record the version we've installed echo $UPDATE_KEY > ${RCM_DIR}/version From d1d63188628b58273f2726a51fa8befceb4327fb Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 8 Jan 2022 09:11:48 -0500 Subject: [PATCH 5/8] Set systemd journald log retention to 10 days (from no limit) to reduce disk usage --- CHANGELOG.md | 1 + setup/system.sh | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d450cf97..81dedc83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ Control panel: Other: +* Set systemd journald log retention to 10 days (from no limit) to reduce disk usage. * Fixed log processing for submission lines that have a sasl_sender or other extra information. Version 55 (October 18, 2021) diff --git a/setup/system.sh b/setup/system.sh index ed399ba0..036fe3f9 100755 --- a/setup/system.sh +++ b/setup/system.sh @@ -75,6 +75,13 @@ then fi fi +# ### Set log retention policy. + +# Set the systemd journal log retention from infinite to 10 days, +# since over time the logs take up a large amount of space. +# (See https://discourse.mailinabox.email/t/journalctl-reclaim-space-on-small-mailinabox/6728/11.) +tools/editconf.py /etc/systemd/journald.conf MaxRetentionSec=10day + # ### Add PPAs. # We install some non-standard Ubuntu packages maintained by other From cb564a130a8bf6f59d147f8434d246c0bc9c03a9 Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Sat, 8 Jan 2022 09:38:41 -0500 Subject: [PATCH 6/8] Fix DNS secondary nameserver refesh failure retry period Fixes #1979 --- CHANGELOG.md | 1 + management/dns_update.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81dedc83..1eefb2ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Other: * Set systemd journald log retention to 10 days (from no limit) to reduce disk usage. * Fixed log processing for submission lines that have a sasl_sender or other extra information. +* Fix DNS secondary nameserver refesh failure retry period. Version 55 (October 18, 2021) ----------------------------- diff --git a/management/dns_update.py b/management/dns_update.py index b79e266a..fde9b146 100755 --- a/management/dns_update.py +++ b/management/dns_update.py @@ -484,7 +484,7 @@ def write_nsd_zone(domain, zonefile, records, env, force): # @ the PRIMARY_HOSTNAME. Hopefully that's legit. # # For the refresh through TTL fields, a good reference is: - # http://www.peerwisdom.org/2013/05/15/dns-understanding-the-soa-record/ + # https://www.ripe.net/publications/docs/ripe-203 # # A hash of the available DNSSEC keys are added in a comment so that when # the keys change we force a re-generation of the zone which triggers @@ -497,7 +497,7 @@ $TTL 86400 ; default time to live @ IN SOA ns1.{primary_domain}. hostmaster.{primary_domain}. ( __SERIAL__ ; serial number 7200 ; Refresh (secondary nameserver update interval) - 86400 ; Retry (when refresh fails, how often to try again) + 3600 ; Retry (when refresh fails, how often to try again, should be lower than the refresh) 1209600 ; Expire (when refresh fails, how long secondary nameserver will keep records around anyway) 86400 ; Negative TTL (how long negative responses are cached) ) From f11cb04a72a5215810e92f64140a556101f2086f Mon Sep 17 00:00:00 2001 From: Darek Kowalski Date: Sat, 8 Jan 2022 18:29:23 -0500 Subject: [PATCH 7/8] Update Vagrant private IP address, fix issue #2062 (#2064) --- CONTRIBUTING.md | 4 ++-- Vagrantfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 00e15ec7..953c9016 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,9 +20,9 @@ _If you're seeing an error message about your *IP address being listed in the Sp ### Modifying your `hosts` file -After a while, Mail-in-a-Box will be available at `192.168.50.4` (unless you changed that in your `Vagrantfile`). To be able to use the web-based bits, we recommend to add a hostname to your `hosts` file: +After a while, Mail-in-a-Box will be available at `192.168.56.4` (unless you changed that in your `Vagrantfile`). To be able to use the web-based bits, we recommend to add a hostname to your `hosts` file: - $ echo "192.168.50.4 mailinabox.lan" | sudo tee -a /etc/hosts + $ echo "192.168.56.4 mailinabox.lan" | sudo tee -a /etc/hosts You should now be able to navigate to https://mailinabox.lan/admin using your browser. There should be an initial admin user with the name `me@mailinabox.lan` and the password `12345678`. diff --git a/Vagrantfile b/Vagrantfile index 467fb95e..04788292 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -9,7 +9,7 @@ Vagrant.configure("2") do |config| # the machine's box will let anyone log into it. So instead we'll put the # machine on a private network. config.vm.hostname = "mailinabox.lan" - config.vm.network "private_network", ip: "192.168.50.4" + config.vm.network "private_network", ip: "192.168.56.4" config.vm.provision :shell, :inline => <<-SH # Set environment variables so that the setup script does From 3a7de051ee1e87d08589a946e3d05bbf6f6806fc Mon Sep 17 00:00:00 2001 From: Joshua Tauberer Date: Wed, 19 Jan 2022 16:59:34 -0500 Subject: [PATCH 8/8] Version 56 (January 19, 2022) --- CHANGELOG.md | 4 ++-- README.md | 2 +- setup/bootstrap.sh | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1eefb2ca..d796970e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,8 @@ CHANGELOG ========= -In Development --------------- +Version 56 (January 19, 2022) +----------------------------- Software updates: diff --git a/README.md b/README.md index 40a0e0d7..d2271d17 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ Clone this repository and checkout the tag corresponding to the most recent rele $ git clone https://github.com/mail-in-a-box/mailinabox $ cd mailinabox - $ git checkout v55 + $ git checkout v56 Begin the installation. diff --git a/setup/bootstrap.sh b/setup/bootstrap.sh index 7168e160..b90b1ac6 100644 --- a/setup/bootstrap.sh +++ b/setup/bootstrap.sh @@ -20,7 +20,7 @@ if [ -z "$TAG" ]; then # want to display in status checks. if [ "$(lsb_release -d | sed 's/.*:\s*//' | sed 's/18\.04\.[0-9]/18.04/' )" == "Ubuntu 18.04 LTS" ]; then # This machine is running Ubuntu 18.04. - TAG=v55 + TAG=v56 elif [ "$(lsb_release -d | sed 's/.*:\s*//' | sed 's/14\.04\.[0-9]/14.04/' )" == "Ubuntu 14.04 LTS" ]; then # This machine is running Ubuntu 14.04.