26 febbraio 2021 Roberto Puzzanghera4 commenti
Vpopmail fornisce un modo semplice di gestire indirizzi di posta su domini virtuali e account email diversi da quelli su /etc/passwd.
Lo scopo di questa pagina è anche mostrare come usare Mysql
come sistema di autenticazione. Avere gli utenti su database ha anche il vantaggio di poter interagire con il database attraverrso un'interfaccia web che gestisce gli accounts.
La patch che andremo ad applicare è l'insieme delle seguenti:
gcc-10
.Creare l'utente e il gruppo vpopmail:
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
.
cd /usr/local/src wget https://notes.sagredo.eu/files/qmail/tar/vpopmail-5.4.33.tar.gz wget https://notes.sagredo.eu/files/qmail/patches/vpopmail/roberto_vpopmail-5.4.33.patch tar xzvf vpopmail-5.4.33.tar.gz cd vpopmail-5.4.33 chown -R root.root . patch -p1 < ../roberto_vpopmail-5.4.33.patch autoreconf -f -i ./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=p \ --disable-clear-passwd \ --enable-auth-logging \ --enable-sql-logging \ --disable-valias \ --disable-mysql-limits \ --disable-passwd \ --enable-qmail-ext \ --enable-learn-passwords \ --enable-sql-aliasdomains \ --enable-defaultdelivery
--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-valias Salva gli alias nei file dot-qmail
anzichè su mysql
.
Questa opzione non funziona con dovecot-lda, dal momento che esso continua a cercare gli alias nei file .qmail-alias.
--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-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.
--disable-mysql-limits MySQL non salva i limiti in alternativa ai file .qmailadmin-limits.
--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-sql-aliasdomains (default) salva i domain alias su MySQL al fine di validare anche i domain alias oltre che i domini regolari quando si usa il driver sql di dovecot
, aa condizione che si sia modificata la password_query
di conseguenza.
--enable-defaultdelivery abilità la possibilità di installare nel .qmail-default
di ogni nuovo dominio il delivery agent salvato preventivamente in /var/qmail/control/defualtdelivery
.
Compilare e installare:
make make install-strip
vusaged cerca gli utenti sotto vpopmail e conteggia quanto spazio disco essi usano. Richiede libev.
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 make make install ldconfig
cd /usr/local/src/vpopmail-5.4.33/vusaged ./configure make cp -f vusaged /home/vpopmail/bin cp -f etc/vusaged.conf /home/vpopmail/etc
Ora copiare lo startup script in /etc/rc.d (Slackware) o init.d e lanciarlo. Questo è un esempio che va bene almeno per Slackware:
cp contrib/rc.vusaged /etc/rc.d/ /etc/rc.d/rc.vusaged start
Controlliamo il file ~vpopmail/etc/tcp.smtp. Questo file contiene l'elenco di tutti gli IP delle macchine che vogliamo abilitare al relay, ovvero a spedire messaggi con la nostra MTA. Naturalmente abilteremo l'invio dei messaggi dall'indirizzo locale e magari da parte degli indirizi della rete locale. Nel caso qui presentato gli IP degli utenti roaming (internet) sono bloccati.
Per abilitare il relay della rete 10.0.0.x e di localhost modifichioamo come segue il file ~vpopmail/etc/tcp.smtp:
10.0.0.:allow,RELAYCLIENT="" 127.:allow,RELAYCLIENT=""
aggiungere ogni altro IP di seguito. Per consentire il relay a un dato client è necessario aggiungere una riga come questa a ~vpopmail/etc/tcp.smtp
:
IP address of client:allow,RELAYCLIENT=""
Ora generiamo il file tcp.smtp.cdb
. Questo comando deve essere lanciato ogni qual volta si modifica tcp.smtp
cd ~vpopmail/etc tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
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
vusaged
(solo vpopmail
5.4.30)Stando al changelog questo bug è stato risolto nella versione 5.4.32.
L'impostazione della quota di default sembra causare questo errore quando si creano nuovi domini:
client_connect: warning: config_begin failed Segmentation fault
Lo stesso mi è capitato creando nuovi utenti virtuali con qmailadmin
. Ciò sembra essere un bug nella versione 5.4.30: http://www.mail-archive.com/vchkpw@inter7.com/msg27383.html Di conseguenza, anche se non si è interessati a usare vusaged
è richiesta la configurazione di vusaged.conf
come suggerito da Matt Brookings, giusto per evitare questo bug:
cat > ~vpopmail/etc/vusagec.conf << __EOF__ Server: Disable = True; __EOF__
Potrebbe essere anche interessante leggere questo post al riguardo http://comments.gmane.org/gmane.mail.qmail.admin/4761 dove Matt afferma che vusaged non è necessario nella versione 5.4.30 di vpopmail
.
MySQL
Creiamo l'utente vpopmail e il database, assegniamogli tutti i privilegigrant e salviamo l'account nel file vpopmail.mysql
:
> /usr/local/mysql/bin/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.
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.
dovecot
Se non si hanno alias domani oppure se qursta è una nuova installazione puoi 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.
problem with passwords containing special characters like %
26 febbraio 2021 22:02
problem with passwords containing special characters like %
26 febbraio 2021 10:05
What about using --disable-many-domains on vpopmail configure ?
22 febbraio 2021 16:49
aliasdomain patch compilation issue
21 febbraio 2021 16:28
aliasdomain patch compilation issue
21 febbraio 2021 14:35
Lua backend
16 febbraio 2021 16:07
What about using --disable-many-domains on vpopmail configure ?
14 febbraio 2021 03:05
What about using --disable-many-domains on vpopmail configure ?
14 febbraio 2021 01:20
Lua backend
12 febbraio 2021 17:40
Lua backend
12 febbraio 2021 14:28
Tags
apache clamav dkim dovecot ezmlm fail2ban ftp guide hacks lamp letsencrypt linux linux-vserver lxc mariadb mediawiki mozilla mysql openboard owncloud patches php proftpd qmail qmailadmin rbl roundcube rsync sieve simscan slackware spamassassin spf ssh ssl tcprules tex ucspi-tcp vpopmail vqadmin
Commenti
Fail reading vusaged.conf
Mcmax 19 agosto 2014 15:58
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
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
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
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