Installazione di Qmail

Qmail può essere installato tramite pacchetti o compilando i sorgenti, in entrambi i casi la procedura è generalmente più laboriosa di quella necessaria per altri sistemi di posta dal momento che raramente questo software, dal momento su si basa su un ambiente non standard, è fornito di default sulle distribuzioni Linux.
Esistono siti non ufficiali che forniscono pacchetti precompilati per Qmail. fra cui:
Qmail Toaster - Con RPM ragionevolmente aggiornati per Mandrake/RedHat/Fedora e i file .spec che ricrearsi gli RPM sul propro sistema.
Untroubled - Software e pacchetti
Pape Debian Packages - Pacchetti DEB precompilati per Qmail e altri software di DJB, non sono fra quelli ufficiali di Debian (in cui si trova il pacchetto dei sorgenti qmail-src nel ramo stable).

Oltre alla installazione, soprattutto se fatta compilando i sorgenti,  si devono eseguire una serie di operazioni manuali, si deve gestire l'interazione con i daemontools (con altri software di DJB, come ucspi-tcp)  e si deve prevedere l'applicazione di variegate patch per funzionalità o requisiti specifici.

INSTALLAZIONE
Se si procede dai sorgenti ha senso seguire le indicazioni fornite da una delle migliori guide sull'argomento presenti in rete: "Life With Qmail" che è anche stata tradotta in italiano e va considerata il punto di riferimento per ogni approfondimento.
In rete esistono molteplici HOWTO, che illustrano soluzioni diverse per mettere in piedi un supporto completo per un sistema di posta: autivirus, antiscan, interfaccia web di gestione, autoresponder, mailing list, autenticazione SMTP, server POP3, POP3s, IMAP, Webmail.
Spesso è necessario applicare specifiche patch a qmail per gestire i prerequisiti richiesta da questi software aggiuntivi, per cui è opportuno, prima di lanciarsi nella compilazione di Qmail:
- definire le proprie necessità (cosa deve fare/avere il mio sistema di posta?)
- valutare le soluzioni disponibili (quali software offrono le funzionalità che mi servono?)
- se possibile, scegliere il sistema operativo e valutare se optare per pacchetti precompilati o procedere con i sorgenti.
- indagare sulle interdipendenze richieste dai software scelti e selezionare le patch qmail necessarie (basarsi sugli HOWTO in rete e la documentazione di chi produce i singoli programmi)
- procedere alla compilazione e installazione di qmail e dei molteplici complementi software con cui sicuramente in un sistema di posta non essenziale, ci si ritroverà a dover gestire.

Installazione dei Daemontools
I Daemontools sono programmi realizzati da DJB che gestire in modo ottimale l'avvio di servizi e demoni. Seppur non indipensabili sono raccomandati per gestire l'avvio dei diversi daemon di Qmail e posso essere utili per gestire in modo altri servizi.
La procedura da sorgenti è semplice:
mkdir -p /package
chmod 1755 /package
cd /package
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -zxvf /tmp/daemontools-0.76.tar.gz
cd admin/daemontools-0.76
package/install

Si può optare per l'installazione di rpm o deb, il pacchetto daemontools (di solito non ufficiale nelle distribuzioni Linux) non ha particolari dipendenze (ma può essere prerequisito per altri).
Rimandando ad altrove per approfondimenti, è utile sapere che la semplice presenza nella directory /service di un link ad uno script (run) di avvio servizio, fa in modo che questo venga avviato entro 5 secondi: se per qualche motivo cade, viene riavviato.

Installazione di UCSPI-TCP
Il pacchetto ucspi-tcp (Unix Client Server Programming Interface) comprende vari tool per istanziare facilmente dei servizi client-server tcp. Si pone come alternativa e miglioramento di inetd con funzionalità di filtro e limiti sulle connessioni.
L'installazione tramite sorgenti è essenziale:
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
make
make setup check


Compilazione di Qmail e installazione del servizio
Procedura di compilazione di QMAIL usando la versione netqmail 1.05 (basata su qmail 1.03 con alcune patch, tra cui il supporto di qmailqueue)+ una patch per il supporto tls e smtpauth.

