pep8 (https://www.python.org/dev/peps/pep-0008/) is the commonly accepted and widely adopted code style convention for Python.
I used pycodestyle (https://pycodestyle.readthedocs.io/en/latest/) to check for pep8 compatibility.
Especially the mix of tabs and spaces in the Python files makes it hard to work with. I switched to spaces, because that's what
pep8 expects and the majority of Python programmers use.
* Passwords must be at least four characters. So we need to check them
here to ensure that first user creation works during initial setup
* Change quotes to match rest of code
Currently read_password does not verify password length. But further down the chain, passwords are checked to make sure they are longer than four characters.
If during initial setup, the user enters a password that is shorter than four characters, this will not be caught here, but when the script actually calls management/mailconfig.py to add the user, it will fail without a chance to correct the short password.
The setup script will then continue without an inital user being created and this will confuse users.
* Created a new Python/flask-based management daemon.
* Moved the mail user management core code from tools/mail.py to the new daemon.
* tools/mail.py is a wrapper around the daemon and can be run as a non-root user.
* Adding a new initscript for the management daemon.
* Moving dns_update.sh to the management daemon, called via curl'ing the daemon's API.
This also now runs the DNS update after mail users and aliases are added/removed,
which sets up new domains' DNS as needed.