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 pop3POP3 (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 πŸ˜€ 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 πŸ˜€ 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 πŸ˜€ 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 πŸ˜€ ++ 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. πŸ˜€ 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 πŸ˜€ 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 πŸ˜€ ++ 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 πŸ˜€ ++ 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 πŸ˜€ # 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 πŸ˜€ Siete pronti ad inviare tante email ?? :> w0w0w0w0w0w0w no ???? uffa mi sono dimenticato della webmail πŸ˜€ ++ ::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 πŸ˜€ ricordatevi di configurare gli host: mx.nomevostrodimio.suffisso smtp.nomevostrodominio.suffisso pop.nomevostrodominio.suffissomanca 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 πŸ˜€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 doneMailbox #!/bin/sh for utente in `ls /home` do ln s /home/$utente/Mailbox /var/spool/mail/$utente chown $utente:users $utente/Mailbox