Salve a tutti,
in questo articolo mi dedicherò alla spiegazione di come creare un bel server mail con linux con la relativa webmail.

Cosa ci server:
Prima di tutto:
capire come funziona pop3 e smtp (può aiutarvi anche nel testing)
Necessari:
linux (ma dai?)
qmail (è il più semplice\compatto\veloce\sicuro server email)
ucsitcp
daemontools
checkpassword
uebimiau (per la webmail, è molto semplice anch’esso quindi direi che fa
al caso nostro)

Sappiamo cosa ci serve ma non sappiamo come funzionano pop3 e smtp ? Non v
a bene ;)
Se sapete già come funzionano andate al prossimo paragrafo
Cominciamo con lo studio (base) dei due protocolli:
SMTP (Simple Mail Transfer Protocol)
Vi siete mai chiesti cosa succede quando inviate una mail ? Bhe sempliceme
nte il vostro client (o la vostra webmail)
si connettono al server (porta 25) e inviano i comandi necessari all’invio
del messaggio.
Facciamo un esempio pratico per capire:
lanciamo innanzitutto telnet:
telnet ip_del_server 25
una volta connessi il server risponderà:
220 nomeserver ESMTP
*questo tipo di risposta si avrà con un server qmail*
a questo punto scriviamo:
HELO dominio (es. HELO mail.it) > ci identifichiamo (come dire: ciao son
o mail.it)
risposta:
250 nomeserver
noi:
MAIL FROM:<nome@dominio.qualcosa> > indirizzo da cui proviene la mail
server:
250 ok
noi:
RCPT TO:<nome@dominio.qualcosa> > indirizzo a cui è destinata la mail
*ATTENZIONE*
A seconda di come è configurato il relaying è possibile che ci ritorni un
messaggio di errore, più tardi capirete
tutto
server:
250 ok
noi:
DATA > inizio procedura per invio test
server:
354 go ahead > a questo punto procediamo con la scrittura dell’email
noi:
scriviamo il testo, per concludere lasciamo una riga vuota e un .
quando il server risponde dandoci l’ok il messaggio è stato inviato, possi
amo uscire con QUIT
Ok, smtp è fatto. Avete capito come funziona ? semplice vero ? ok prosegui
amo con il pop3

