qmailAdmin è un software libero che fornisce un'interfaccia web per gestire sistemi qmail con domini virtuali basati su vpopmail. Fornisce amministrazione per la creazione/cancellazione di utenti, alias, forward, mailing list e autoesponder.
Come si può vedere, per praticità ho spostato i rogenti di qmailadmin
nel mio spazio github
. Ciononostante, tutte le informazioni su qmailadmin
continueranno a essere pubblicate qui, e questa pagina rimane il posto ove chiedere eventulmente supporto.
Questa versione di qmailadmin
mette insieme la versione originale 1.2.16 di Inter7 con le seguenti patch (vecchia patch combinata del 28 agosto 2023):
- qmailadmin-skin, una patch che ho avuto il tempo di creare durante il lockdown, che dota il pannello di controllo di una nuova interfaccia grafica con tecnologia Mobile Responsive. Ho modificato tutti i file che stanno nella cartella html e molti file .c, dal momento che molto codice html stava proprio all'interno dei file sorgenti. Ho anche aggiunto un foglio di stile nella cartella images e un paio di immagini png con il logo
qmail
. Non dovrebbe essere complicato aggiornare o modificare il template da ora in avanti. - Una patch che chiama la libreria
cracklib
al fine di controllare la robustezza della password scelta, giusto per evitare la creazione di account insicuri del tipo "test 123456". - Un'altra patch (suggeritami da Tony, che ringrazio), di cui non conosco l'autore, che consente di loggare i tentativi falliti di autenticazione. In questo modo sarà possibile bannare gli IP sospetti per mezzo di
fail2ban
. E' richiest la creazione del log file/var/log/qma-auth.log
, che deve assegnare i privilegi di scrittura adapache
. - Una patch che restituisce la compatibilità con ezmlm-idx-7 (autore sconosciuto), per la quale ringrazio J.D. Trolinger che me l'ha segnalata.
- Un fix all'account catchall di Luca Franceschini.
- Una patch ad autorespond.c che corregge il modo erroneo con cui i file
.qmail
vengono creati. - Supporto a
qmail-autoresponder
(grazie a Nathanaël Semhoun)
Installazione di cracklib
- Home page https://github.com/cracklib/cracklib
- Scarica i sorgenti e il dizionario: https://github.com/cracklib/cracklib/releases
Cracklib
è una libreria di funzioni che fornisce il controllo del grado di complessità di una password per mezzo di una lista di parole note (dizionario da installare). cracklib
confronta la password scelta cone le parole del dizionario e se esa è simile a una di queste restituisce un responso negativo.
Prima di installare qmailadmin
dobbiamo installare cracklib
e poi applicare la nostra patch. La patch migliora quella resa disponibile tempo fa da Inter7, che però agiva solo nella pagina di notifica dell'utente. Io ho fatto in modo qmailadmin
facesse una chiamata a cracklib
anche alla creazione dell'utente e nella pagina di cambio password..
Installazione del la libreria
E' molto probabile che esista un pacchetto cracklib
fornito dalla propria distribuzione, magari con all'interno il dizionario già pronto, in tal caso si salti al prossimo paragrafo.
Una nota per gli utemti Debian
: il pacchetto cracklib
ha libpam-cracklib
come dipendenza. Ora,libpam-cracklib
andrebbe a sostituire libpam-modules
, che è una libreria di sistema che non andrebbe assolutamente toccata senza una buona ragione e solo sapendo cosa si sta facendo. Pertanto suggerisco di installare cracklib
dai sorgenti su /usr/local come spiegato sotto. Ho testato questa soluzione alcune volte e ho visto che non nuocea libpam
.
Dunque la procedura per installare cracklib
dai sorgenti è la solita:
CRACKLIB_VER=2.10.3 wget https://github.com/cracklib/cracklib/releases/download/v${CRACKLIB_VER}/cracklib-${CRACKLIB_VER}.tar.bz2 tar xjf cracklib-${CRACKLIB_VER}.tar.bz2 cd cracklib-${CRACKLIB_VER} ./configure --with-default-dict=/usr/share/cracklib/pw_dict make make install ldconfig
Installazione del dizionario
- man cracklib-format
# Creare la cartella che ospiterà il dizionario (la stessa usata sopra nel comando configure) mkdir /usr/share/cracklib cd /usr/share/cracklib # scaricare il dizionario (words list) wget wget https://github.com/cracklib/cracklib/releases/download/v${CRACKLIB_VER}/cracklib-words-${CRACKLIB_VER}.bz2 bunzip2 cracklib-words-${CRACKLIB_VER}.bz2 # formattare e compilare il dizionario cracklib-format cracklib-words-${CRACKLIB_VER} | cracklib-packer pw_dict
Controlliamo che il dizionario sia stato creato a partire dal file cracklibs-words
:
ls cracklib-words-${CRACKLIB_VER} pw_dict.hwm pw_dict.pwd pw_dict.pwi
Il database è costituito da quei tre file compilati pw_dict.*
. E' sempre possibile arricchire il database aggiungendo righe con parole nuove e poi utilizzando i comandi cracklib-format/
cracklib-packer
come mostrato sopra.Prendiamo nota della posizione del database perchè la dovremo passare al configure
di qmailadmin
.
Test di cracklib
Facciamo ora qualche test per vedere anche come funziona cracklib
:
# cracklib-check dfdfdfdf dfdfdfdf: it does not contain enough DIFFERENT characters roberto roberto: it is based on a dictionary word 123456 123456: it is too simplistic/systematic roberto928 roberto928: it is based on a dictionary word robe99 robe99: it is based on a dictionary word 99robe 99robe: it is based on a dictionary word robe@99 robe@99: it is based on a dictionary word Qwerty123 Qwerty123: it is based on a dictionary word Qwerty!123 Qwerty!123: it is based on a dictionary word Rob&02f Rob&02f: OK Rob&rto Rob&rto: OK ^C
Per
abilitare cracklib
compilare qmailadmin
come segue
--enable-cracklib=/usr/share/cracklib/pw_dict
Quando si installa la patch di cracklib
da sola è necessario fornire i comandi aclocal/automake/autoconf
per ricostruire il file configure
. La mia patch combinata ha già un file configure
ricostruito. Se si hanno problemi a compilare, perchè la propria versione di aclocal è datata, far precedere alla configurazione i comandi
aclocal automake --install-missing autoconf
Installazione
QMA_VERSION=1.2.23 touch /var/log/qma-auth.log chgrp apache /var/log/qma-auth.log chmod g+w /var/log/qma-auth.log cd /usr/local/src wget https://github.com/sagredo-dev/qmailadmin/archive/refs/tags/v${QMA_VERSION}.tar.gz tar xzf v${QMA_VERSION}.tar.gz cd qmailadmin-${QMA_VERSION} chown -R root:root . QMAILROOT=/var/www/qmail ./configure \ --enable-htmldir=${QMAILROOT} \ --enable-cgibindir=${QMAILROOT}/cgi-bin \ --enable-cgipath=/cgi-bin/qmailadmin \ --enable-imagedir=${QMAILROOT}/qmailadmin/files \ --enable-imageurl=/qmailadmin/files \ --enable-htmllibdir=${QMAILROOT}/qmailadmin \ --enable-qmaildir=/var/qmail \ --enable-domain-autofill \ --enable-vpopuser=vpopmail \ --enable-vpopgroup=vchkpw \ --enable-autoresponder-path=/usr/local/bin \ --enable-ezmlmdir=/usr/local/bin/ezmlm \ --enable-modify-quota \ --disable-ezmlm-mysql \ --disable-trivial-password \ --disable-catchall \ --enable-cracklib=/usr/share/cracklib/pw_dict make make install-strip
Abbiamo installato qmailadmin
in /var/www/qmail
Apache virtual host
Define QMAILROOT /var/www/qmail Define LOGDIR /var/log/apache2 <VirtualHost *:443> # Include /path/to/sslstuff.conf ServerName mydomain.tld DocumentRoot ${QMAILROOT} ScriptAlias /cgi-bin/ ${QMAILROOT}/cgi-bin/ ErrorLog ${LOGDIR}/qmailadmin_error.log CustomLog ${LOGDIR}/qmailadmin_access.log common <Directory ${QMAILROOT}> Require all granted AllowOverride None </Directory> <Directory ${QMAILROOT}/cgi-bin> AllowOverride None Options ExecCGI Require all granted </Directory> </VirtualHost>
Navigare ora su https://mydomain.tld/cgi-bin/qmailadmin
e loggarsi come postmaster.
Commenti
errore glibc qmailadmin
Donato 13 settembre 2012 01:59 CET
Ciao Roberto,
complimenti per la magnifica guida! :)
ti volevo segnalare un bel problema per quanto rigarda Qmailadmin
Nel tentativo di creare un forward, ricevo una pagina biancae l'operazione fallisce.
I log riportano questo:
ti è mai capitato?
Grazie,
Donato
Rispondi | Permalink
Ciao Donato, no, non mi e'
roberto puzzanghera Donato 14 settembre 2012 21:50 CET
Ciao Donato, no, non mi e' mai capitato, ma proverei a ricompilare (non e' che hai fatto un downgrade delle glibc?)
Rispondi | Permalink
Ciao Roberto,Purtroppo no,
Donato roberto puzzanghera 16 settembre 2012 00:04 CET
Ciao Roberto, Purtroppo no, non ho ho effettuato il downgrade. L'installazione é pulita. Il problema si verifica su slack 13.37 sia 32 che 64 bit... Cercando in giro Pare che la cosa potrebbe riguardare php o glibc ma nessuno sembra esserne venuto a capo. Il log che ho postato non ti dice nulla? Grazie, Donato.
Rispondi | Permalink
Il log mi dice poco, ma
roberto puzzanghera Donato 16 settembre 2012 21:00 CET
Il log mi dice poco, ma essendoci di mezzo glibc proverei comunque a ricompilare qmailadmin. php non c'entra nulla con qmailadmin
Rispondi | Permalink
Forse ho risolto ricompilando
Donato roberto puzzanghera 17 settembre 2012 14:36 CET
Forse ho risolto ricompilando come dicevi tu... ti terrò aggiornato.
Grazie :)
Rispondi | Permalink