logo
Data: 09/09/2010  Ora: 03:19  Online: 3 users
Home | I Miei Appunti | Screenshot Gallery | Download | Links | Autore
howto


Un viaggio attraverso qmail

Premessa:

qmail scritto da Dan J. Bernstein è un MTA che si propone come ottima alternativa a programmi come sendmail, exim e postfix. Gli obiettivi principali dichiarati dall'autore sono l'efficenza, la semplicità, la leggerezza ed in particolar modo la sicurezza.
L'ultima versione di qmail è la 1.03 risalente al 1998, questo non perché il progetto sia morto ma per il semplice motivo che secondo l'autore stesso ad oggi è esente da bug. Al seguente link: The qmail Security Challenge è presente una sfida con tutte le dovute regole dove viene offerta una ricompensa a chi riesca ad individuare una falla su qmail ma che ad oggi risulta ancora essere inbattuta.
Difficile tralasciare il fatto che ha un pesante problema di licenza che ne permette la sola distribuzione dei sorgenti poichè coperto da copyright. Dunque anche se scomodo rimane l'unico modo legale per distribuirlo.
Distribuzioni come Debian forniscono un pacchetto con i sorgenti (qmail-src) lasciando all'utente la sola possibilità di compilarselo.
Nel corso di questa guida userò la versione di qmail 1.03 con incluse delle patch (netqmail-1.05.tar.gz). Per sapere anticipatamente cosa riguardano vi rimando quà: Recommended patches o quà The failure to build when using modern versions of GNU's C library.

Di seguito elenco alcune delle tante features:
  • processi setuid e root minimizzati;

  • gestione del relaying per stabilire chi deve inviare email e chi no;

  • controllo del numero di consegne simultanee remote e locali (concurrencyremote/concurrencylocal);

  • coda sicura in caso di crash (safe queueing);

  • pulizia coda (qmail-clean);

  • visualizzazione stato coda (qmail-qread);

  • impostazione del tempo di vita di una mail in coda (queuelifetime);

  • delivery reports (qmailanalog);

  • rimbalzo mail (double bounces);

  • virtual domains, supporto alias, delivery in formati mbox e Maildir;

  • notifica mail mediante l'uso di qbiff;

  • qmailadmin etc, in più vi sono add-on come dot-forward e fastforward.

la lista completa è reperibile quà: Feature list.

qmail supporta il delivery mail sia in formato mbox che in Maildir. In breve il primo sistema archivia tutte le mail su un singolo file mentre il secondo usa tre directory standard (cur/new/tmp) con un unico file per ogni singola mail archiviata, in questo modo e' molto piu' difficile riuscire a perdere messaggi. Personalmente ho usato mbox per circa 1 anno archiviando più di 10.000 mail della ML di debian-italian senza alcuna corruzione, pertanto lo ritengo comunque affidabile. Da poco ho migrato tutto a Maildir che trovo per ora ottimo.

Requisiti:

E' richiesta una conoscenze di base dei principali comandi amministrativi Linux e aver preinstallato sul sitema i seguenti software:
gcc, g++, libgdbm-devel, openssl, openssl-devel, libssl-dev, stunnel, apache, php4, wget, bzip2, libkrb5-dev, patch, make, libfam-dev e libselinux1-devel .
Assicuratevi, invece, di non avere installato sul sistema mail server alternativi come postfix, sendmail etc.
In caso vogliate estendere le funzionalità del mail server oltre che sulla propria rete locale anche verso server esterni si presuppone siate in possesso di ip static o abbiate attivo e funzionante un account presso alcuni servizi che aggiornano l'ip dinamico. Cito i più conosciuti e usati: dyndns e no-ip .

Questo howto è stato scritto e testato di persona su una Debian Sid aggiornata al 28/09/05 con kernel 2.6.13.3 .
Tutti i programmi trattati verranno compilati manualmente poichè, visto e considerando che entrano in gioco alcuni software proprietari, si farà a meno di usare precompilati anche dove sarebbe possibile farlo. Così che questa guida potrà essere utilizzata anche da utenti che usano distribuzioni Linux diverse da Debian.
Tengo a precisare che la maggior parte degli script usati sono tratti dalle seguenti guide: "Life with qmail di Dave Sill", "Bill's Linux Qmail Toaster di Bill Shupp" e "qmailrocks.org".

Finalità:

Proporre un altro punto di riferimento, offrire un'alternativa semplice, in lingua italiana, che fornisca supporto a tutti coloro i quali cercano per la prima volta un approccio con questo mail server. Mi auguro che scegliendo questo sistema possano trovarsi in grado di installare ed amministrare il proprio mailserver senza difficoltà.
In breve gli obbiettivi di questa guida sono:
  • inoltro mail sulla stessa rete locale o verso altri MTA remoti cifrando il traffico attraverso connessione sicura TLS;

  • invio mail con autenticazione del server da connessioni al di fuori della rete locale;

  • fetch mail tramite connessione pop3 da un client locale o remoto con o senza uso l'uso di una comunicazione sicura SSL;

  • sfruttare i vantaggi del protocollo imap4 in locale come in remoto potendo sincronizzare la propria posta con o senza l'uso di SSL;

  • utilizzo webmail con imap4;

  • gestire tramite script cgi uno o più server virtuali;

  • controllo preventivo al fine di identificare eventuale spam o virus sulla posta;

  • ricevere un resoconto delle attività svolte dal mailserver in posta elettronica.

