qmail/vpopmail Virtual Mail Hosting System Guide
1.Introduzione
qmail può essere facilmente configurato per la gestione delle mail
inviate da demoni di sistema, da singoli server, da domini, o da domini virtuali.
Questa guida fornirà un aiuto per configurare qmail per tutti questi scenari
focalizzando l'attenzione sull'accesso remoto e le comunicazioni crittate.
Specificamente, i pacchetti che questa guida prenderà in esame sono qmail,
courier-imap, vpopmail e horde/imp. Insieme a questi, saranno
installati, come dipendenze, i pacchetti daemontools, ucspi-tcp, mysql, apache e mod_php.
Attraverso qmail, viene fornito il core delle funzioni mta, con courier-imap si hanno
i servizi necessari al recupero delle mail da remoto, attraverso vpopmail si ha la
gestione dei domini virtuali, infine, con horde/imp si ha l'accesso via web alle mail.
Prima di emergere tutti i pacchetti, è necessario avere le seguenti variabili USE abilitate:
(se alcuni di questi pacchetti sono già stati installati, probabilmente sarà necessario
riemergeli) USE="maildir ssl imap mysql". Inoltre, per usare horde/imp
occorre abilitare USE="nls" prima di installare mod_php.
Nota:
Questa guida comprende diversi passaggi. In ogni momento se si pensa che
la configurazione sia 'completa', non c'è bisogno di continuare.
|
Ci sono molti altri pacchetti per avere un sistema di gestione
delle mail, per cui questo è il momento di decidere in favore di qmail.
Altrimenti si rimanda alla lettura di una bella guida
incentrata su Postfix o si
può dare un'occhiata a exim.
2.qmail
Esempio 1: Emerge qmail |
# emerge qmail
|
Importante:
Questa guida si incentra su qmail-1.03-r13 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
|
Attenzione:
In caso si ottenga il messaggio the virtual/mta package conflicts with another
package, è necessario rimuovere l'altro MTA presente nel sistema.
Per sapere di quale pacchetto si tratta, eseguire emerge qmail -p.
|
Insieme a qmail vengono installati anche i pacchetti ucspi-tcp e daemontools.
Si possono leggere maggiori informazioni su ucspi-tcp
e daemontools.
Basilarmente, daemontools è responsabile della gestione di qmail come servizio
mentre ucspi-tcp è responsabile della gestione delle connessioni TCP in ingresso
verso i servizi di qmail.
E' necessario eseguire alcune configurazioni post-installazione.
Esempio 2: Configurazione per qmail |
# nano /var/qmail/control/servercert.cnf
# ebuild /var/db/pkg/mail-mta/qmail-1.03-r*/qmail-1.03-r*.ebuild config
|
Il progetto qmail si focalizza completamente sulla sicurezza. A questo fine,
nessuna mail sarà inviata all'utente 'root'. Si rende così necessario selezionare un
utente per ricevere le mail che altrimenti sarebbero destinate a 'root'.
In questa guida faremo riferimento a tale utente col nome di 'vapier'.
Esempio 3: Configurazione di un utente non-root |
# cd /var/qmail/alias
# echo vapier > .qmail-root
# echo vapier > .qmail-postmaster
# echo vapier > .qmail-mailer-daemon
|
Avvio dei servizi di consegna di qmail.
Esempio 4: Avvio dei servizi di consegna di qmail |
# rc-update add svscan default
# /etc/init.d/svscan start
# cd /service
# ln -s /var/qmail/supervise/qmail-send qmail-send
|
Test per vedere se qmail lavora correttamente.
Esempio 5: Test servizio di consegna |
# ssh vapier@localhost
# maildirmake .maildir
# qmail-inject root << EOF
test root e-mail!
EOF
# qmail-inject postmaster << EOF
test postmaster e-mail!
EOF
# qmail-inject vapier << EOF
test vapier e-mail!
EOF
# mutt
|
A questo punto è pronto un sistema di gestione mail per la macchina locale
e per utenti che utilizzano tale macchina nonché per i demoni di sistema che
necessitano di inviare mail.
Attenzione:
Se non si è ricevuta alcuna mail o se nei file di log sono presenti
errori (controllare in /var/log/qmail) che coinvologono
'localhost.localhost', il problema coinvolge la configurazione
del dominio/dns. Il comportamento predefinito di qmail è l'utilizzo
dell'output di hostname --fqdn. Se il comando restituisce 'localhost'
controllare la correttezza di /etc/hostname, /etc/hosts e
che il dns funzioni correttamente. Editare i file
di configurazione in /var/qmail/control usando gli esempi
che seguono.
|
Esempio 6: Esempio dei file in /var/qmail/control/ per un dominio di secondo livello |
# hostname --fqdn
wh0rd.org
# cat me
wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
wh0rd.org
# cat rcpthosts
wh0rd.org
|
Esempio 7: Esempio dei file in /var/qmail/control/ per un dominio di terzo livello |
# hostname --fqdn
mail.wh0rd.org
# cat me
mail.wh0rd.org
# cat defaultdomain
wh0rd.org
# cat plusdomain
wh0rd.org
# cat locals
mail.wh0rd.org
# cat rcpthosts
mail.wh0rd.org
|
3.vpopmail
Esempio 8: Emerge vpopmail |
# emerge vpopmail
|
Importante:
Questa guida si incentra su vpopmail-5.4.6 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
|
La configurazione di vpopmail è leggermente più difficile del pacchetto precedente.
Dato che l'uso di vpopmail prevede mysql, assicurarsi che il demone di mysql sia
attivo, quindi configurare il database di vpopmail.
Prima di tutto, assicurarsi di aver emerso e configurato mysql. La password usata per
il database vpopmail è 'vpoppw', si raccomanda di sceglierne una differente.
Esempio 9: Configurare vpopmail in mysql |
# rc-update add mysql default
# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
# mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw
|
Attenzione:
Se si ha esperienza di problemi di permessi con mysql/vpopmail, riavviare mysql
eseguendo /etc/init.d/mysql restart.
|
A questo punto vpopmail è pronto all'uso. In questa guida viene provveduto
l'hosting virtuale per il dominio 'wh0rd.org', il che significa che sarà necessario
configurare vpopmail affinché faccia da host per questo dominio.
Sarà anche creato uno user account per 'vapier'.
Esempio 10: Aggiungere un dominio |
# source /etc/profile
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain wh0rd.org postpass
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
# vadduser vapier@wh0rd.org vappw
|
Ogni dominio creato con vpopmail possiede anche un account 'postmaster'.
Nel caso specifico è stato specificato che la password per il postmaster è 'postpass'.
Prima che vpopmail possa funzionare correttamente, è necessario riuscire a ricevere
mail via courier e inviare mail via qmail e SMTP.
4.Courier POP/IMAP
Esempio 11: Emerge courier-imap |
# emerge net-mail/courier-imap
|
Importante:
Eseguire emerge courier-imap dopo vpopmail. In questo modo verrà compilato anche il modulo
authvchkpw.
|
Importante:
Questa guida si incentra su net-mail/courier-imap-3.0.7 o successivi, ma potrebbe
essere seguita anche per versioni precedenti.
|
Seguono i passi per la configurazione post-installazione. Questi sono
necessari solo se si vuole una comunicazione crittata via SSL.
Altrimenti si deve rimuovere '-ssl' dagli init script degli esempi che seguono.
Esempio 12: Configurazione per POP3/SSL |
# nano /etc/courier/authlib/authdaemonrc
# cd /etc/courier-imap
# nano pop3d.cnf
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start
|
Esempio 13: Configurazione per IMAP/SSL |
# cd /etc/courier-imap
# nano imapd.cnf
# mkimapdcert
# rc-update add courier-imapd-ssl default
# /etc/init.d/courier-imapd-ssl start
|
A questo punto un mail client dovrebbe essere in grado di effettuare un login
sull'host in cui è in esecuzione courier e recuperare le mail per l'host virtuale.
Nel caso preso in esame, si dovrebbe essere in grado di effettuare un login
usando lo username 'vapier@wh0rd.org' e password 'vappw'.
5.qmail
Segue la messa in funzione dell'SMTP prevenendo la creazione di un sistema
di cui abusare per fare spamming.
Esempio 14: Far partire il servizio qmail SMTP |
# cd /var/qmail/control/
# nano conf-smtpd
# nano servercert.cnf
# mkservercert
# cd /service
# ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd
# /etc/init.d/svscan restart
|
Assumendo che non siano stati modificati i file di controllo di qmail, qmail
accetterà mail per il dominio virtuale wh0rd.org e per gli utenti della
macchina locale. Inoltre, qmail invierà mail per chiunque le spedisca via 127.0.0.1 e
per chiunque sia capace di autenticarsi via vpopmail. Durante la configurazione
di un mail client per l'invio della posta, assicurarsi di selezionare l'opzione
'Server requires authentication'. Nel caso preso in esempio, verrà usato l'utente
'vapier@wh0rd.org' con password 'vappw'. Infine, assicurarsi di
configurare il mail client per usare SSL/TLS per le connessioni SMTP.
qmail non permetterà autenticazioni se la sessione non è crittata.
6.Horde / IMP Webmail Client
Benché ci siano molti webmail client, si preferisce
IMP Webmail
Client che è parte dell'Horde framework. La ragione principale risiede
nel fatto che si può usare Horde semplicemente per gestire le mail via Web,
o aggiungere facilmente altri componenti per gestire Rubriche, Calendari, Appuntamenti, ecc.
Se questo non è convincente, si possono leggere ulteriori caratteristiche da
Horde.
Emergere IMP.
Esempio 15: Emerge IMP |
# emerge horde-imp
|
Importante:
Questa guida si incentra su horde-2.2.x e horde-imp-3.2.x.
Le versioni del CVS (ed anche le prossime major release) avranno probabilmente
configurazioni differenti. Da notare anche che horde-2.x non funziona con php-5.x.
|
Attualmente, Horde non è facile da configurare a meno che non si conosca esattamente cosa fare.
Fortunatamente l'autore di questa guida conosce esattamente cosa fare e questo potrà essere
di aiuto per il lettore.
Esempio 16: Configurazione per Horde |
# cd /var/www/localhost/htdocs/horde/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano horde.php
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
$conf['log']['name'] = '/var/log/apache2/horde.log';
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# nano registry.php
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
# touch /var/log/apache2/horde.log
# chown apache:apache /var/log/apache2/horde.log
|
Nota:
Si vorrà anche cambiare l'email per l'account 'webmaster'. Se si vuole usare
questo indirizzo, ricordarsi di aggiungere l'utente via vpopmail (o vedere sotto
per qmailadmin).
|
Configurazione di IMP.
Esempio 17: Configurazione per IMP |
# cd /var/www/localhost/htdocs/horde/imp/config/
# for f in *.dist ; do mv ${f} ${f/.dist} ; done
# nano servers.php
$servers['imap'] = array(
'name' => 'wh0rd.org',
'server' => 'localhost',
'protocol' => 'imap/ssl/novalidate-cert',
'port' => 993,
'folders' => '',
'namespace' => '',
'namespace' => 'INBOX.',
'maildomain' => 'wh0rd.org',
'smtphost' => 'localhost',
'realm' => '',
'preferred' => ''
);
|
Al termine, far partire apache in modo da poter usare webmail.
Esempio 18: Eseguire apache |
# nano /etc/conf.d/apache2
# rc-update add apache2 default
# /etc/init.d/apache2 start
|
Attenzione:
Si dovrebbe forzare la connessione https per utenti di horde.
Questo è un punto importante a motivo della sicurezza.
|
Per testare la configurazione di IMP, lanciare il browser e visitare
http://localhost/horde/ (cambiare localhost con il server su cui si è
configurato IMP). Si dovrebbe essere in grado di vedere la pagina di benvenuto di Horde
con la richiesta di login. Sempre seguendo il nostro esempio, si dovrebbe eseguire
il login con
'vapier@wh0rd.org' e 'vappw' come
username e password.
La configurazione di Horge e IMP è terminata. Si dovrebbe, comunque,
tornare indietro attraverso le directory di configurazione e cambiare
quello che si ritiene opportuno.
7.Pacchetti extra
qmailadmin
Un primo pacchetto che si suggerisce di usare è qmailadmin.
E' un interfaccia basata su web per la gestione di domini virtuali.
Si installa con emerge net-mail/qmailadmin e si usa semplicemente
attraverso un browser attraverso l'indirizzo
http://localhost/cgi-bin/qmailadmin.
qmHandle
Se si hanno problemi con la queue di qmail e si perde tempo per il debugging,
si può dare un'occhiata a
qmHandle.
E' un semplice programma in perl per vedere e gestire le code dei messaggi di qmail.
Anche in questo caso per l'installazione usare emerge net-mail/qmhandle.
Aggiunte a horde
Si raccomanda uno sguardo alle altre applicazioni Horde.
Le applicazioni complementari Turba, Kronolith, e Nag migliorano l'uso di IMP.
La loro configurazione è simile a quella per IMP, non si dovrebbero quindi trovare
eccessivi problemi. Ricordarsi di editare registry.php nella direcotory config di horde
per inserire la nuova applicazione.
ucspi-tcp
qmail utilizza ucspi-tcp per gestire le connessioni in ingresso.
Se si desidera personalizzare le regole dei filtri, i file di configurazione sono in
/etc/tcprules.d/ (vecchie versioni di qmail pongono i file in /etc).
Qui si trovano due file per ogni servizio, il file di configurazione (p.e. tcp.qmail-smtp)
e la versione compilata di questo file usato da ucspi-tcp (p.e. tcp.qmail-smtp.cdb).
Ogni volta si aggiorna il file di configurazione, si dovrà anche provvedere alla ricompilazione
della versione binaria eseguendo
tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp.
Ogni volta che viene creata una connessione da qmail, il file di regole compilate
viene riletto, non è quindi necessario far ripartire il servizio.
qmail-scanner
Se si vuole filtrare il contenuto delle mail che passano per il mail server (contro spam e virus),
si deve usare un programma di queuing differente da quello predefinito.
Un buon programma per far questo è
qmail-scanner.
Installare con emerge qmail-scanner e editare il file
/etc/tcprules.d/tcp.qmail-smtp.
Importante:
Il processo di installazione di qmail-scanner prevede la ricerca nel sistema
dei pacchetti da usare che devono essere già presenti.
E' necessario quindi provvedere ad emergere SpamAssassin e/o Clam AntiVirus
prima di emergere qmail-scanner.
|
Esempio 19: Modificare il queuer |
# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
# tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp
|
La prossima sezione prende in esame come configurare un filtro contro spam e virus.
Si possono personalizzare alcune opzioni editando direttamente
/var/qmail/bin/qmail-scanner-queue.pl.
SpamAssassin
Uno dei filtri antispam Open Source è
SpamAssassin.
Installare con emerge mail-filter/spamassassin.
Il pacchetto ha sia una versione da linea di comando che una client/server.
Per server che smistano una piccola quantità di mail, si può utilizzare la versione
da linea di comando, mentre per server che gestiscono carichi abbondanti di mail
è bene usare la versione client/server.
Esempio 20: Configurazione per SpamAssassin |
# nano /etc/mail/spamassassin/local.cf
required_hits 6
skip_rbl_checks 1
# rc-update add spamd default
# /etc/init.d/spamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
|
Importante:
Se non si aveva SpamAssassin nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
|
A questo punto, le mail in ingresso dovrebbero essere inviate a qmail-scanner
che eseguirà SpamAssassin.
Clam AntiVirus
Come SpamAssassin, Clam AntiVirus
arriva in due versioni. Si daranno indicazioni su come configurare la versione
client/server. Installare con emerge app-antivirus/clamav.
Esempio 21: Configurazione per Clam AntiVirus |
# nano /etc/conf.d/clamd
# nano /etc/clamav.conf
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
# nano /var/qmail/control/conf-common
|
Importante:
Se non si aveva Clam AntiVirus nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
|
A questo punto, le mail in ingresso dovrebero essere inviate a qmail-scanner che
eseguirà Clam AntiVirus.
8.Note finali
Non ci sono note finali eccetto che se si hanno problemi seguendo questa guida
si dovrebbe contattare l'
autore o inviare una segnalazione sul
Gentoo's Bugtracking Website.
Se si hanno esperienze interessanti da aggiungere a questa guida, inviarle all'autore
per essere incluse.
|