POP3 (Post Office Protocol 3)
Quando scaricate la posta invece il vostro client o webmail si collega all
a porta 110 del server per scaricare
la posta. Ecco come funziona il tutto:
noi:
telnet ip_del_server 110
server:
+OK <numero.numero@dominio.qualcosa> > numero.numero è l’id della sessio
ne
noi:
USER username > il nostro username
server:
+OK
noi:
PASS password > la nostra password
server:
+OK
noi:
LIST > questo comando dice al server di inviarci la lista di tutte le e
mail presenti nel nostro account
server:
+OK
numero numero > il primo numero è l’indice della mail (1,2,3,4) il secon
do il peso (in byte)
.
noi:
RETR numero > al posto di numero mettiamo il numero della mail che vogliamo leggere
server:
ci stampa la mail specificata
noi:
QUIT > finita di leggere la posta possiamo quittare e andare a casa :>
*NOTA*
La filosofia di qmail è quella di non dare dettagli su sè stesso, infatti
solitamente altri server tipo sendmail
una volta conessi danno subito il numero di versione ecc ecc.. con qmail q
uesto non accade (meglio no ?)
Ok anche il pop3 è andato, ora cominciamo con l’installazione del server :
D
++
Procediamo con il download di tutti i software specificati:
andate su http://cr.yp.to/qmail.html e scaricatevi tutti i software sopra
specificati
Uebimiau lo trovate su http://www.uebimiau.org/
Bene, ora che avete scaricato tutto scompattate qmail.tar.gz in /usr/src (
da root)
# cd /usr/src
# tar zxvf qmail*.gz
(se il comando non dovesse funzionare copiate qmail*.gz in /usr/src)
# cd qmail*
Adesso bisognerebbe creare la directory home di qmail, consiglio di lascia
re quella di default (/var/qmail), ma nel
caso non vi vada bene editate il file confqmail (anche per tutti gli altr
i programmi se no verrano installati in
/var/qmail)
# mkdir /var/qmail
ora diamo i seguenti comandi (obbligatorio):
# 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
*NOTA*
Alcune distribuzioni (redhat per esempio) non mette nella variabile d’ambi
ente path la directory dove è situato
useradd, quindi potreste dover scrivere /usr/sbin/useradd (se la dir non è
questa cercatelo con locate useradd)
E’ inoltre possibile che sul vostro sistema sia installato adduser.. non c
ambia nulla, inserire solo il nome
giusto :D
ora compiliamo e installiamo:
# qmail setup check
configuriamo ora il dominio:
# ./configfast dominio.suffisso (es. mail.it)
adesso creiamo gli alias necessari per tutti i server di posta:
#cd ~alias
#echo nomeutente >.qmailroot
#echo nomeutente >.qmailpostmaster
#echo nomeutente >.qmailmailerdaemon
A questo punto dobbiamo compiere una scelta: che metodo usare per tenere i
messaggi sul server !
Abbiamo due possibilità, Maildir e Mailbox
la differenza fra i due (a parte che Maildir è migliore e che lo consiglio
a tutti :> ) è che:
Mailbox accoda tutti i messaggi in un unico file in /var/spool/mail/nomeut
ente (metodo scomodo)
Maildir usa 3 directory (new,cur,tmp) dove lasciare i messaggi in file dif
ferenti
Ripeto: USATE IL METODO MAILDIR :D
ora lanciate i comandi:
# cp /var/qmail/boot/home /var/qmail/rc
# pico /var/qmail/rc
*NOTA*
io uso pico, se usate vi lanciate vi /var/qmail/rc :>
Se avete seguito i miei consigli e scelto Maildir sostituiamo ./Mailbox con ./Maildir/
Siccome sono sicuro che avrete scelto Maildir (vero ?!) lanciate il comando
# /var/qmail/bin/maildirmake $HOME/Maildir
Se non lo avete fatto lanciate:
# ln s $HOME/Mailbox /var/spool/mail/`whoami`
*NOTA*
In questo modo whoami restituisce root, se volete scegliere un utente dive
rso scrivete: su nomeutente
Bene siamo a buon punto (insomma)
avviamo qmail
# csh cf ‘/var/qmail/rc &’
adesso lanciamo il comando:
# cat /var/log/maillog
dobbiamo trovare una riga tipo:
Jun 28 22:40:01 server qmail: 1056832801.057298 status: local 0/10 remote
0/20
Ok il server si è avviato :D
Se invece avete trovato un messaggio di errore (cosa piuttosto impossibile
) rifate tutto da capo o cercate
con google il nome dell’errore :>
Ora proviamo a testare se tutto va:
$ echo to: nomeutente /var/qmail/bin/qmailinject
*NOTA*
nomeutente sta per l’utente scelto prima :>
ora:
$ cd /home/nomeutente/Maildir/new
$ cat *
se l’output è nullo, qualcosa non è andato. Controllate i log per capire l
‘errore (su cat /var/log/maillog)
altrimenti, ok finora tutto a posto :D
++
Bene bene bene.. ora sotto con ucspitcp :>
Innanzitutto: cos’è ? bho non lo so ma installatelo che è meglio :0
Dunque stavo dicendo, ucspitcp è un programma clientserver scritto per qmail che offre alcune opzioni che altri
software simili non danno (xinetd). Per altre informazioni su ucspitcp le
ggetevi la documentazione che non ho voglia
di scrivere tutto ok ? :)
di nuovo:
# tar zxvf ucspitcp*
# cd ucspi*
# make
# make setup check
Finito ? si. :D Magari fosse tutto così vero ? … già …
++
Ci siamo quasi alla fine, non ce la fate più vero ? Immagino anche perchè
non ce la faccio più nemmeno io :D
Siamo arrivati a installare daemontools:

http://www.folug.linux.it/doc/

