## 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
```

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:
```
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
- 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.

### Recommended server setup
- 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_