https://github.com/jrd/mailserver-admin
mail server admistration
https://github.com/jrd/mailserver-admin
Last synced: 5 months ago
JSON representation
mail server admistration
- Host: GitHub
- URL: https://github.com/jrd/mailserver-admin
- Owner: jrd
- License: mit
- Created: 2021-03-18T16:41:01.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2022-03-24T00:25:03.000Z (about 4 years ago)
- Last Synced: 2025-10-25T21:59:09.261Z (8 months ago)
- Language: Python
- Size: 206 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
mailserver-admin
================
This application manages *domains*, *users* and *aliases* of a mail server.
This has been tested with **dovecot**, using either mysql or postgresql database.
The main goal was to enhance/replace [Jeffrey Boehm’s PHP mailserver-admin application](https://github.com/jeboehm/mailserver-admin) because I didn’t want to have a mail server administration application in PHP and I wanted to have administration account per domain.
Environment variables
---------------------
Required:
- `DJANGO_SECRET_KEY`: at least 40 characters. Should be specified for production.
- `DJANGO_DB_TYPE`: `postgres` or `mysql`, default to `mysql`.
- `DJANGO_DB_HOST`: database hostname, default to `db` (for use in docker-compose).
- `DJANGO_DB_PORT`: database port, default to empty (default port).
- `DJANGO_DB_NAME`: database name, default to `mailserver`.
- `DJANGO_DB_USER`: database user, default to `mailserver`.
- `DJANGO_DB_PASSWORD`: database password, default to `changeme`.
Optional:
- `DJANGO_DEBUG`: default `False`. Set to `True` to enable debug toolbar, more logs and static files served.
- `DJANGO_LOG_LEVEL`: default to `WARNING` (`INFO` if `DJANGO_DEBUG`).
- `DJANGO_RUNSERVER_LOG_LEVEL`: default to `INFO` (`DEBUG` if `DJANGO_DEBUG`). Used only when run with `runserver` or `runserver_plus`.
- `DJANGO_TZ`: timezone, defaut to `UTC`.
- `DJANGO_DKIM_PATH`: directory path to store dkim private key and selectors. To be used by `rspamd-dkim`. Default to `/etc/dkim`.
- `DJANGO_WEBMAIL_URL`: webmail url to show in the footer, default to no link.
- `DJANGO_VENDOR_NAME`: any vendor name you want to appear on the footer, default to *Sources*.
- `DJANGO_VENDOR_URL`: any url you want to be linked to your vendor name, default to this repository url. Set to empty to disable the link.
- `DJANGO_HIDE_VERSION`: default `False` if `DJANGO_DEBUG` else `True`. Set to `True` to hide the `mailserver-admin` version.
Install from Docker Hub
-----------------------
Using `docker` directly:
```sh
docker run --name msa \
-p 80:80 \
-e DJANGO_SECRET_KEY=12345678901234567890abcdefghijklmnopqrstuvwxyz \
-e DJANGO_DB_TYPE=mysql \
-e DJANGO_DB_PASSWORD=pwd \
--link yourmariadb:db \
jrdasm/mailserver-admin:
docker exec -ti msa pipenv run ./manage.py createsuperuser
```
Of course this is simple using `docker-compose`:
```yaml
...
services:
db:
image: mariadb
environment:
- "MYSQL_RANDOM_ROOT_PASSWORD=yes"
- "MYSQL_DATABASE=mailserver"
- "MYSQL_USER=mailserver"
- "MYSQL_PASSWORD=pwd"
...
msa:
image: jrdasm/mailserver-admin:
environment:
- "DJANGO_SECRET_KEY=12345678901234567890abcdefghijklmnopqrstuvwxyz"
- "DJANGO_DB_TYPE=mysql"
- "DJANGO_DB_NAME=mailserver"
- "DJANGO_DB_USER=mailserver"
- "DJANGO_DB_PASSWORD=pwd"
ports:
- "80:80"
...
```
```sh
docker-compose exec msa pipenv run ./manage.py createsuperuser
```
Install from PyPi
-----------------
### VirtualEnv and Dependencies
Minium python version is **3.9**.
Use:
```sh
pipenv install mailserver-admin
```
to install it without any database backend.
If you want to install the `mysql` or `postgresql` database backend alongside, use for instance:
```sh
pipenv install mailserver-admin[mysql]
```
### Configuration
Define the required environment variables then:
```sh
export DJANGO_SETTINGS_MODULE=mailserveradmin.config.settings
pipenv run django migrate
pipenv run django createsuperuser
```
You can use `pipenv run django migrate --fake-initial` if you already have a mysql or postgresql database with existing schema/data.
You can now server the application using any **WSGI** server pointing to `$(VISUAL='readlink -f' pipenv open mailserveradmin|tail -n1)/config/wsgi.py`.
Don’t forget to also serve static ressources located at `$(VISUAL='readlink -f' pipenv open mailserveradmin|tail -n1)/to_serve` folder.
You can of course make symlinks to those locations to simplify configuration.
Install from sources
--------------------
### VirtualEnv and Dependencies
Use:
```sh
pipenv sync -d
```
to install dependencies. Default python version is **3.9**.
### Installation
You should also install a database driver, either `mysqlclient` or `psycopg2-binary`:
```sh
pipenv run pip install mysqlclient
```
### Configuration
Define the required environment variables then:
```sh
pipenv run ./manage.py migrate
pipenv run ./manage.py createsuperuser
pipenv run ./manage.py collectstatic
```
You can now server the application using any **WSGI** server pointing to the `config/wsgi.py` file.
Don’t forget to also serve the `static/` folder.
Alternatively, you can test the application with `pipenv run ./manage.py runserver_plus` but this should only be used for testing/development.