- Autore: Inter7
- Versione usata: 1.2.16
- Scaricare i sorgenti da http://sourceforge.net/projects/qmailadmin/files/
- Combined patch v. 2023.08.27
- Changelog
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.
Patch combinata
- 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.
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.9.11 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
Notare che nei comandi qui sotto è necessario fornire un autoreconf
, dal momento che la patch va a modificare il configure.in
originario.
cd /usr/local/src wget https://notes.sagredo.eu/files/qmail/tar/qmailadmin-1.2.16.tar.gz wget https://notes.sagredo.eu/files/qmail/patches/qmailadmin/roberto-qmailadmin/roberto-qmailadmin-1.2.16.patch touch /var/log/qma-auth.log chgrp apache /var/log/qma-auth.log chmod g+w /var/log/qma-auth.log tar xzf qmailadmin-1.2.16.tar.gz cd qmailadmin-1.2.16 patch -p1 < ../roberto-qmailadmin-1.2.16.patch chown -R root.root . autoreconf -f -i 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
Prima di compilare è possibile salvare le immagini del logo qmail
nella cartella "images":
wget -O images/favicon-16x16.png https://notes.sagredo.eu/files/qmail/patches/qmailadmin/skin/img/favicon-16x16.png wget -O images/favicon-32x32.png https://notes.sagredo.eu/files/qmail/patches/qmailadmin/skin/img/favicon-32x32.png wget -O images/logo.png https://notes.sagredo.eu/files/qmail/patches/qmailadmin/skin/img/logo.png wget -O images/logo_big.png https://notes.sagredo.eu/files/qmail/patches/qmailadmin/skin/img/logo_big.png
Ora compilare e installare al solito modo:
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
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
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
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
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
Forse ho risolto ricompilando come dicevi tu... ti terrņ aggiornato.
Grazie :)
Rispondi | Permalink