Software utilizzato:

  • netqmail v.1.05

  • qmail-toaster patch v.0.8

  • daemontools v.0.76

  • ucspi-tcp v.0.88

  • vpopmail v.5.4.17

  • courier-authlib v.0.58

  • courier-imap v.4.1.1

  • squirrelmail v.1.4.8

  • autorespond v.2.0.5

  • qmailadmin v.1.2.9

  • spamassassin v.3.1.7

  • razor-agents v.2.82

  • gmp v.4.2.1

  • clamav v.0.88.6

  • ripmime v.1.4.0.6

  • simscan v.1.2

  • qmailanalog v.0.70

  • qlogtools v.3.1

Predisposizione all'installazione di qmail:


mkdir -p /var/src/tar
cd /var/src/tar/
wget http://qmail.org/netqmail-1.05.tar.gz

cd /var/src/
tar -xvzf tar/netqmail-1.05.tar.gz
cd netqmail-1.05/
./collate.sh

daemontools:

Per migliorare l'affidabilità e la raggiungibilità di qmail si ricorre al uso di Daemontools che, guarda caso, è sempre scritto da DJ Bernstein.
Non è altro che un insieme di tool come svscanboot, svscan, supervise etc., che hanno il compito di avviare, monitorare demoni e processi.
Installare daemontools è semplicissimo, le istruzioni riportate nella documentazione ufficiale sono chiarissime. Le riporto di seguito.

Compilazione del pacchetto

si inizia creando la directory /package nella root principale, scompattando il sorgente ed eseguendo l'install script sh che compilerà e avvierà i famigerati tool.
mkdir -p /package
chmod 1755 /package/
cd /package/
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -xpzvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/
patch -p1 < /var/src/netqmail-1.05/other-patches/daemontools-0.76.errno.patch
./package/install

N.B. al termine non cancellare la directory /package con tutto il suo contenuto in quando questa servirà per il normale utilizzo di qmail.
ora se tutto è filato liscio dando:
ps aux|grep svs

troverete due nuovi processi: "/bin/sh /command/svscanboot" e "svscan /service" .

ucspi-tcp

UCSPI, un altro programma scritto da DJB che gestisce connessione tra client e server come i più famosi demoni di rete inetd o xinetd.

Compilazione del pacchetto

wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar -xvzf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88/
patch -p1 < /var/src/netqmail-1.05/other-patches/ucspi-tcp-0.88.errno.patch
make
make setup check

Installazione qmail

Creazione utenti e gruppi

mkdir /var/qmail
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

Compilazione del pacchetto

cd /var/src/netqmail-1.05/netqmail-1.05/
make
make setup check

Configurazione dei file e creazione degli script di startup

si impostano ora la policy per SPF a valore 3 (reject mode) e gli alias di sistema.
echo 3 > /var/qmail/control/spfbehavior
cd ~alias
echo "admin@pippo.pluto.org" > .qmail-postmaster
echo "admin@pippo.pluto.org" > .qmail-mailer-daemon
echo "admin@pippo.pluto.org" > .qmail-root
echo "admin@pippo.pluto.org" > .qmail-abuse
chmod 644 ~alias/.qmail*
cd /var/src/netqmail-1.05/netqmail-1.05/
./config-fast pippo.pluto.org

quest'ultimo comando andrà a scrivere il nome del dominio pippo.pluto.org nei file: me, defaultdomain, plusdomain, locals e rcpthosts, tutti file presenti in /var/qmail/control
aprire con un editor il file /etc/man.config e inserire questa nuova riga MANPATH /var/qmail/man, non è altro che il percorso che contiene le manpage di qmail.

indichiamo il formato del delivery locale:
nel caso in cui abbiate optato per mbox cambiate il ./Maildir/ riportato nell'esempio sotto con ./Mailbox
echo ./Maildir/ >/var/qmail/control/defaultdelivery

si prosegue nella sistemazione dei file di log e degli script di avvio:
wget -O /var/qmail/rc http://www.piloz.it/qmail/script/rc
chmod 755 /var/qmail/rc
wget -O /var/qmail/bin/qmailctl http://www.piloz.it/qmail/script/qmailctl
chmod 755 /var/qmail/bin/qmailctl
ln -s /var/qmail/bin/qmailctl /usr/bin
ln -sf /var/qmail/bin/sendmail /usr/sbin/sendmail
ln -sf /var/qmail/bin/sendmail /usr/lib/sendmail
mkdir -p /var/qmail/supervise/qmail-{send,smtpd,pop3d{,s}}/log
wget -O /var/qmail/supervise/qmail-send/run http://www.piloz.it/qmail/script/send.run
wget -O /var/qmail/supervise/qmail-send/log/run http://www.piloz.it/qmail/script/send.log.run
wget -O /var/qmail/supervise/qmail-smtpd/run http://www.piloz.it/qmail/script/smtpd.run
wget -O /var/qmail/supervise/qmail-smtpd/log/run http://www.piloz.it/qmail/script/smtpd.log.run
wget -O /var/qmail/supervise/qmail-pop3d/run http://www.piloz.it/qmail/script/pop3d.run
wget -O /var/qmail/supervise/qmail-pop3d/log/run http://www.piloz.it/qmail/script/pop3d.log.run
wget -O /var/qmail/supervise/qmail-pop3ds/run http://www.piloz.it/qmail/script/pop3ds.run
wget -O /var/qmail/supervise/qmail-pop3ds/log/run http://www.piloz.it/qmail/script/pop3ds.log.run
chmod 755 /var/qmail/supervise/qmail-{send,smtpd,pop3d{,s}}/{,log/}run

