diff --git a/CHANGELOG.md b/CHANGELOG.md index 292ceb9e..5faec07d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,13 @@ In Development * Added support for DSA and ED25519 SSHFP records. * Added support for custom SSHFP records. +v0.21c (February 1, 2017) +------------------------- + +Installations and upgrades started failing about 10 days ago with the error "ImportError: No module named 'packaging'" after an upstream package (Python's setuptools) was updated by its maintainers. The updated package conflicted with Ubuntu 14.04's version of another package (Python's pip). This update upgrades both packages to remove the conflict. + +If you already encountered the error during installation or upgrade of Mail-in-a-Box, this update may not correct the problem on your existing system. See https://discourse.mailinabox.email/t/v0-21c-release-fixes-python-package-installation-issue/1881 for help if the problem persists after upgrading to this version of Mail-in-a-Box. + v0.21b (December 4, 2016) ------------------------- diff --git a/README.md b/README.md index 173a159f..81d8952d 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ by me: $ curl -s https://keybase.io/joshdata/key.asc | gpg --import gpg: key C10BDD81: public key "Joshua Tauberer " imported - $ git verify-tag v0.21b + $ git verify-tag v0.21c gpg: Signature made ..... using RSA key ID C10BDD81 gpg: Good signature from "Joshua Tauberer " gpg: WARNING: This key is not certified with a trusted signature! @@ -72,7 +72,7 @@ and on my [personal homepage](https://razor.occams.info/). (Of course, if this r Checkout the tag corresponding to the most recent release: - $ git checkout v0.21b + $ git checkout v0.21c Begin the installation. diff --git a/conf/fail2ban/jails.conf b/conf/fail2ban/jails.conf index 0146b64c..290a75bb 100644 --- a/conf/fail2ban/jails.conf +++ b/conf/fail2ban/jails.conf @@ -73,6 +73,7 @@ action = iptables-allports[name=recidive] enabled = true [ssh] +enabled = true maxretry = 7 bantime = 3600 diff --git a/management/backup.py b/management/backup.py index 92f8a740..d6189cfe 100755 --- a/management/backup.py +++ b/management/backup.py @@ -39,6 +39,8 @@ def backup_status(env): def reldate(date, ref, clip): if ref < date: return clip rd = dateutil.relativedelta.relativedelta(ref, date) + if rd.years > 1: return "%d years, %d months" % (rd.years, rd.months) + if rd.years == 1: return "%d year, %d months" % (rd.years, rd.months) if rd.months > 1: return "%d months, %d days" % (rd.months, rd.days) if rd.months == 1: return "%d month, %d days" % (rd.months, rd.days) if rd.days >= 7: return "%d days" % rd.days diff --git a/management/mailconfig.py b/management/mailconfig.py index d044c1ab..4cb57027 100755 --- a/management/mailconfig.py +++ b/management/mailconfig.py @@ -599,8 +599,8 @@ def validate_password(pw): raise ValueError("No password provided.") if re.search(r"[\s]", pw): raise ValueError("Passwords cannot contain spaces.") - if len(pw) < 4: - raise ValueError("Passwords must be at least four characters.") + if len(pw) < 8: + raise ValueError("Passwords must be at least eight characters.") if __name__ == "__main__": diff --git a/management/templates/users.html b/management/templates/users.html index 2cda327c..e0545835 100644 --- a/management/templates/users.html +++ b/management/templates/users.html @@ -31,7 +31,7 @@