vQadmin

vqadmin è un pannello di controllo su un'interfaccia web che consente di eseguire azioni che richiedono l'accesso a root — per esempio, aggiungere e cancellare domini.

Installazione

La patch combinata che stiamo per applicare andrà a risolvere alcuni problemi importanti. Per maggiori informazioni si vedano le indicazioni riportate all'interno della patch stessa. Alcune delle patch applicate sono reperibili individualmente in questa cartella

cd /usr/local/src
wget http://notes.sagredo.eu/sites/notes.sagredo.eu/files/qmail/tar/vqadmin-2.3.7.tar.gz
wget http://notes.sagredo.eu/sites/notes.sagredo.eu/files/qmail/patches/vqadmin/vqadmin-2.3.7_20150829.patch
tar xzf vqadmin-2.3.7.tar.gz
cd vqadmin-2.3.7
chown -R root.root .
patch -p1 < ../vqadmin-2.3.7_20150829.patch
./configure \
        --enable-qmaildir=/var/qmail \
        --enable-cgibindir=/usr/local/www/htdocs/qmail/cgi-bin
make
make install-strip

vQadmin verrà installato su /usr/local/www/htdocs/qmail/cgi-bin/vqadmin. Eventualmente adattare questo parametro alla directory htdocs di apache.

Configurazione di Apache

vQadmin richiede una sua directory, protetta dall'accesso, con abiltazione all'esecuzione di CGI, per operare. Dentro il virtual host devi mettere

<Directory "/usr/local/www/htdocs/qmail/cgi-bin/vqadmin">
    deny from all
    Options ExecCGI
    AllowOverride AuthConfig
    Order deny,allow
</Directory>

E siccome se si installa vqadmin in un posto diverso da /cgi-bin esso non funzionerà poichè è configurato così già nei sorgenti (hardcoded per capirci), devi definire /cgi-bin come uno ScriptAlias

ScriptAlias /cgi-bin/ "/usr/local/www/htdocs/qmail/cgi-bin/"

Questo è il mio virtual host, nel quale ho sia vQadmin che qmailadmin. Spiegherò l'alias /image tra un attimo.

<VirtualHost *:443>
        ServerName yourdomain.net
        DocumentRoot /usr/local/www/htdocs/qmail
        ScriptAlias /cgi-bin/ "/usr/local/www/htdocs/qmail/cgi-bin/"
        ErrorLog  "/usr/local/www/logs/qmailadmin_error_log"
        CustomLog "/usr/local/www/logs/qmailadmin_access_log" common
        <Directory "/usr/local/www/htdocs/qmail">
            AllowOverride None
            Order allow,deny
            Allow from all
        </Directory>
        <Directory "/usr/local/www/htdocs/qmail/cgi-bin">
            AllowOverride None
            Options ExecCGI
            Order allow,deny
            Allow from all 
        </Directory>

        # QMAILADMIN
        Alias /qmailadmin_img/ "/usr/local/www/htdocs/qmail/qmailadmin/qmailadmin_img/"
        <Directory "/usr/local/www/htdocs/qmail/qmailadmin/qmailadmin_img">
            Order allow,deny
            Allow from all
        </Directory>

        # VQADMIN
        <Directory "/usr/local/www/htdocs/qmail/cgi-bin/vqadmin">
            deny from all
            Options ExecCGI
            AllowOverride AuthConfig
            Order deny,allow
        </Directory>
        Alias /images/ "/usr/local/www/htdocs/qmail/cgi-bin/vqadmin/images/"
        <Directory /usr/local/www/htdocs/qmail/cgi-bin/vqadmin/images>
            Order allow,deny
            Allow from all
        </Directory>
</VirtualHost>

Nota che qmailadmin e vqadmin sono sullo stesso host

Impostazione delle autorizzazioni di accesso

Nella directory dove abbiamo installato vQadmin c'è un file .htaccess. Diamoci un'occhiata:

# cd /usr/local/www/htdocs/qmail/cgi-bin/vqadmin

# ls -la
total 148
drwxr-xr-x 4 vpopmail vchkpw   4096 2010-07-26 21:53 ./
drwxr-xr-x 3 root     apache   4096 2010-07-26 21:43 ../
-rw-r--r-- 1 nobody   apache    112 2009-08-04 17:32 .htaccess
drwxr-xr-x 2 vpopmail vchkpw   4096 2009-08-17 11:26 html/
-rw-r--r-- 1 vpopmail vchkpw    865 2009-08-17 15:03 vqadmin.acl
-rwsr-sr-x 1 root     root   122592 2010-07-26 21:53 vqadmin.cgi*

# more .htaccess
AuthType Basic
AuthUserFile /usr/local/etc/httpdpwd/vqadmin.passwd
AuthName "Authentication required"
require valid-user
satisfy any

/usr/local/etc/httpdpwd/vqadmin.passwd è il file dove dobbiamo salvare l'account che avrà accesso a vQadmin via httpd. Creiamo un utente:

# /usr/local/apache/bin/htpasswd -bc /usr/local/etc/httpdpwd/vqadmin.passwd admin password

# more /usr/local/etc/httpdpwd/vqadmin.passwd
admin:xxxxxxxxxxxxxx

Questo è tutto. Apriamo il browser e controlliamo https://yourdomain.net/cgi-bin/vqadmin/vqadmin.cgi

L'errore "Invalid language file"

La patch che abbiamo applicato dovrebbe aver già risolto questo problema. Ad ogni modo, in alcuni browser è possibile ottenere un messaggio di errore "Invalid language file", dovuto al fatto che l'impostazione della lingua del browser in questione non coincide con il nome del file di vqadmin. Per esempio, il nome del file della lingua italiana su vqadmin è it, ma l'impostazione del browser è it-it. Per ovviare all'inconveniente è sufficiente collocarsi nella cartella vqadmin/html e creare un link simbolico come segue:

cd /usr/local/www/htdocs/qmail/cgi-bin/vqadmin/html
ln -s it it-it