echo 20 > /var/qmail/control/concurrencyincoming
chmod 644 /var/qmail/control/concurrencyincoming

mkdir -p /var/log/qmail/{smtpd,pop3d{,s}}
chown -R qmaill /var/log/qmail
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service

dopo la creazione di quest'ultimo link in /service, daemontools andrà ad attivare subito i demoni qmail-send e qmail-smtpd.

vpopmail:

Vpopmail, componente fondamentale per un server di posta con la principale caratteristica di poter creare domini virtuali su di una stessa macchina.
Una nota importante è che, a differenza di altri programmi, i domini virtuali non presentano alcun legame con gli account di sistema in /etc/passwd

Creazione utenti e gruppi

groupadd -g 89 vchkpw
useradd -u 89 -g vchkpw vpopmail

Compilazione del pacchetto

wget http://www.piloz.it/qmail/vpopmail-5.4.17.tar.gz
tar -xvzf vpopmail-5.4.17.tar.gz
cd vpopmail-5.4.17
./configure --enable-logging=v
make
make install-strip

Configurazione file e creazione degli script di startup

si imposta ora il relaying, in breve si andrà a regolarizzare a mezzo di IP la concessione all'uso del server smtp da parte dei client che gli si connettono.
nell'esempio sotto possono sfruttare il server smtp solo i pc presenti in lan con ip compresi nel range 192.168.1-254 .
echo '127.0.0.1:allow,RELAYCLIENT=""' > ~vpopmail/etc/tcp.smtp
echo '192.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"' >> ~vpopmail/etc/tcp.smtp

generazione del file cdb:
pushd ~vpopmail/etc
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp
popd

nota: ogni qualvolta si edita il file tcp.smtp bisogna sempre rigenerare il file cdb tramite l'uso di tcprules come sopra, inoltre è possibile più semplicemente fare ciò con il comando:
qmailctl cdb

wget -O /var/qmail/bin/vpopmailctl http://www.piloz.it/qmail/script/vpopmailctl
chmod 755 /var/qmail/bin/vpopmailctl
ln -s /var/qmail/bin/vpopmailctl /usr/bin
cd /var/src/netqmail-1.05/netqmail-1.05
wget -P /var/src/tar/ http://shupp.org/patches/qmail-toaster-0.8.patch.bz2
bunzip2 -c /var/src/tar/qmail-toaster-0.8.patch.bz2 | patch -p0
sed -i -e 's/#define CRAM_MD5//' qmail-smtpd.c
make clean
make
qmailctl stop
make setup check
chown -R vpopmail:vchkpw /var/qmail/spam

crezione del certificato indispensabile per il suporto TLS:
make cert
make tmprsadh
qmailctl start
ln -s /var/qmail/supervise/qmail-pop3d /var/qmail/supervise/qmail-pop3ds /service

nota: nel caso in cui dando il comando make indicato poco sopra si presenta questo errore:
tls.c:12 conflicting types for 'strerror'