1- Scaricare i sorgenti di netqmail dal sito ufficiale
wget http://qmail.org/netqmail-1.05.tar.gz

2- Scaricare, se si desidera, la patch per tls+smtpauth
wget http://shupp.org/patches/netqmail-1.05-tls-smtpauth-20041111.patch

3- Scompattare e praparare la configurazione
tar -xzf netqmail-1.05.tar.gz
cd netqmail-1.05
./collate.sh


4- Applicare, se si desidera, la patch tls+smtpauth (notare che per poterla compliare è necessario avere gli header delle librerie ssl installate sl proprio sistema. Queste vengono tipicamente fornite con un pacchetto dedicato (separata da openssl). Su Debian si chiama libssl-dev.
cd netqmail-1.05
patch -p0 < ../../netqmail-1.05-tls-smtpauth-20041111.patch


5- Modificare i sorgenti, se si desidera, per permettere il backup delle mail in ingresso e in uscita. Trovare il file extra.h nella directory principale dei sorgenti e modificarlo per avere:
#define QUEUE_EXTRA "Tlog\0"
#define QUEUE_EXTRALEN 5


6- Creare l'ambiente necessario a qmail, creando la directory e utenti
mkdir /var/qmail

7- Creare gli utenti e i gruppi sul proprio sistema. Il file INSTALL.ids contiene le stesse istruzioni per diversi Unix, su Linux scrivere:
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias alias
useradd -g nofiles -d /var/qmail qmaild
useradd -g nofiles -d /var/qmail qmaill
useradd -g nofiles -d /var/qmail qmailp
groupadd qmail
useradd -g qmail -d /var/qmail qmailq
useradd -g qmail -d /var/qmail qmailr
useradd -g qmail -d /var/qmail qmails


8- Procedere con la compilazione dei sorgenti

Compilare
cd netqmail-1.05
make
make setup check
make cert
make tmprsadh


9- Si può avviare qmail in vari modi tramite lo script /var/qmail/rc , nella directory /var/qmail/boot sono presenti diversi file di esempio per far partire qmail con il supporto di diversi formati di mailbox. Noi intendiamo usare il formato maildir, che prevede una directory Maildir nella home di ogni utente che contiene le mail registrate su file separati. Questa impostazione è quella di default, può essere modificata a livello di file .qmail per singolo utente.
LWQ suggerisce di creare uno script /var/qmail/rc con questo contenuto:
#!/bin/sh

# Using stdout for logging
# Using control/defaultdelivery from qmail-local to deliver messages by default

exec env - PATH="/var/qmail/bin:$PATH" \
qmail-start "`cat /var/qmail/control/defaultdelivery`"


A questo punto basta scrive in /var/qmail/control/defaultdelivery (notare che non è un file ufficiale di qmail, ma una soluzione dell'autore di LWQ) il tipo di mailbox che si vuole utilizzare ( ./Mailbox , ./Maildir/ , |preline procmail , |dot-forward .forward ... )
Ricordarsi di rendere eseguibile il file rc e creare la directory dover loggare:
chmod 755 /var/qmail/rc
mkdir /var/log/qmail

(successivamente verrà configurato il logging su questa directory)

10- Preparare gli script di avvio di qmail
Un comodo script per gestire il servizio qmail è fornito a questo indirizzo:
http://www.lifewithqmail.org/qmailctl-script-dt70
copiarlo in /var/qmail/bin/qmailctl e renderlo facilmente utilizzabile:
wget http://www.lifewithqmail.org/qmailctl-script-dt70 -O /var/qmail/bin/qmailctl
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin


11- In questa fase si preparano gli script per il comando supervise dei daemontools, sia quelli necessari per l'esecuzione del servizio che per il logging. Si basano sulle indicazioni di LWQ ma possono essere adattati alle proprie esigenze.

Per qmail-send il servizio che si occupa di inviare e gestire la posta presente nelle code:
- Creare le directory che servono (la principale e la log):
mkdir -p /var/qmail/supervise/qmail-send/log
- Creare il file /var/qmail/supervise/qmail-send/run per l'avvio del servizio. Scriverci:
#!/bin/sh
exec /var/qmail/rc

- Creare il file /var/qmail/supervise/qmail-send/log/run per gestire il logging:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail

- Rendere eseguibili i file creati:
chmod 755 /var/qmail/supervise/qmail-send/run
chmod 755 /var/qmail/supervise/qmail-send/log/run

- Attivare il servizio (entro 5 secondi verrà avviato) facendo trovare la directory supervise in /service (per evitare l'avvio di qmail-send al boot basterà rimuovere il link simbolico):
ln -s /var/qmail/supervise/qmail-send /service

Analoga procedura va fatta per qmail-smtpd il servizio qmail che si mette in ascolto sulla porta 25 (sia questo che il precedente sono NECESSARI per far funzionare qmail):
- Creare le directory che servono (la principale e la log):
mkdir -p /var/qmail/supervise/qmail-smtpd/log
- Creare il file /var/qmail/supervise/qmail-smtpd/run per l'avvio del servizio:
#!/bin/sh

QMAILDUID=`id -u qmaild`
NOFILESGID=`id -g qmaild`
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
LOCAL=`head -1 /var/qmail/control/me`

if [ -z "$QMAILDUID" -o -z "$NOFILESGID" -o -z "$MAXSMTPD" -o -z "$LOCAL" ]; then
    echo QMAILDUID, NOFILESGID, MAXSMTPD, or LOCAL is unset in
    echo /var/qmail/supervise/qmail-smtpd/run
    exit 1
fi

if [ ! -f /var/qmail/control/rcpthosts ]; then
    echo "No /var/qmail/control/rcpthosts!"
    echo "Refusing to start SMTP listener because it'll create an open relay"
    exit 1
fi

exec /usr/local/bin/softlimit -m 2000000 \
    /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" \
        -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp /var/qmail/bin/qmail-smtpd 2>&1

Questa versione dello script, presa da LWQ, prevede la presenza di un file custom di configurazione /var/qmail/control/concurrencyincoming che contiene il numero di connessioni massime in entrata contemporaneamente. Per mettere 40 connessioni massimo:
echo 40 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming

- Creare il file /var/qmail/supervise/qmail-smtpd/log/run per gestire il logging:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/smtpd

- Rendere eseguibili i file creati:
chmod 755 /var/qmail/supervise/qmail-smtpd/run
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run

- Creare le directory di log (quella principale, che viene usata da qmail-send) è stata creata precedentemente:
mkdir -p /var/log/qmail/smtpd
chown qmaill /var/log/qmail /var/log/qmail/smtpd

- Attivare il servizio:
ln -s /var/qmail/supervise/qmail-smtpd /service

Se si vuole usare anche il server pop3 fornito con qmail (qmail-pop3) procedere come segue (notare che a differenza dei passi precedenti questa parte è facoltativa e va fatta solo se si vuole usare qmail come server pop3 e magari un altro software come courier come server imap):
- Creare le directory che servono (la principale e la log):
mkdir -p /var/qmail/supervise/qmail-pop3d/log
- Creare il file /var/qmail/supervise/qmail-pop3d/run per l'avvio del servizio:
#!/bin/sh
exec /usr/local/bin/softlimit -m 2000000 \
/usr/local/bin/tcpserver -v -R -H -l 0 0 110 /var/qmail/bin/qmail-popup \
mail.dominio.it /bin/checkpassword /var/qmail/bin/qmail-pop3d Maildir 2>&1

In questo script va inserito il FQDN del proprio server di posta (qui mail.dominio.it) e il programma da usare per la verifica di login e password. Quello fornito di default da DJB, checkpassword, va comunque scaricato e compilato autonomamente, ma ne esistono di alternativi per gestire domini virtuali (dove esiste un solo utente di sistema per ogni dominio) o diversi meccanismi di autenticazione. Ad esempio il softwrae vmailmgr si aspetta come path per il comandi di autenticazione: /bin/checkvpw .
Per maggiori dettagli: http://www.qmail.org/top.html#checkpassword
- Creare il file /var/qmail/supervise/qmail-pop3d/log/run per gestire il logging:
#!/bin/sh
exec /usr/local/bin/setuidgid qmaill /usr/local/bin/multilog t /var/log/qmail/pop3d

- Rendere eseguibili i file creati:
chmod 755 /var/qmail/supervise/qmail-pop3d/run
chmod 755 /var/qmail/supervise/qmail-pop3d/log/run

- Creare le directory di log (quella principale, che viene usata da qmail-send) è stata creata precedentemente:
mkdir /var/log/qmail/pop3d
chown qmaill /var/log/qmail /var/log/qmail/pop3d

- Modificare lo script qmailctl per gestire anche il servizio pop3.
Seguire le indicazioni date su LWQ: http://www.lifewithqmail.org/lwq.html#pop-imap-servers

- Attivare il servizio:
ln -s /var/qmail/supervise/qmail-pop3d /service

Sostituzione di Sendmail
Se non è ancora stato fatto, questo è un buon momento per rimuovere Sendmail dal proprio sistema o quantomeno evitare che venga avviato e sostituire i suoi binari con i corrispondenti di Qmail.
mv /usr/sbin/sendmail /usb/sbin/sendmail.orig
mv /usr/bin/sendmail /usb/bin/sendmail.orig
ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -s /var/qmail/bin/sendmail /usr/lib/sendmail


LA STRUTTURA MODULARE DI QMAIL
L'architettura modulare di Qmail è uno dei suoi punti di forza, è alla base della sua intrinseca semplicità, della facilità con cui si può espandere e della sua potenza, flessibilità e stabilità.
I moduli principali, che corrispondono ai nomi dei rispettivi processi (e man pages) sono:
qmail-smtpd - Accetta messaggi via SMTP (è il servizio in ascolto sulla porta 25)
qmail-inject - Inoltra i messaggi provenienti dal sistema locale
qmail-queue - Vede i messaggi arrivati e li mette in coda
qmail-send - Processa i messaggi in coda
qmail-rspawn - qmail-remote - Gestiscono la consegna dei messaggi con destinazione remota
qmail-lspawn - qmail-local - Gestiscono la consegna dei messaggi locali
qmail-clean - Pulisce le code

STRUTTURA DELLE DIRECTORY
La directory principale in cui sono mantenuti di default tutti i file relativi a qmail è /var/qmail. E' consigliabile non modificarla, e si consiglia di usare link simbolici per avere a disposizione i file relativi a Qmail anche in altre directory.
Dentro /var/qmail si trovano queste directory:
alias - File .qmail validi per gli alias generali di sistema
bin - I binari dei programmi e script vari
boot - Gli script di avvio
control - Tutti i file di configurazione
doc - Documentazione (eccetto pagine man)
man - Man pages
queue - La coda dei messaggi che Qmail sta gestendo
users - I database file degli utenti di qmail

La directory /var/qmail/queue contiene i file relativi ai messaggi in coda.
La sua struttura prevede diverse sottodirectory con, scritte su file diversi, ma con stesso nome, le informazioni relative ad un singolo messaggio, a cui viene dato un numero identificativo univoco.
Alcune di queste, indicate con un asterisco (*) contengono 23 (di default) directory numerate che dividere meglio quantità di messaggi potenzialmente grandi.
Sono sconsigliati interventi manuali sui messaggi in coda: va fatto tutto rigorosamente a Qmail stoppato e vanno considerati i diversi file che compongono un singolo messaggio (in questo esempio un messaggio con pid 345 (corrisponde ad un i-node):
mess/345* - Il messaggio (il corpo)
todo/345 - Le intestazioni complete della email
intd/345 - Le intestazioni che qmail-queue sta costruendo
info/345* - Il mittente del messaggio, risultato dal preprocessing delle intestazioni
local/345* - Il destinatario del messaggio, se locale, dopo preprocessing
remote/345* - Il destinatario del messaggio, se remoto, dopo preprocessing
bounce/345 - Errori di consegna permanenti
lock - File di lock
pid - Usato da qmail-queue per ottenere un i-node
  
Gestione delle code
I tool forniti insieme a Qmail per gestire le code sono:
qmail-qread - Visualizza i messaggi in coda (mittente, destinatario, data e numero messaggio)
qmail-qstat - Visualizza il numero di messaggi in coda
Un comodo tool aggiuntivo, realizzato da terzi in Perl, è qmhandle


CONFIGURAZIONE

[ .. TO BE CONTINUED ... ]

Privacy Policy