daemontools_and_qmail_italian.HOWTO.html
cominciate partendo da questo howto :)
se non avete voglia di leggerlo i comandi per installarlo sono i soliti:
# tar zxvf daemon*
# cd daemon*
# make
# make setup check
Finito pure questo :D
++
Checkpassword: vi avviso, se non installate questo pacchetto non potrete l
eggere le vostre mail perchè il pop3 vi
darà *sempre* errore durante il login. Infatti checkpassword serve per int
erfacciare qmail con le password di unix
ed esegue la nostra autenticazione.
Installiamolo con:
# tar zxvf check*
# cd check*
# make
# make setup check
E un altro è andato :D
++
Ora arriva la parte più difficile e pallosa: il RELAYING
Io me la sono cavata molto in fretta quindi cerco di essere il più breve p
ossibile:
questo concetto è importantissimo per evitare spam eccetera. Infatti serve
per configurare l’smtp in maniera tale
che invii email solo ad indirizzi che a noi vadano bene o da ip “fidati”
(tipo una sottorete)
Vediamo come configurarlo:
# echo “ip_del_client:allow,RELAYCLIENT=\”\”" >> /etc/tcp.smtp
# tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp </etc/tcp.smtp
# chmod 644 /etc/tcp.smtp*
se volete ad esempio abilitare una sottorete a usare il server smtp mettet
e l’ip della sottorete terminante con .0
(es. 10.54.45.0)
++
Eccoci alla fine:
mancano solo due concetti prima di proseguire
Alias, Avvio :D
# echo “nomeutente” > ~alias/.qmailalias
cosi avete creato un alias (mettetelo al posto di alias :> ) per nomeutent
e
esempietto: echo “pierino” > ~alias/.qmailwebmaster
capito ?
*NOTA*
se volete creare alias del tipo webmaster.fico al posto del punto mettete
i due punti “:”
Script di avvio:
INIZIO
#!/bin/sh
# script di avvio per qmail
#
PATH=/usr/local/bin:/var/qmail/bin:$PATH
[ f /var/qmail/bin/qmailsmtpd ] exit 0
RETVAL=0
prog=”qmail”
hostname=`hostname`
start() {
# Start daemons.
echo n $”Starting $prog: ”
QMAILDUID=`id u qmaild`
NOFILESGID=`id g qmaild`
csh cf ‘/var/qmail/rc &’
/usr/local/bin/tcpserver H R x /etc/tcp.smtp.cdb u$QMAILDUID
g$NOFILESGID 0 smtp /var/qmail/bin/qmailsmtpd & >/dev/null
2>&1
/usr/local/bin/tcpserver v H R 0 pop3 /var/qmail/bin/qmailpopu
p $hostname /bin/checkpassword /var/qmail/bin/qmailpop3d \
Maildir 2>&1 /var/qmail/bin/splogger pop3d &
echo n “qmail ”
RETVAL=$?
echo
[ $RETVAL eq 0 ] && touch /var/lock/subsys/svscan
return $RETVAL
}
stop() {
# Stop daemons.
echo n $”Shutting down $prog: ”
killall qmailsend
killall /usr/local/bin/tcpserver
RETVAL=$?
echo
[ $RETVAL eq 0 ] && rm f /var/lock/subsys/svscan
return $RETVAL
}
# See how we were called.
case “$1″ in
start)
start
;;
stop)
stop
;;
restartreload)
stop
start
RETVAL=$?
;;
*)
echo $”Usage: $0 {startstoprestart}”
exit 1
esac
exit $RETVAL
FINE
*NOTA*
Lo script di avvio l’ho trovato su qualche howto :>
copiatelo in /etc/init.d/qmail
# chmod +x /etc/init.d/qmail
ed ecco a voi qmail installato :D
Siete pronti ad inviare tante email ?? :>
w0w0w0w0w0w0w
no ????
uffa
mi sono dimenticato della webmail :D
++
::ULTIMO PASSAGGIO::LA WEBMAIL::
ci siamo quasi
# wget http://www.uebimiau.org/downloads/uebimiau2.7.2any.tar.gz
adesso decomprimete il file nella vostra directory http e rinominate la ca
rtella in “mail”
(mv nomecartella nomenuovacartella”
ci siete ?
ora molto semplicemente
# mkdir /tmp/uebimiau
# chmod 666 /tmp/uebimiau
ora aprite il file “inc/config.php” e configuriamolo:
$temporary_directory = “/tmp/uebimiau”
$smtp_server = “ip_server_smtp”;
$quota_limit = 2048; (mettere zero per dare spazio illimitato alla casella
, o un numero di kb a scelta)
$footer = “”; (in questo modo non verranno aggiunti testi alla fine di ogn
i mail, se volete mettere un messaggio
alla fine di ogni mail scrivetelo fra gli “” (es. $footer = “Questo server
mail r0xa”; ))
*NOTA*
La sezione server type dovete configurarla voi a secondo delle vostre esig
enze, è molto semplice comunque :)
++
ABBIAMO FINITO
anzi no :D
ricordatevi di configurare gli host:
mx.nomevostrodimio.suffisso
smtp.nomevostrodominio.suffisso
pop.nomevostrodominio.suffisso

manca un’ultima cosuccia
e chi usa\usava sendmail ? come se lo leva dalle palle ? :>
# killall sendmail
# chmod 0 /usr/lib/sendmail
# chmod 0 /usr/sbin/sendmail
# chmod 0 /usr/lib/sendmail.mx
# mv /usr/lib/sendmail /usr/lib/sendmail.bak
# mv /usr/sbin/sendmail /usr/sbin/sendmail.bak
# ln s /var/qmail/bin/sendmail /usr/lib/sendmail
# ln s /var/qmail/bin/sendmail /usr/sbin/sendmail
per finire cancellate lo script di avvio di sendmail :D

uMoR umorone@mailcity.com
++
Script per creare le directory mail per gli utenti:
Maildir
#!/bin/sh
/var/qmail/bin/maildirmake /etc/skel/Maildir
for utente in `ls /home`
do
/var/qmail/bin/maildirmake /home/$utente/Maildir
chown R $utente:users /home/$utente/Maildir
done

Mailbox
#!/bin/sh
for utente in `ls /home`
do
ln s /home/$utente/Mailbox /var/spool/mail/$utente
chown $utente:users $utente/Mailbox