occorre compilare a mano openssl downgradando momentaneamente la versione ad una NON superiore alla 0.9.7g, la stessa 0.9.7g va benissimo.
una volta scaricata ( http://www.openssl.org/source/ ) e compilata con:
./config && make && make install

riprovate a compilare netqmail ricordandovi poi di upgradare nuovamente openssl alla versione attuale.

Creazione e gestione dei Domini Virtuali

aggiungere un dominio:
nota: questo passo crea in automatico una mail postmaster@dominio pertanto è richiesto l'inserimento della password abinata ad essa.
/home/vpopmail/bin/vadddomain pippo.pluto.org password_postmaster

cancellare un dominio:
/home/vpopmail/bin/vdeldomain pippo.pluto.org

reperire informazioni su un dominio preesistente:
/home/vpopmail/bin/vdominfo

Creazione e gestione degli Utenti

aggiungere un utente su un dominio preesistente:
/home/vpopmail/bin/vadduser admin@pippo.pluto.org password_admin

cancellare un utente:
/home/vpopmail/bin/vdeluser admin@pippo.pluto.org

cambiare la password di un utente su un dominio:
/home/vpopmail/bin/vpasswd admin@pippo.pluto.org nuovapassword

reperire informazioni su un utente:
/home/vpopmail/bin/vuserinfo admin@pippo.pluto.org

Testare qmail e vpopmail

controllo dello stato attuale di qmail:
sleep 5
qmailctl stat
/service/qmail-send: up (pid 1856) 5744 seconds
/service/qmail-send/log: up (pid 1857) 5744 seconds
/service/qmail-smtpd: up (pid 1859) 5743 seconds
/service/qmail-smtpd/log: up (pid 1854) 5744 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

controllo dello stato di vpopmail:
sleep 5
vpopmailctl stat
/service/qmail-pop3d: up (pid 9549) 22 seconds, normally down
/service/qmail-pop3d/log: up (pid 1855) 5870 seconds
/service/qmail-pop3ds: up (pid 9552) 22 seconds, normally down
/service/qmail-pop3ds/log: up (pid 1858) 5869 seconds

Inviare una mail di prova:
echo To: postmaster@pippo.pluto.org | /var/qmail/bin/qmail-inject

Controllo del log:
tail -n7 /var/log/qmail/current
new msg 1991314
info msg 1991314: bytes 206 from qp 10742 uid 0
starting delivery 1: msg 1991314 to local pippo.pluto.org-postmaster@pippo.pluto.org
status: local 1/10 remote 0/20
delivery 1: success: did_0+0+1/
status: local 0/10 remote 0/20
end msg 1991314

Controllo del effettiva ricezione della mail verso postmaster@pippo.pluto.org:
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK <16841.1130949114@host>
user postmaster@pippo.pluto.org
+OK
pass xxxxxx
+OK
list
1 850.
quit
+OK
Connection closed by foreign host.

telnet localhost 25
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220-pippo.pluto.org ESMTP
ehlo
250-pippo.pluto.org
250-STARTTLS
250-PIPELINING
250-8BITMIME
250-SIZE 0
250 AUTH LOGIN PLAIN CRAM-MD5
quit
221 pippo.pluto.org
Connection closed by foreign host

il comando EHLO fa annunciare al server i comandi extra ESMTP supportati, trai quali si evvidenzia LOGIN che indica la possibilità di fare autenticazione in uscita e STARTTLS per il supporto TLS che cifra tutto il traffico (messaggi e password) tra il vostro client e il server di posta.

Courier-IMAP + ssl:

Compilazione del pacchetto courier-authlib

wget http://easynews.dl.sourceforge.net/sourceforge/courier/courier-authlib-0.58.tar.bz2
tar -xvjf courier-authlib-0.58.tar.bz2
cd courier-authlib-0.58/
./configure
make
make install-strip
make install-configure

Creazione degli script di startup e configurazione dei file

cp courier-authlib.sysvinit /etc/init.d/courier-authlib
chmod 755 /etc/init.d/courier-authlib
for i in 0 1 6; do ln -s /etc/init.d/courier-authlib /etc/rc${i}.d/K30courier-authlib; done
for i in 2 3 4 5; do ln -s /etc/init.d/courier-authlib /etc/rc${i}.d/S80courier-authlib; done

il programma sarà installato in /usr/local/lib/courier-authlib, ora bisogna editare il file authdaemonrc per indicare il tipo di autenticazione da usare.
emacs /usr/local/etc/authlib/authdaemonrc

cambiare:
#authmodulelist="authuserdb authpam authmysql authcustom authvchkpw authpipe"

con:
authmodulelist="authvchkpw"

/etc/init.d/courier-authlib start

Compilazione del pacchetto courier-imap

wget http://easynews.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.1.tar.bz2
tar -xvjf courier-imap-4.1.1.tar.bz2
chown -R vpopmail:vchkpw courier-imap-4.1.1/
cd courier-imap-4.1.1/
su vpopmail
./configure
make
exit
make install-strip
make install-configure

nota: nel caso in cui dando il comando make indicato poco sopra si presenta questo errore:
/usr/lib/libfam.a(Client.o)(.gnu.linkonce.t._ZN5BTreeIiPvE9 underflowEPNS1_4NodeEj+0x270): In function `BTree::underflow(BTree<\
int, void*>::Node*, unsigned)':
: undefined reference to `operator delete(void*)'
collect2: ld returned 1 exit status
make[2]: *** [maildirkw] Error 1

occorre assicurarsi che ci siano installati sul sistema libfam-dev e libselinux1-devel, constatato ciò precedere come riportato sotto:
cd /usr/lib
mv libfam.a libfam.a.old
ln -s libfam.so libfam.a

Creazione degli script di startup e configurazione dei file

cp courier-imap.sysvinit /etc/init.d/courier-imap
chmod 755 /etc/init.d/courier-imap
for i in 0 1 6; do ln -s /etc/init.d/courier-imap /etc/rc${i}.d/K30courier-imap; done
for i in 2 3 4 5; do ln -s /etc/init.d/courier-imap /etc/rc${i}.d/S80courier-imap; done

courier-imap sarà installato in /usr/local/courier-imap , anche in questo caso si deve editare il file imapd per far si che si abiliti courieri-imap.
emacs /usr/local/courier-imap/etc/imapd

cambiare in basso:
IMAPDSTART=NO

in:
IMAPDSTART=YES

per aggiungere anche il supporto SSL:
emacs /usr/lib/courier-imap/etc/imapd-ssl

cambiare:
IMAPDSSLSTART=NO

in:
IMAPDSSLSTART=YES

/etc/init.d/courier-imap start

controllare che sia tutto ok leggendo i file di log che di default sono quelli usati dal sistema: /var/log/mail.err, /var/log/mail.info e /var/log/mail.warn

squirrelmail:

Installazione e personalizzazione della webmail

wget http://heanet.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.8.tar.bz2
tar -xvjf squirrelmail-1.4.8.tar.bz2
mv -f squirrelmail-1.4.8 /var/www/webmail
cd /var/www/webmail/
chown -R www-data:www-data /var/www/webmail/data

nota: www-data è il nome dell'utente e del gruppo che esegue apache nel mio sistema come indicato sul file di confiugurazione di apache, occorre cambiare utente e gruppo qualora apache venga eseguito differentemente.
Inoltre consiglio di usare apache con il protocollo SSL così da eseguire una cifratura di tutto il traffico.
./configure

dunque dal menu principale andare in:
"2.Server Settings"->"A.Update IMAP Settings"->"8.Server software" e cambiare "other" in "courier"
dal Main Menu andare in:
"4.General Options" e cambiare "1.Data Directory" da "../data/" in "/var/www/webmail/data/"
sempre dal Main Menu andare in:
"8.Plugins" e aggiungete o togliete i plugins che preferite io personalmente uso: quota_usage, administrator, filters, message_details, delete_move_next, listcommands e abook_import_export, da tener presente che alcuni di questi appena elencati non sono presenti di default ma andranno scaricati dal sito Squirrelmail sez.Plugins
infine dal Main Menu andare in:
"10.Languages" e impostare "1.Default Language : "it_IT" e "2.Default Charset : iso-8859-15"
salvate (S) e uscite (Q).
aprite ora la pagina http://squirrelmail.org/download.php , nella sezione Translations sulla colonna Stable Version cliccate su other packages [md5] [sha1] e scaricatevi dentro la directory locale /var/www/webmail il pacchetto it_IT-1.x.x.tar.bz2
cd /var/www/webmail
tar -xvjf it_IT-1.x.x.tar.bz2

aprite per un check questo indiritto: https://localhost/webmail/src/configtest.php , se viene indicato: Congratulations, your SquirrelMail setup looks fine to me! clicckate sul link https://localhost/webmail/src/login.php "(Login now)" presente nella stessa pagina e godetevi il tutto.

qmail-autoresponder:

Semplice tool che gestisce le risposte automatiche alle mail ricevute, questa utlità è richiesta da qmailadmin che verrà trattato nel passo successivo.
Le caratteristiche riprese dal sito dell'autore:
- Limita la quantità di risposte automatiche (di default impostato a una mail ogni ora).
- Inserisce il testo originale lasciando stesso oggetto nella risposta automatica.
- Ignora l'autorisposta su mail provvenienti da mailig list
- Non esegue l'autorespond a mail che provengono da mailer-daemon.

Configurazione e compilazione del pacchetto

wget http://www.inter7.com/devel/autorespond-2.0.5.tar.gz
tar -xvzf autorespond-2.0.5.tar.gz
cd autorespond-2.0.5/
make
make install

qmailadmin:

qmailadmin è uno script cgi che permette di amministare con varie funzionalità un intero dominio o una singola mail.
Creare utenti, gestire autorisponditori forward o quote sono solo alcune delle caratteristiche che fanno di qmailadmin un'ottima utilità.
L'accesso viene permesso non solo all'utente postmaster, che detiene la completa gestibilità di tutte le caselle, ma si estende anche ai normali utenti che tramite una maschera di login rimangono liberissimi di potersi gestire in tutta autonomia la propria casella.

Compilazione del pacchetto

wget http://www.piloz.it/qmail/qmailadmin-1.2.9.tar.gz
tar -xvzf qmailadmin-1.2.9.tar.gz
cd qmailadmin-1.2.9/
./configure --enable-cgibindir=/usr/lib/cgi-bin --enable-htmldir=/var/www --enable-imagedir=/usr/share/images/qmailadmin

cambiate /usr/lib/cgi-bin e /var/www in base alla vostra configurazione di Apache secondo le impostazioni della vostra DocumentRoot e della directory che punta ai cgi .
per evitare problemi riporto parte del mio httpd.conf:
...
< IfModule mod_alias.c >
< Directory /usr/share/images >
Options MultiViews
AllowOverride None
Order allow,deny
Allow from all
< /Directory >
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
< Directory /usr/lib/cgi-bin/ >
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
< /Directory >
< /IfModule >
...
AddHandler cgi-script .cgi .sh .pl
...

finite di installare con:
make
make install-strip

ora mi auguro che all'url "http://localhost/cgi-bin/qmailadmin" vi si presenti una bella maschera per il login di qmailadmin.

spamassassin:

Spamassassin è un programma open source che analizza le mail in ingresso per identificare eventuale spam eseguendo dei controlli incrociati e sfruttando strumenti per un analisi in rete, assegna un livello di spam alla mail, se questo valore supera quello preimpostato nel file di configurazione (vedi required_score), verrà allora valutato come possibile spam e ne seguirà la marchatura dell'header della mail con "X-Spam-Flag=YES".
Uno strumento molto utilizzato che effettua un check delle mail da remoto e su cui si interfaccia spamassasin è Razor.
Grazie agli utenti finali che contribuiscono all'utilizzo di questo software, si sviluppa un database in costante aggiornamento che tiene conto della propagazione di spam su internet.

Installazione di razor

wget http://www.piloz.it/qmail/razor-agents-2.82.tar.bz2
tar -xvjf razor-agents-2.82.tar.bz2
cd razor-agents-2.82/
perl Makefile.PL
make
make test
make install

Installazione di spamassassin

L'installazione di spamassassin avviene mediante l'uso di script in Perl pertanto si ricorre all'uso di CPAN (Comprehnsive Perl Archive Network).
si avvia da root CPAN con la seguente sintassi:
perl -MCPAN -e shell

La prima volta che avviate CPAN vi verranno chieste alcune informazioni indispensabili per il suo funzionamento. Appena vi trovate ad un prompt dei comandi che inizia con: cpan> date questi comandi:
install Compress::Zlib
install IO::Zlib
install Archive::Tar
install IP::Country::Fast
install Net::Ident
install Mail::SPF::Query
install Mail::SpamAssassin

si noti che i primi sei componenti (Compress-Zlib, IO-Zlib, Archive-Tar, IP-Country-Fast, Net-Ident e Mail-SPF-Query) sono installazioni che diventano indispensabili per l'uso di "sa-update" (automate SpamAssassin rule updates) mentre l'installazione del programma vero e proprio avviente quando date install Mail::SpamAssassin.

Configurazione dei file

aprite con un editor il file di configurazione /etc/mail/spamassassin/local.cf sul quale si basa quasi tutto il funzionamento di spamassassin.
Potete fare un semplice copia/incolla del mio file già testato il cui link è riportato sotto o apportate le modifiche che ritenete più opportune. Nell'eventualità vogliate partire da zero ecco un ottimo link per aiutarvi nella stesura del file: SpamAssassin Configuration Generator.

ecco il mio local.cf.

ulteriori informazioni riguardanti tutte le opzioni impostabili sono raggiungibili consultando la documentazione ufficiale quà: SpamAssassin configuration file.
un altro file di configurazione altrettanto importante è /etc/mail/spamassassin/init.pre , esso viene letto all'avvio del demone spamd e al suo interno sono indicati i plugin che devono essere caricati. Apriamo dunque il file:
emacs /etc/mail/spamassassin/init.pre

In automatico dovrebbero essere attivi i seguenti plugin:
loadplugin Mail::SpamAssassin::Plugin::URIDNSBL
loadplugin Mail::SpamAssassin::Plugin::Hashcash
loadplugin Mail::SpamAssassin::Plugin::SPF

aggiungiamo dunque nuove funzionalità al programma inserendo al suo interno il seguente codice:
loadplugin Mail::SpamAssassin::Plugin::Razor2
loadplugin Mail::SpamAssassin::Plugin::AutoLearnThreshold
loadplugin Mail::SpamAssassin::Plugin::DCC
loadplugin Mail::SpamAssassin::Plugin::TextCat


notate che senza di essi alcuni settaggi inseriti in local.cf potrebbero essere non riconosciuti, pertanto è sempre utile fare un check del file local.cf per assicurarsi che tutto sia ok:
spamassassin -d --lint


non può mancare uno script di avvio per daemontools e la gestione dei log:
mkdir -p /var/qmail/supervise/spamd/log
mkdir -p /var/log/spamd
chown qmaill /var/log/spamd
wget -O /var/qmail/bin/spamdctl http://www.piloz.it/qmail/script/spamdctl
chmod 755 /var/qmail/bin/spamdctl
ln -s /var/qmail/bin/spamdctl /usr/bin
wget -O /var/qmail/supervise/spamd/run http://www.piloz.it/qmail/script/spamd.run
chmod 755 /var/qmail/supervise/spamd/run
wget -O /var/qmail/supervise/spamd/log/run http://www.piloz.it/qmail/script/spamd.log.run
chmod 755 /var/qmail/supervise/spamd/log/run
mkdir /etc/mail/spamassassin/.spamassassin/
chown vpopmail /etc/mail/spamassassin/.spamassassin/
ln -s /var/qmail/supervise/spamd /service

ClamAV

ClamAV è un antivirus open source, prima di installarlo è necessario installare GMP.
GMP contiene librerie matematiche e hanno utili funzioni per aritmetica a precisione arbitraria.
wget ftp://ftp.gnu.org/gnu/gmp/gmp-4.2.1_rep.tar.bz2
tar -xvjf gmp-4.2.1_rep.tar.bz2
cd gmp-4.2.1_rep/
./configure
make
make check
make install

Creazione utenti e gruppi

groupadd clamav
useradd -g clamav clamav

Compilazione del pacchetto

wget http://kent.dl.sourceforge.net/sourceforge/clamav/clamav-0.88.6.tar.gz
tar -xvzf clamav-0.88.6.tar.gz
cd clamav-0.88.6/
./configure --sysconfdir=/etc
make
make install

Creazione degli script di startup e configurazione dei file

ClamAV si aggiorna mediante il tool freshclam, esso viene regolato tramite il file /etc/freshclam.conf
wget -O /etc/init.d/freshclam http://www.piloz.it/qmail/script/freshclam
chmod 755 /etc/init.d/freshclam
for i in 0 1 6; do ln -s /etc/init.d/freshclam /etc/rc${i}.d/K20freshclam; done
for i in 2 3 4 5; do ln -s /etc/init.d/freshclam /etc/rc${i}.d/S20freshclam; done

mv /etc/freshclam.conf /etc/freshclam.conf.old
wget -O /etc/freshclam.conf http://www.piloz.it/qmail/script/freshclam.conf
touch /var/log/freshclam.log
chmod 600 /var/log/freshclam.log
chown clamav /var/log/freshclam.log
/etc/init.d/freshclam start

successivamente allo start il log di freshmeat (/var/log/freshclam.log) dovrà contenere qualcosa di molto simile:
tail -6 /var/log/freshclam.log
freshclam daemon 0.88.6 (OS: linux-gnu, ARCH: i386, CPU: i686)
ClamAV update process started at Sun Nov 13 21:33:16 2005
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
daily.cvd is up to date (version: 1169, sigs: 1616, f-level: 6, builder: ccordes)

mkdir -p /var/log/clamd
chown clamav /var/log/clamd
wget -O /etc/clamd.conf http://www.piloz.it/qmail/script/clamd.conf
wget -O /var/qmail/bin/clamdctl http://www.piloz.it/qmail/script/clamdctl
chmod 755 /var/qmail/bin/clamdctl
ln -s /var/qmail/bin/clamdctl /usr/bin
mkdir -p /var/qmail/supervise/clamd/log
wget -O /var/qmail/supervise/clamd/run http://www.piloz.it/qmail/script/clamd.run
wget -O /var/qmail/supervise/clamd/log/run http://www.piloz.it/qmail/script/clamd.log.run
chmod 755 /var/qmail/supervise/clamd/run
chmod 755 /var/qmail/supervise/clamd/log/run
ln -s /var/qmail/supervise/clamd /service

simscan:

Simscan è un efficente programma che durante la conversazioni smtp aggiunge in qmail-smtpd il reject delle mail contenenti virus o aventi sull'header X-Spam-Flag settato a yes.
Prima di procedere nella compilazione di simscan si installa ripmime che garantisce pieno supporto a simscan.

Compilazione del pacchetto

wget http://www.pldaniels.com/ripmime/ripmime-1.4.0.6.tar.gz
tar -xvzf ripmime-1.4.0.6.tar.gz
cd ripmime-1.4.0.6
make
make install

ora si installa simscan:
wget http://www.piloz.it/qmail/simscan-1.2.tar.gz
tar -xvzf simscan-1.2.tar.gz
cd simscan-1.2
./configure --enable-user=clamav --enable-clamav=y --enable-spam=y --enable-spam-passthru=y
--enable-per-domain=y --enable-received=y --enable-attach=y --enable-clamavdb-path=/usr/local/share/clamav
make
make install-strip

Integrazione spamassassin-clamav in qmail

echo ":clam=yes,spam=yes,spam_passthru=yes,attach=.vbs:.lnk:.scr:.wsh:.hta:.pif" > /var/qmail/control/simcontrol

/var/qmail/bin/simscanmk
simscan cdb file built. /var/qmail/control/simcontrol.cdb
/var/qmail/bin/simscanmk -g
simscan versions cdb file built. /var/qmail/control/simversions.cdb

echo ':allow,QMAILQUEUE="/var/qmail/bin/simscan"' >> ~vpopmail/etc/tcp.smtp
qmailctl cdb

riepilogando con il file tcp.smtp così impostato:
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT="",QMAILQUEUE="/var/qmail/bin/simscan"
:allow,QMAILQUEUE="/var/qmail/bin/simscan"

  • il server sarà open-relay per tutte le connessioni provvenienti dello stesso server (127.0.0.1) o dalla lan (192.168.1.[1-254]);

  • verranno considerate sicure ed esenti da spam o virus le mail generate dallo stesso server;

  • saranno sottoposte ad un controllo antispam e antivirus tutte le mail provvenienti dalla lan o dall'esterno;

  • qualsiasi connessione esterna sarà abilitata all'invio solo tramite autenticazione sul server smtp.

qmailanalog:

qmailanalog è una collezione di strumenti che aiutano ad analizzare le attività di qmail interrogando i file di log generati da multilog.
Una volta compilati questi sorgenti e quelli di qlogtools (trattato poco sotto) si andrà a sfruttare uno script in bash per inoltrare il resoconto del mailserver verso un indirizzo email per un analisi personale.

Compilazione del pacchetto

wget http://cr.yp.to/software/qmailanalog-0.70.tar.gz
tar -xvzf qmailanalog-0.70.tar.gz
cd qmailanalog-0.70
patch -p1 < /var/src/netqmail-1.05/other-patches/qmailanalog-0.70.errno.patch
make
make setup check

i binari sono installati in /usr/local/qmailanalog/bin

qlogtools:

altri piccoli strumenti utili nell'analizzare i log di qmail.

Compilazione del pacchetto

wget http://www.piloz.it/qmail/qlogtools-3.1.tar.gz
tar -xvzf qlogtools-3.1.tar.gz
cd qlogtools-3.1
wget http://www.piloz.it/qmail/patch/qlogtools_errno.patch
patch < qlogtools_errno.patch
make
./installer

grazie qmailanalog a qlogtools potete ora adattare questo script qmail_report.sh reperito sul sito qmailrocks.org mettendolo magari in crontab dove farebbe un fioretto ;)

