Gentoo Logo

Disclaimer : Questo documento è in lavorazione e potrebbe non essere ancora considerato ufficiale.


Guida al Virtual Mail Hosting System con netqmail/vpopmail

Indice:

1.  Introduzione

netqmail 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 netqmail per tutti questi scenari focalizzando l'attenzione sull'accesso remoto e le comunicazioni criptate.

Specificamente, i pacchetti che questa guida prenderà in esame sono netqmail, 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 netqmail. Altrimenti si rimanda alla lettura di una bella guida incentrata su Postfix o si può dare un'occhiata a exim.

2.  netqmail (comunicare in locale)

Codice 2.1: Emerge netqmail

# emerge mail-mta/netqmail

Importante: Questa guida si incentra su netqmail-1.05-r4 o superiore, ma potrebbe essere seguita anche per versioni precedenti.

Avvertenza: 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 netqmail -p.

Insieme a netqmail 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 netqmail come servizio mentre ucspi-tcp è responsabile della gestione delle connessioni TCP in ingresso verso i servizi di netqmail.

E' necessario eseguire alcune configurazioni post-installazione.

Codice 2.2: Configurazione per netqmail

(Da personalizzare per adattarle alle informazioni personali)
# nano /var/qmail/control/servercert.cnf
# emerge --config netqmail

Il progetto netqmail 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'.

Codice 2.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 netqmail.

Codice 2.4: Avvio dei servizi di consegna di netqmail

# 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 netqmail lavora correttamente.

Codice 2.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
(Ci dovrebbero essere tre email nella inbox)

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.

Avvertenza: Se non si è ricevuta alcuna mail o se nei file di log sono presenti errori (controllare in /var/log/qmail) che coinvolgono 'localhost.localhost', il problema coinvolge la configurazione del dominio/dns. Il comportamento predefinito di netqmail è 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. Modificare i file di configurazione in /var/qmail/control usando gli esempi che seguono.

Codice 2.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

Codice 2.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

Codice 3.1: 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 installato e configurato mysql. La password usata per il database vpopmail è 'vpoppw', si raccomanda di sceglierne una differente.

Codice 3.2: Configurare vpopmail in mysql

# rc-update add mysql default
Se mysql è stato installato per la prima volta, assicurarsi di eseguire
il comando ebuild <mysql.ebuild> config e seguire le direttive che seguono
prima di far partire il server mysql.

# /etc/init.d/mysql start
# nano /etc/vpopmail.conf
(Cambiare la password da 'secret' a 'vpoppw')
# 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
(I passi che seguono non sono necessari, vanno eseguiti per sicurezza)
# chown root:vpopmail /etc/vpopmail.conf
# chmod 640 /etc/vpopmail.conf
# chown root:vpopmail /var/vpopmail/bin/vchkpw
# chmod 4711 /var/vpopmail/bin/vchkpw

Avvertenza: 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 fornito 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'.

Codice 3.3: Aggiungere un dominio

(Necessario solo se il comando vadddomain visualizza "command not found")
# source /etc/profile

(Durante il debug di vpopmail, si potrebbero consultare i log)
# mysql -u vpopmail -p
mysql> select * from vpopmail.vlog;
# vadddomain wh0rd.org postpass
(Verifica se il dominio è configurato correttamente)
# printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
(Se il risultato non simile al precedente, i permessi non sono corretti)
# 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 netqmail e SMTP.

4.  Courier POP/IMAP

Codice 4.1: 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 criptata via SSL. Altrimenti si deve rimuovere '-ssl' dagli init script degli esempi che seguono.

Codice 4.2: Configurazione per POP3/SSL

 # nano /etc/courier/authlib/authdaemonrc
(Impostare la variabile authmodulelist  affinché contenga "authvchkpw")
# cd /etc/courier-imap
# nano pop3d.cnf
(Modificare la sezione [ req_dn ])
# mkpop3dcert
# rc-update add courier-pop3d-ssl default
# /etc/init.d/courier-pop3d-ssl start

Codice 4.3: Configurazione per IMAP/SSL

# cd /etc/courier-imap
# nano imapd.cnf
(Modificare la sezione [ req_dn ])
# 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.  netqmail (comunicare con l'esterno)

Segue la messa in funzione dell'SMTP prevenendo la creazione di un sistema di cui abusare per fare spamming.

Codice 5.1: Far partire il servizio netqmail SMTP

# cd /var/qmail/control/
# nano conf-smtpd
(Decommentare la variabile SMTP-AUTH e impostare QMAIL_SMTP_CHECKPASSWORD in /var/vpopmail/bin/vchkpw)
# nano servercert.cnf
(Modificare la sezione [ req_dn ])
# 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 netqmail, netqmail accetterà mail per il dominio virtuale wh0rd.org e per gli utenti della macchina locale. Inoltre, netqmail 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. netqmail non permetterà autenticazioni se la sessione non è criptata.

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.

Codice 6.1: Emerge IMP

# emerge horde-imp

Configurazione di IMP.

Codice 6.2: Configurazione per IMP

# cd /var/www/localhost/htdocs/horde/imp/config/
# nano servers.php

(Modificare l'array $servers['imap']:)
$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.

Codice 6.3: Eseguire apache

# nano /etc/conf.d/apache2
(Decommentare APACHE2_OPTS="-D SSL -D PHP5")
# rc-update add apache2 default
# /etc/init.d/apache2 start

Avvertenza: 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 Horde 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 coda di netqmail 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 netqmail. 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 modificare registry.php nella directory config di horde per inserire la nuova applicazione.

ucspi-tcp

netqmail 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 pongono i file in /etc). Qui si trovano due file per ogni servizio, il file di configurazione (es. tcp.qmail-smtp) e la versione compilata di questo file usato da ucspi-tcp (es. 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 netqmail, 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 accodamento differente da quello predefinito. Un buon programma per far questo è qmail-scanner. Installare con emerge qmail-scanner e modificare 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.

Codice 7.1: Modificare il queuer

# cd /etc/tcprules.d/
# nano tcp.qmail-smtp
(Aggiungere QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue"  alla regola allow )
# 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 modificando 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.

Codice 7.2: Configurazione per SpamAssassin

# nano /etc/mail/spamassassin/local.cf
(Aggiungere queste opzioni minime:)
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
(Assicurarsi che la variabile $spamc_binary sia definita come '/usr/bin/spamc'.)
(Se fosse definita come '', guardare la nota che segue.)

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.

Codice 7.3: Configurazione per Clam AntiVirus

# nano /etc/conf.d/clamd
(Definire START_CLAMD=yes)
# nano /etc/clamav.conf
(Definire cosa si vuole)
# rc-update add clamd default
# /etc/init.d/clamd start
# nano /var/qmail/bin/qmail-scanner-queue.pl
(Assicurarsi che la variabile $clamscan_binary sia definita come '/usr/bin/clamscan'.)
(Se fosse definita come '', guardare la nota che segue.)
# nano /var/qmail/control/conf-common
(Se ClamAV riporta problemi di memoria provare a cancellare il softlimit)

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 dovrebbero 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 sito web di Gentoo per il tracciamento dei Bug. Se si hanno esperienze interessanti da aggiungere a questa guida, inviarle all'autore per farle includere.



Stampa

Aggiornato il 14 novembre 2010

La versione originale di questo documento non è più mantenuta

Oggetto: Questo documento espone dettagliatamente come creare un mail server basato su netqmail, vpopmail, courier-imap, mysql e imp di horde.

Mike Frysinger
Autore

Joshua Saddler
Redazione

Enrico Morelli
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.