Vboxadm
VBoxAdm is a web based management GUI for Mailservers running e.g. Postfix and Dovecot. http://www.vboxadm.net
DMARC-Report/cleanup
vboxadm can read dmarc-report-mails automatically. Reports are under "Admin-Tools" -> DMARC Reports
for dmarc you need an dns entry (with rua), see here
cleanup will delete mailboxes from disk if they are deleted from database
#/etc/cron.d/vboxadm-cgi
#
# Regular cron jobs for the vboxadm-cgi package
#
0 4 * * * root [ -x /usr/lib/vboxadm/bin/cleanup ] && /usr/lib/vboxadm/bin/cleanup
0 4 * * * vboxadm [ -x /usr/lib/vboxadm/bin/dmarc ] && /usr/lib/vboxadm/bin/dmarc
#/etc/vboxadm/vboxadm.conf
[dmarc]
#username
username = dmarc-report@domain.com
password = XXX
#autoclean deleted mailboxes and/or mails
[cleanup]
purge_mailboxes = 1
#purge_mails
loglevel=99
nsloglevel=99
dry=1
Patches/Info/Changes
Enable Basic Auth for Web-GUI
don't know anymore what or where exactly you need to modify...
#/usr/share/perl5/VBoxAdm/Controller/Frontend.pm
...
my $Messages = VWebAdm::Model::MessageQueue::->new(
{
'lh' => $self->{'lh'},
'lh_en' => $self->{'lh_en'},
'session' => $self->session,
'logger' => $Logger,
}
);
$self->{'Messages'} = $Messages;
#add here this code:
#autologin if HTTP_Auth is given
if ($ENV{'HTTP_AUTHORIZATION'} && $self->query->param('rm') && $self->query->param('rm') eq 'welcome'){
use MIME::Base64;
my $AUTHORIZATION =$ENV{'HTTP_AUTHORIZATION'};
$AUTHORIZATION =~ s/Basic //;
my ($username, $password) = split(/:/, decode_base64($AUTHORIZATION));
# Get CGI Query object
my $q = $self->query();
$q->param('authen_username',$username);
$q->param('authen_password',$password);
my $rm = $q->param('rm');
#$self->log( "Autologin with: nr: $rm"."l: ".length($self->query->param('rm'))." x:".$self->authen->login_attempts()." auth:".$self->authen->is_authenticated.$q->param('
authen_username'), 'error', );
}
...
#
# CGI::Application Hooks
#
# cgiapp_init is run right before setup
sub cgiapp_init {
...
$self->config_requiressl(
'keep_in_ssl' => 1,
'ignore_check' => $ignore_ssl_check,
);
# autologin if HTTP_Auth is given
if (!$ENV{'HTTP_AUTHORIZATION'}){
use MIME::Base64;
my $AUTHORIZATION =$ENV{'HTTP_AUTHORIZATION'};
$AUTHORIZATION =~ s/Basic //;
my ($username, $password) = split(/:/, decode_base64($AUTHORIZATION));
# Get CGI Query object
my $q = $self->query();
$q->param('authen_username',$username);
$q->param('authen_password',$password);
$q->param('rm','authen_login');
$q->param('destination','/member/cgi-bin/vboxadm.pl?rm=welcome');
# $self->log( "Autologin with: nr: ".$self->authen->login_attempts()." auth:".$self->authen->is_authenticated.$q->param('authen_username'), 'error', );
}
...
Update vboxadm-current.sql to allow bigger quota for mailboxes
https://github.com/matzex/VBoxAdm/commit/c0e6477f9bce75f14e01ce31b83762da95665e27
Postfix wrong config parameter
in /etc/postfix/main.cf change address_verify_maps to address_verify_map
Ubuntu: package required
install package libcgi-application-plugin-authentication-perl
change maildir to /srv/vmail (not /var/vmail)
#/etc/dovecot/dovecot-sql.conf
user_query = /* dovecot-sql.conf user_query */ \
SELECT '/srv/vmail/%d/%n' AS home,...
password_query = /* dovecot-sql.conf password_query */ \
SELECT '/srv/vmail/%d/%n' AS userdb_home,...
add systemuser vmail with uid=150 and gid=150
adduser --uid 150 --gid=150 --system --home /srv/vmail --no-create-home --group --disabled-password vmail (untested!!)
or you will have to change uids/gids in /etc/dovecot/dovecot-sql.conf and /etc/dovecot/conf.d/10-mail.conf
dovecot: Error userdb lookup
Sep 23 21:06:37 server dovecot: lda: Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=112(vmail) egid=119(vmail) missing +r perm: /var/run/dovecot/auth-userdb, UNIX perms appear ok (ACL/MAC wrong?))
Solution:
#/etc/postfix/main.cf
#see http://wiki2.dovecot.org/LDA#multipleuids
virtual_transport = lmtp:unix:private/dovecot-lmtp
Run vboxadm in a sub-dir
# url of script is /member/cgi-bin/vboxadm.pl
# css, images... are in /member/vboxadm
ScriptAlias /member/cgi-bin/ /var/lib/vboxadm/cgi-bin/
Alias /member/vboxadm/icons/fffsilk/ /usr/share/icons/famfamfam/silk/
Alias /member/vboxadm /var/lib/vwebadm/htdocs/
<Directory "/var/lib/vboxadm/cgi-bin/">
AllowOverride AuthConfig
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/share/icons/famfamfam/silk/">
Order allow,deny
Allow from all
</Directory>
<Directory "/var/lib/vwebadm/htdocs">
Order allow,deny
Allow from all
</Directory>
and the config
#/etc/vboxadm/vboxadm.conf
# config for webfrontend
[cgi]
base_url=/member/cgi-bin/vboxadm.pl
media_prefix=/member/vboxadm
vboxadm-sa
exclude 'access denied' from /etc/cron.d/vboxadm-sa
# Remove any spamassasin temp files which are older than one hour
# exclude error message access denied
0 * * * * vboxadm find /tmp -name ".spamassassin.*" ! -name lost+found -mmin +60 -exec rm {} \; 2>/dev/null
vboxadm-sa logging
in /usr/share/perl5/VBoxAdm/SMTP/Proxy/SA.pm
change all level = 'notice' to level='info' - didn't help. Still searching...
Ignore lower/upper characters in email addresses
The current configuration treated upper and lower characters in email addresses which is really bad. You don't want different maildirs for e.g. INFO@domain.de, inFo@domain.de or info@DOMAIN.de ;-)
Solution found on http://wiki2.dovecot.org/Variables. Use a 'L'.
#/etc/dovecot/dovecot-sql.conf
user_query = /* dovecot-sql.conf user_query */ \
SELECT '/srv/vmail/%Ld/%Ln' AS home,...
password_query = /* dovecot-sql.conf password_query */ \
SELECT '/srv/vmail/%Ld/%Ln' AS userdb_home,...
Links
- http://www.vboxadm.net/doc/ispmail-vboxadm-squeeze/
- http://wiki.nefarius.at/linux/the_ueber_mail-server
- ISPMail