note:

file di log

i file di log generati da multilog utilizzano un timestamp in formato TAI64N, pertanto nella lettura è consigliato fare una conversione nel formato standard.
Russ Allbery ha scritto un programma apposito chiamato tai64nfrac.
è sufficente scaricare il sorgente
wget http://archives.eyrie.org/software/system/tai64nfrac-1.4.tar.gz
tar -xvzf tai64nfrac-1.4.tar.gz
cd tai64nfrac-1.4
make install

basterà ora leggere i file current usando una pipe:
cat current | tai64nlocal

escludere l'avvio automatico

per non far partire in automatico all'avvio uno dei tanti servizi gestiti da daemontools, (qmail-send, qmail-smtpd, qmail-pop3d, qmail-pop3ds, clamd o spamd) è sufficente creare un file vuoto dentro la cartella del servizio in /var/qmail/supervise , per esempio:
touch /var/qmail/supervise/qmail-pop3d/down
touch /var/qmail/supervise/qmail-pop3ds/down

showctl

per avere un report delle attuali impostazioni di qmail esiste il comando:
/var/qmail/bin/qmail-showctl

changelog

  • 14 ago 2006 - Aggiunto qlogtools;

  • 21 ago 2006 - Aggiornato courier-authlib dalla versione 0.57 all'ultima versione stable 0.58;

  • 21 ago 2006 - Aggiornato courier-imap dalla versione 4.0.6 all'ultima versione stable 4.1.1;

  • 21 ago 2006 - Aggiornato squirrelmail dalla versione 1.4.5 all'ultima versione stable 1.4.8;

  • 21 ago 2006 - Aggiornato autorespond dalla versione 2.0.4 alla versione 2.0.5;

  • 23 ago 2006 - Aggiornato razor-agents dalla versione 2.77 all'ultima versione stabile 2.82;

  • 06 nov 2006 - Aggiornato gmp (The GNU MP Bignum Library) dalla versione 4.1.4 all'ultima versione stabile 4.2.1;

  • 07 nov 2006 - Aggiornato vpopmail all'ultima versione stable 5.4.17;

  • 07 nov 2006 - Aggiornato ripMIME all'ultima versione stable 1.4.0.6;

  • 07 nov 2006 - Aggiornato ClamAV all'ultima versione stabile 0.88.6;

