Go to file
2024-03-28 21:09:45 +01:00
app Updated to latest laravel and php 8.2 2024-03-28 21:09:45 +01:00
bootstrap Initial program commit 2020-05-23 15:20:01 +02:00
config Initial program commit 2020-05-23 15:20:01 +02:00
database Initial program commit 2020-05-23 15:20:01 +02:00
public Fixed tweaks to help with sender-login-maps on system-wide accounts 2020-06-12 22:32:12 +02:00
resources Fixed tweaks to help with sender-login-maps on system-wide accounts 2020-06-12 22:32:12 +02:00
routes Initial program commit 2020-05-23 15:20:01 +02:00
tests Initial program commit 2020-05-23 15:20:01 +02:00
.editorconfig Initial program commit 2020-05-23 15:20:01 +02:00
.env.example Setup instructions 2020-05-23 15:28:46 +02:00
.gitattributes Initial program commit 2020-05-23 15:20:01 +02:00
.gitignore Updated gitignore again 2020-05-23 15:21:23 +02:00
.styleci.yml Initial program commit 2020-05-23 15:20:01 +02:00
artisan Initial program commit 2020-05-23 15:20:01 +02:00
composer.json Updated to latest laravel and php 8.2 2024-03-28 21:09:45 +01:00
composer.lock Updated to latest laravel and php 8.2 2024-03-28 21:09:45 +01:00
package-lock.json Initial program commit 2020-05-23 15:20:01 +02:00
package.json Initial program commit 2020-05-23 15:20:01 +02:00
phpunit.xml Initial program commit 2020-05-23 15:20:01 +02:00
README.md Fixed tweaks to help with sender-login-maps on system-wide accounts 2020-06-12 22:32:12 +02:00
server.php Initial program commit 2020-05-23 15:20:01 +02:00
webpack.mix.js Initial program commit 2020-05-23 15:20:01 +02:00

About VMail Controller

VmailController is a web management tool for an email system set up like described by Thomas Leister on https://thomas-leister.de/en/mailserver-debian-stretch/

Adaptations

This menagement system also includes the option to make "System accounts" - accounts that are not linked to a specific domain. This can be useful if you don't want a direct correlation between email address and email account credentials, to add an thin extra layer of security in case your users are prone to reuse their email password on different websites. This does require dovecot to take over delivery to local accounts, causing linux system accounts to be detached from the local mail system. (If all you're doing is setting up a mailserver, this should not pose too many problems)

To achieve this, you'd need a few small adaptations to the configuration described by Thomas Leister:

/etc/dovecot/dovecot.conf

Add the following to the file:

auth_default_realm=localhost

Optional: Change the line mail_home to

mail_home = /srv/vmail/mailboxes/%n@%d

/etc/postfix/main.cf

Add the following lines to the file in the appropriate places:

smtpd_sender_login_maps = mysql:/etc/postfix/sql/sender-login-maps.cf
myorigin=localhost
local_transport = $virtual_transport
virtual_mailbox_limit = 0

Database setup

The setup requires a few minor tweaks to the database, which are already set up in the application's main database config. So, do not follow the database setup described by Thomas, but instead use php artisan migrate to create the database.

Features

This management interface includes the following features

  • Full multi-admin multi-domain capability. Each validated user can get domains assigned to manage by an admin.
  • Multiple system administrators are possible
  • Configure system-wide accounts (@localhost) to separate login name from email address
  • Set-up mail accounts per domain
  • Configure aliases per domain - with multiple recipients
  • Portal to have users change their own email password

Setup

To setup the system, create a mysql user and database for yorur vmail system Then copy .env.example to .env and edit the configuration values in there

Then run

  • php artisan migrate to create the database.
  • Nginx with php-fpm (7.3 or greater)
  • MariaDB or MySQL
  • Redis server for cache

Create admin account

To create an account, after setting up the system, go to the homepage and click 'register' This creates an unverified account.

To setup this account as admin, do some modifications in the role_users table, to link your user id to the admin role.

Note: Should update this to have an artisan command or database seed