app | ||
bootstrap | ||
config | ||
database | ||
public | ||
resources | ||
routes | ||
tests | ||
.editorconfig | ||
.env.example | ||
.gitattributes | ||
.gitignore | ||
.styleci.yml | ||
artisan | ||
composer.json | ||
composer.lock | ||
package-lock.json | ||
package.json | ||
phpunit.xml | ||
README.md | ||
server.php | ||
webpack.mix.js |
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.
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