links

qmail: the Internet's MTA of choice di Dan Bernstein
The qmail home page
Patches correcting problem glibc-2.3.1
daemontools di Dan Bernstein
ucspi-tcp di Dan Bernstein
vpopmail Site di Inter7 Internet Technologies
cdb di Dan Bernstein
tai64nfrac di Russ Allbery
Benchmarking mbox versus maildir di Sam Varshavchik
Courier-IMAP Site
Squirrelmail Site
qmail-autoresponder di Bruce Guenter
qmailadmin Site di Inter7 Internet Technologies
SpamAssassin Site
Vipul's Razor (razor-agents)
CPAN (Comprehnsive Perl Archive Network)
DCC (Distributed Checksum Clearinghouse)
SpamAssassin Configuration Generator
ClamAV Project di Tomasz Kojm
GMP the GNU Multiple Precision Arithmetic Library
ripMIME di Paul L Daniels
simscan di Inter7 Internet Technologies
qmailanalog di Dan Bernstein
qlogtools di Bruce Guenter

Diritti

E' doveroso far notare che in alcuni casi questo howto si ispira e prende spunto da diversi documenti ben più interessanti reperibili in rete i cui link sono sotto indicati.
I link delle guide usate sono:
Bill's Linux Qmail Toaster di Bill Shupp
Life with qmail di Dave Sill
qmailrocks.org di Rocks Project's

