Skip to content

WebUI GUI VeximPy (Python)

runout-at edited this page Jun 20, 2026 · 1 revision

VeximPy

VeximPy is a management Web-UI for virtual users for mailservers. It integrates easily with Exim and Dovecot but should be usable with other mailservers too. Based on Vexim2.

VeximPy source code

Requirements

Install & Upgrade

For details visit VeximPy source code

Install Python3 environment

Create a user on your system.

Call bash pysetup.sh

This calls apt to install needed system packages and modified templates for nginx and uwsgi under doc

If a domain/server name is provided as first parameter it will be used for the nginx template.

install a new vexim DB

Create a DB and a DB user.

Then simply call:

bash dbreinit.sh <targetDBname>

This will create tables in the DB . If <targetDBname> is ommited, 'veximdbtest' will be used. This script will copy app/models/models_orig.py with the <targetDBname> as DB to app/models/models.py

upgrade an existing vexim2 DB

Migration will be done to a new DB. (in-place-migration is not supported)

  • Create a DB user for the new DB.
  • Dump the original DB to a file
  • Then call (with 3 parameters): bash dbmigration-mysql.sh <dumpfile.sql> <originDBname> <targetDBname>

NGINX, UWSGI

Sample files can be found under the doc directory.

Make sure you have certificates for the domain(s)

Review, edit and copy these files to /etc/nginx/sites-available and /etc/uwsgi/apps-available. Set appropriate symlinks in the *-enabled directories and restart nginx/uwsgi.

Exim

Changes of MySQL statements in 2 files:

  • /etc/exim4/conf.d/auth/30_vexim_authenticators
  • /etc/exim4/conf.d/main/00_vexim_listmacrosdefs

Already implemented

  • Full login support for Siteadmin, Postmaster and Users with a role System.

  • Intelligent login: try first given login, then add domain from actual URI and try to strip subdomain parts (one by one)

  • Config of password characters per domain

  • Config of defaults and settings in app/config/settings.py

  • List-Views for Local Domains

    • Domain name
    • IP where an Relay points to
    • Number of Local Accounts, Account-List-Button, Account-Add-Button
    • Number of Alias Accounts, Account-List-Button, Account-Add-Button
    • Number of Postmasters
    • Number of Aliases pointing to this Domain
    • Domain-Enabled-Button to indicate and change state
    • Domain-Edit-Button
    • Domain-Delete-Button
  • List-Views for Alias Domains

    • Domain name
    • Domain name where an Alias points to
    • Domain-Enabled-Button to indicate and change state
    • Domain-Edit-Button
    • Domain-Delete-Button
  • List-Views for Relay Domains

    • Domain name
    • Domain-Enabled-Button to indicate and change state
    • Domain-Edit-Button
    • Domain-Delete-Button
  • List-Views for Local Accounts

    • Realname
    • Username
    • Loclpart
    • Forwarded
    • Siteadmin
    • Postmaster
    • Account-Enabled-Button to indicate and change state
    • Account-Edit-Button
    • Account-Delete-Button
  • View for add/edit Alias Domain

  • Enable/Disable for Domains and Accounts.

  • Add/Edit/Delete Domain

  • Add/Edit/Delete Local Account

  • Branding. Logo in header from domain related ressource directory

  • Some automated tests for Login, Views, Validators

Wishlist

Needed changes

  • Add comment fields to users tables
  • Add role field to users table
  • Add comment fields to domains table
  • Add out_ip fields to domains table
  • Add host_smtp fields to domains table
  • Add host_imap fields to domains table
  • Add host_pop fields to domains table
  • Add relayto fields to domains table
  • Add quotasmax fields to domains table
  • Add pwd_charallowed fields to domains table
  • Add pwd_lengthmin fields to domains table
  • Add pwd_rules fields to domains table
  • Add domainalias_id field to domainalias
  • Add enabled field to domainalias table

Screenshots

Domainlist

Domainlist

Accountlist

Accountlist

Add/edit domain

Accountlist

Clone this wiki locally