- Pagina originale di Inter7
- version di
vpopmail
: 5.6.3 (contiene la mia patch combinata v. 2023.11.11) - Scarica
- Il mio spazio github sagredo-dev/vpopmail (inviare qui eventuali requests riguardanti le mie patch)
- Maggiori informazioni qui
- README.vdelivermail
Vpopmail fornisce un modo semplice di gestire indirizzi di posta su domini virtuali e account email diversi da quelli su /etc/passwd.
Aggiornamento dell'11 dicembre 2023
Thanks to TLK Games guys at https://github.com/brunonymous/vpopmail we have a new vpopmail-5.6.0 version. They did a huge job merging together the old vpopmail-5.4.33 version with many patches that can be found around the net, my combo included. More importantly, they polished and corrected the code and added several features that you can see in the changelog.
From now on, I'll no longer release a new patch but I'll pull a request there, where you can get the released package.
For any request concerning my patches, this page remains the place where to find more information and ask for support. If you want to contribute to the code of my patches, you can send it here in a comment or post a PR in my github space (we don't want to bother our french friends with issues concerning my patch, ok?).
Changelog
- Oct 19, 2024 (v. 5.6.3)
- bug fixed: passwords with length > 8 were denied if sha-512 was disabled - Oct 14, 2024 (v. 5.6.3)
- fixed a configure break where a trivial C test program exits on error with gcc-14.1 due to missing headers
- vusaged/domain.c: fixed -Wimplicit-function-declaration compilation warning
- vmysql.h: dropped the multicolumn PRIMARY KEY in valias table to allow multiple forwards for a given alias.
In case one already has the valias table defined, this is the sql query for the upgrade:
ALTER TABLE `vpopmail`.`valias` DROP PRIMARY KEY, ADD INDEX (`alias`, `domain`, `valias_type`) USING BTREE;
ALTER TABLE `vpopmail`.`valias` ADD `id` INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (`id`); - Jun 7, 2024
- the header files oflibev
are now installed in /usr/local/include/libev (was /usr/local/include) to avoid conflicts withlibevent
.vusaged
configure
command was adjusted accordingly. - Jan 11, 2024
- vmysql.c: allow the insertion of a second valias row with the same alias/domain when vpopmail is configured with --enable-defaultdelivery and --enable-valias
- bug fix in mysql.h: wrong definition of VALIAS_TABLE_LAYOUT as it was looking for DEFAULTDELIVERY definition instead of DEFAULT_DELIVERY. This bug was preventing the correct auto creation of the valias table in MtSQL
- configure.ac: solved all autoconf warnings - Dec 11, 2023
- patch merged with github/brunonymous
- vpopmail-5.6.0 released (read the update notes) - Nov 11, 2023
- defauldelivery patch: vmakedotqmail won't create users' .qmail if control/defaultdelivery already has vdelivermail. - Oct 23, 2023
- defaultdelivery patch: .qmail file won't be created if control/defaultdelivery already has vdelivermail.
- Sep 5, 2023
- changed configuration option --enable-logging=e (was p). Now failed attempts will be logged with no password shown. - Aug 27, 2023
- new combined patch. More info here
* The logic of the defaultdelivery patch/feature has been revised. if configured with--enable-defauldelivery
vpopmail
will save control/defauldelivery in the user's .qmail andvdelivermail
LDA in the domain's .qmail-default file. This will achieve multiple benefit: you haveqmail
forwards andsieve
together andvalias
available. Thevalias
table scheme was changed as well.
Aggiornare alla versione 5.6.x
Quando si passa dalla versione 5.4.33 alla versione 5.6.x, se si hanno gli account su SQL
, è necessario aumentare le dimensioni della colonna vpopmail.pw_passwd
del database, poichè il meccanismo di criptaggio delle password è ora basato su SHA512
, che è più lungo del vecchio MD5
; si può comunque scegliere di disabilitare le SHA512
pwd con --disable-sha512-passwords
al momento della configurazione. In addition, poichè le dimensioni minime delle password sono ora pari a 12 per default, anche se si può scegliere un altro valore (--enable-min-pwd-length=10
) o disabilitare il limite. La colonna vpopmail.pw_passwd
dovrebbe essere ora impostata a una dimensione di 128; ecco come fare:
ALTER TABLE `vpopmail` CHANGE `pw_passwd` `pw_passwd` CHAR(128) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
Dettagli della patch installata
Questo l'insieme delle mie patch che sono incluse in vpopmail
a partire dalla versione 5.6.0:
- la patch sql-aliasdomains, che fa in modo che vpopmail salvi gli aliasdomains su mysql. Questo consente al driver sql di dovecot di fare l'autenticazione non solo con i domini reali ma anche con gli alias, a condizione che si modifichi anche la query all'interno del driver, come verrà spiegato dopo. Ciò è ora importante, dato che dovecot ha eliminato il driver per vpopmail.
- la patch defaultdelivery, copia il delivery agent preferito, salvato in QMAILDIR/control/defauldelivery, nel file .qmail della mailbox, e il delivery agent di
vpopmail
nel file .qmail-default del dominio.
Per informazioni precise leggere qui. Dare anche una occhiata al file doc/README.defaultdelivery nel codice sorgente. - dovecot-sql-procedures patch. Se si vuole usare il driver sql di
dovecot
con la configurazione "una tabella per un dominio) (--disable-many-domains
) è necessario personalizzare in modo pesante le query sql. Con questo aggiustamentovpopmail
installerà in modo autonomo la procedura e le funzioni sql nel database quando si crea un nuovo dominio. La procedura può essere chiamata dadovecot
per fare l'autenticazione.
Il codice sql supporta gli aliasdomains e i mysql limits, e sarà caricato dal file~/vpopmail/etc/disable-many-domains_procedures.sql
che si può ovviamente personalizzare.
E' necessario configurarevpopmail
con--enable-mysql-bin=PATH
poichè dobbiamo installare la procedura chiamandomysql
con un comando shell. - vusaged configure patch
Almeno su Debian 11 sembra chevusaged
si rifiuti di terminare la configurazione (comando configure) a causa di un mancato link alle libreriemysql
(configure: error: No vauth_getpw in libvpopmail). Ovviamente ho spulciato lo script e il link sembra impostato correttamente, e ciò è al momento molto strano. Dopo un po' di prove, ho notato che facendo in modo che il configure superi il problema senza bloccarsi con un messaggio di errore, la compilazione susseguente vada a buon fine linkando corrrettamentelibmysqlclient
e terminando con successo la compilazione.
NB: è necessario dare unautoreconf -f -i
nella directoryvusaged
prima della configurazione, dal momento che il fileconfigure.ac
è stato modificato. - s/qmail cdb patch. Questa patch, che consente a
vpopmail
di localizzare correttamente il file assign.cdb diqmail
per gli utentis/qmail
, nell'attuale pacchetto perchè rimpiazzata da una analoga. Gli utenti dis/qmail
dovrebbero configurarevpopmail
con l'opzione--enable-qmail-cdb-name=assign.cdb
- recipient check patch. Da usare con s/qmail di Erwin Hoffmann al fine di validare il destinatario della mail. Questa patch non è importante nella presente installazione. Si veda il file doc/README.vrcptcheck per maggiori informazioni.
- vuserinfo-D_newline, una piccola patch che migliora la leggibilità quando si utilizza il comando
vuserinfo -D
, introducendo una nuova linea - la patch gcc-10-compat, con il la quale vpopmail è compatibile con
gcc-10
. - Una patch che risolve i seguenti problemi (Ali Erturk TURKER):
- vdelivermail.c controlla i permessi di spamassassin anzichè di maildrop.
- vopen_smtp_relay() restituisce il valore corretto, di modo che open_smtp_relay() possa rilevare e riportare gli errori di connessione al database (vmysql.c, voracle.pc, vpgsql.c)
- vdel_limits() esegue un core-dump se la connessione al database non è disponibile. (vmysql.c, voracle.pc)
Setup
Creare ora l'utente e il gruppo vpopmail
. E' importante tener presente che la cartella home scelta sarà quella dove vpopmail
verrà poi installato, quindi è necessario prendere ora la decisione se installarlo nella posizione classica oppure no. E' anche possibile decidere di assegnare a vpopmail
degli uid/gid
diversi da 89:89
, dato che qmail
sarà in grado di determinarli dinamicamente al momento della compilazione.
groupadd -g 89 vchkpw useradd -g vchkpw -u 89 -d /home/vpopmail vpopmail
Scaricare i sorgenti (sorgenti originali sono qui: http://sourceforge.net/projects/vpopmail/files/, ma potete scaricare la mia copia locale) e configurare. La patch che andremo ad applicare risolve i problemi di compilazione con gcc-10
.
Su Debian 11
e distribuzioni affini sarà necessario sostituire --enable-incdir=/usr/include/mysql
con --enable-incdir=/usr/include/mariadb
.
VPOPMAIL_VERSION=5.6.3 cd /usr/local/src wget https://github.com/sagredo-dev/vpopmail/archive/refs/tags/v${VPOPMAIL_VERSION}.tar.gz tar xzf v${VPOPMAIL_VERSION}.tar.gz cd vpopmail-${VPOPMAIL_VERSION} chown -R root:root . ./configure \ --enable-qmaildir=/var/qmail/ \ --enable-qmail-newu=/var/qmail/bin/qmail-newu \ --enable-qmail-inject=/var/qmail/bin/qmail-inject \ --enable-qmail-newmrh=/var/qmail/bin/qmail-newmrh \ --disable-roaming-users \ --enable-auth-module=mysql \ --enable-incdir=/usr/include/mysql \ --enable-libdir=/usr/lib64 \ --enable-logging=e \ --disable-clear-passwd \ --enable-auth-logging \ --enable-sql-logging \ --disable-passwd \ --enable-qmail-ext \ --enable-learn-passwords \ --enable-mysql-limits \ --enable-valias \ --enable-sql-aliasdomains \ --enable-defaultdelivery \ --disable-min-pwd-length
--disable-roaming-users i roaming users saranno disabilitati, dal momento che non dobbiamo qui usare l'autenticazione POP before SMTP. Invece applicheremo una patch per l'autenticazione lato smtp.
--enable-auth-module=mysql mette su il supporto mysql e salva gli account utente in un database mysql.
--enable-incdir=/usr/include/mysql è la directory include di MySQL (usare in caso si sia installato mysql dai binari o dai sorgenti in una locazione non standard. Montare mysql da qualche parte se è il server è installato in un'altra macchina..
--enable-libdir=/usr/lib64 La directory lib di MySQL. Naturalmente sarà /usr/lib
nei sistemi 32b
--disable-passwd Non includere il supporto per /etc/passwd. Personalmente non voglio gestire gli utenti reali e userò questa opzione, dato che questo è solo un web server.
--enable-clear-passwd Una copia delle password NON verrà salvata su DB anche in chiaro. Se si vogliono evitare i soliti problemi dell'amministratore quando gli utenti dimenticano la password e si vuole ripristinarla rapidamente, oppure per fare test, abilitare --enable-clear-passwd. Ho notato, pensando di disabilitare questa opzione per maggior sicurezza, che il programma per il cambio password non funziona più (testato con la versione 5.4.33, commenti graditi su questo).
--enable-logging=e Logga i tentativi falliti su syslog (le password sbagliate non verranno mostrate).
--enable-sql-logging Lascia i vlog in una tabella di MySQL (vengono mostrate le richieste di accesso fallite).
--enable-auth-logging Crea una tabella MySQL con il log dell'ultimo accesso (lastauth).
--disable-roaming-users Non supportare gli utenti roaming.
--enable-mysql-limits MySQL salva i limiti in alternativa ai file .qmailadmin-limits.
--enable-valias Salva gli alias su MySQL
.
--enable-sql-aliasdomains (default) salva gli alias domains su MySQL
al fine di consentire l'autenticazione IMAP anche per gli alias domain nel caso si usi il driver di autenticazione sql di dovecot
(è necessario modificare la query di consenguenza come sarà spiegato più avanti).
--enable-defaultdelivery abilità la possibilità di installare nel .qmail-default
di ogni nuovo dominio il delivery agent salvato preventivamente in /var/qmail/control/defaultdelivery
.
--disable-min-pwd-length
disabilita la lunghezza minima di 12 caratteri per la password dei nuovi utenti creati. Ho scelto di disabilitare questa opzione perchè la trovo poco pratica nel caso debba testare il sistema con password di prova e perchè abbiamo già un meccanismo di controllo della robustezza della password in qmailadmin
, dato che poi è lì che vanno a smanettare gli amministratori di dominio. Se si vuole usare questa opzione è sufficiente fare così --enable-min-pwd-length=10
.
Compilare e installare:
make make install-strip
vusaged
vusaged
cerca gli utenti sotto vpopmail e conteggia quanto spazio disco essi usano. Richiede libev.
Installazione di libev
E' necessario installare gli header file in /usr/local/include/libev per evitare conflitti con la libreria libevent
, che è probabilmente già installata nel sistema operativo (event.h ha stesso nome ma diverso per le due librerie).
cd /usr/local/src wget http://dist.schmorp.de/libev/libev-4.33.tar.gz tar xzvf libev-4.33.tar.gz cd libev-4.33 chown -R root:root . ./configure --includedir=/usr/local/include/libev make make install ldconfig
Installazione e configurazione di vusaged
cd /usr/local/src/vpopmail-${VPOPMAIL_VERSION}/vusaged
CFLAGS=-I/usr/local/include/libev LIBS=`head -1 /home/vpopmail/etc/lib_deps` ./configure --with-vpopmail=/home/vpopmail make cp -f vusaged /home/vpopmail/bin cp -f etc/vusaged.conf /home/vpopmail/etc
Troubleshooting
Se si ottiene un errore come questo dopo il comando configure
configure: error: No vauth_getpw in libvpopmail
provare a rostruire lo script configure in questo modo:
autoreconf -f -i
e quindi procedere alla configurazione e alla compilazione. Come spiegato sopra nella patch combinata è presente una patch che evita che il confdigure si blocchi. Questa patch non risolve il problema, ma almeno porta a casa la compilazione del programma. Se riesci a risolvere meglio il problema del collegamento della libreria fammelo sapere con un commento.
Dare una occhiata ai commenti. Luca ha suggerito un modo di linkare la libreria, che per me non ha funzionato ma che sto suggerendo comunque sopra in questa guida.
Configurazione quota warning
Ora prepariamo un messaggio di avviso di imminente esaurimento della quota concessa, che verrà inviato agli utenti quando superano il 90% del massimo consentito:
> nano ~vpopmail/domains/.quotawarn.msg From: SomeCompany Postmaster <postmaster@yourdomain.com> Reply-To: postmaster@yourdomain.com To: SomeCompany User:; Subject: Mail quota warning Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit La tua mailbox nel server è superato il 90% della sua capacità. Per continuare a ricevere messaggi, dovresti cancellare dei messaggi dalla tua mailbox. Se ti occorre assistenza al riguardo, sei pregato di contattare l'amministratore qui: email : support@yourdomain.com Tel : xx xxxx xx chmod 600 ~vpopmail/domains/.quotawarn.msg chown vpopmail:vchkpw ~vpopmail/domains/.quotawarn.msg
Ora sistemiamo ~vpopmail/etc/vlimits.default. Questa riga limita a 100MB (in bytes) la quota per l'utente di default:
default_quota 104857600
Creazione del database e configurazione della connessione MySQL
Creiamo l'utente vpopmail e il database, assegniamogli tutti i privilegigrant e salviamo l'account nel file vpopmail.mysql
:
> mysql [-h mysql-IP] -u root -p CREATE USER 'vpopmail'@'mailserver-IP' IDENTIFIED BY 'vpopmailpwd'; GRANT USAGE ON * . * TO 'vpopmail'@'mailserver-IP' IDENTIFIED BY 'vpopmailpwd' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ; CREATE DATABASE IF NOT EXISTS vpopmail; GRANT ALL PRIVILEGES ON `vpopmail` . * TO 'vpopmail'@'mailserver-IP'; > echo "mysql-IP|0|vpopmail|vpopmailpwd|vpopmail" > ~vpopmail/etc/vpopmail.mysql
dove mysql-IP
è l'indirizzo IP del server dove gira mysql
, mentre mailserver-IP
è l'indirizzo IP del server della posta. Solitamente questi due IP sono entrambi quelli della macchina locale, ovvero 0.0.0.0.
Creazione dei domini e degli utenti virtuali
cd ~vpopmail/bin/
Per aggiungere/cancellare un dominio virtuale
./vadddomain yourdomain.net [./vdeldomain yourdomain.net]
Per aggiungere/cancellare un utente virtuale
./vadduser user@yourdomain.net [./vdeluser user@yourdomain.net]
Per visualizzare le informazioni su un utente:
./vuserinfo user@yourdomain.net name: user passwd: xxxxxxxxxxxx clear passwd: xxxxxxxxx comment/gecos: Name Surname uid: 0 gid: 0 flags: 0 gecos: Name Surname limits: No user limits set. dir: /home/vpopmail/domains/yourdomain.net/user quota: 104857600S
La gestione dei domini e degli account sarà molto più agevole una volta installate le interfacce web vqadmin e qmailadmin.
Potresti essere interessato a questo punto a dare un'occhiata alla pagina di test riguardante vpopmail.
Alias domains con il driver di autenticazione sql di dovecot
Se non si hanno alias domains oppure questa è una nuova installazione si può saltare questa sezione.
Se invece si hanno degli alias domains e sta migrando al driver sql di dovecot
è necessario leggere con attenzione la pagina seguente dopo aver terminato l'installazione di dovecot
, perchè sarà necessario salvare su database con le coppie alias/domains già esistenti.
In breve, è possibile salvare tutti i propri domain alias su MySQL in questo modo:
vsavealiasdomains -A
Digitare
vsavealiasdomains -h
per vedere tutte le opzioni.
I record del database saranno da ora in poi creati da vpomail quando si creeranno nuovi alias.
Commenti
Installazione vusaged
Webmaster 19 marzo 2021 11:35 CET
Buongiorno Roberto,
scusa le molte mail, come avrai capito sto installando un nuovo server dopo l'incendo a strasburgo....
L'installazione di vusaged restituisce l'errore "configure: error: No vauth_getpw in libvpopmail" sono su debian bullseye. Non ho trovato in rete nulla di risolutivo.
Grazie delle risposte e della pazienza.
Gabriele
Rispondi | Permalink
Installazione vusaged
Roberto Puzzanghera Webmaster 19 marzo 2021 19:09 CET
non saprei... come stai configurando vpopmail? hai letto questo https://vchkpw.inter7.narkive.com/ftLwnnZq/vusaged-compile-error?
Rispondi | Permalink
Fail reading vusaged.conf
Mcmax 19 agosto 2014 15:58 CET
Puo capitare che digitando i comandi di ./addomain testdomain testpwd risponda cosi:
il problema sta nella sintassi del file vusagec.conf che è cosi:
tutto su una riga. e non come riporta il comando qui sotto :
Rispondi | Permalink
Tabelle MySQL
Marco 1 febbraio 2012 16:06 CET
Innanzitutto complimenti per la guida.
Ho un problema con l'autenticazione a MySQL quando provo ad aggiungere un dominio, la risposta del comando vadddomain è questa:
Ho potuto constatare che il DB non ha nessuna tabella.
Sul file di configurazione trovo che se il DB è in locale è necessario utilizzare le connessioni socket invece di TCP/IP, può essere questo? come fare?
Grazie,
Marco
Rispondi | Permalink
Non ho mai usato la
roberto puzzanghera Marco 1 febbraio 2012 16:33 CET
Non ho mai usato la connessione socket, ma so per certo che settando localhost o l'IP locale 127.0.0.1 tutto funziona. Piuttosto, è necessario che in /hosts/etc sia definito localhost.
Nel database le tabelle vengono create alla prima connessione.
Non mi viene in mente niente di particolare se non i problemi più banali, che immagino tu abbia già controllato, ovvero la presenza di ~vpopmail/etc/vpopmail.mysql, se i parametri della connsessione sono giusti, i permessi di lettura di questo file da parte dell'utente vpopmail. Nel tuo caso il settaggio della connessione dovrebbe essere questo:
Dopodichè proverei a connettermi a mysql dalla linea di comando come utente vpopmail:
Se non ci sono errori qui allora il problema è nel file vpopmail.mysql
edit
Vedo ora questa nota a cui tu ti riferivi
Se vuoi evitare di usare localhost usa al suo posto l'indirizzo IP locale 0.0.0.0 così ricadi nel caso generale
Rispondi | Permalink
Risolto, grazie!
Marco roberto puzzanghera 2 febbraio 2012 11:16 CET
Risolto, grazie!
Ho messo 0.0.0.0 al posto di localhost nel file vpopmail.mysql ed è andato.
Complimenti ancora per la guida!
Rispondi | Permalink