Ringraziamenti:

Un grazie va agli amici del canale #linux-world ( Emanuele Giaquinta, Mirco Macrelli e Dario Buso ) per l'impegno dimostrato nell'aver letto, commentato, criticato e migliorato questo testo in anteprima, al mio collega di lavoro Massimo P. per la revisione del testo ed infine a Bill Shupp, Dave Sill e il team Rocks Project's perchè è tramite la loro documentazione se oggi uso qmail.

Licenza:

I contenuti di questo howto sarebbero dovuti esssere sotto licenza OpenContent. Dopo alcuni tentativi di registrazione non andati a buon fine non capendo il perchè non riuscissi a registrarmi, ho trovato questo articolo L'altra faccia del copyright dove vi è testualmente indicato:
< Il progetto OpenContent, che prevede anch'esso la realizzazione di un grande archivio telematico di opere e una lista degli autori che vi partecipano, è stato qualche mese fa per così dire 'congelato' per confluire nel più ampio e meglio organizzato progetto Creative Commons. >

Pertanto questa guida rimane registrata come il resto del sito su licenza Creative Commons riconoscendo conunque in prima persona il contributo dell'autore originario ma spiacevolmente ridistribuendola per mezzo di una licenza non identica (in senso stretto) a questa.
In conclusione gli argomenti possono essere sempre riprodotti, modificati e redistribuiti integralmente o in parte anche a fini commerciali purché siano soggetti ai termini di questa licenza. In qualsiasi caso deve essere riconosciuto l'autore originario e tutte le versioni modificate di questo documento devono essere soggette a questa stessa licenza.


   ultima modifica: Sun, 11 Feb 2007 20:03:41 +0100



      Home | I Miei Appunti | Screenshot Gallery | Download | Links | Autore      

Written by PiloZ, Powered by Emacs
Valid Apache Web Server!  Valid HTML 4.01!  Valid CSS!  
Powered by The GIMP  Opera pubblicata sotto una Licenza Creative Commons  hacker emblem