+ <div class="section" id="server-di-posta-postfix">
+ <h1><a class="toc-backref" href=
+ "#id73">8 Server di posta: Postfix</a></h1>
+
+ <p>Il server di posta che prenderemo in considerazione e'
+ Postfix, a seguire un estratto di un file di configurazione
+ <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
+ nelle <tt class="docutils literal"><span class=
+ "pre">/home</span></tt> degli utenti per la consegna della
+ posta:</p>
+
+ <p><tt class="docutils literal"><span class=
+ "pre">/etc/postfix/main.cf</span></tt>:</p>
+ <pre class="literal-block">
+# ...segue dalla riga ~30
+myhostname = 162.piffa.net
+alias_maps = hash:/etc/aliases
+alias_database = hash:/etc/aliases
+myorigin = 162.piffa.net
+mydestination = 162.piffa.net, localhost
+# Se non avete un ip pubblico e statico, con un adeguato record PTR
+# dovrete usare un realy host per l'invio della posta
+relayhost = smtp.piffa.net
+
+mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
+# Se dovete inviare la posta per i client della vostra LAN privata:
+# mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
+# E si faccia BEN ATTENZIONE a non diventare un open realay smtp
+
+
+# Per effettuare lo storaggio della posta nelle home directory degli utenti
+# in una Maildir invece che la Mailbox in /var/mail/utente
+# si disabiliti procmail
+#mailbox_command = procmail -a "$EXTENSION"
+
+# Storaggio della posta nella _cartella_ Maildir/ (si noti lo slash)
+# nella home dell'utente:
+home_mailbox = Maildir/
+mailbox_size_limit = 0
+recipient_delimiter = +
+inet_interfaces = all
+</pre>
+
+ <dl class="docutils">
+ <dt>E' disponibile un file di configurazione di esempio ben
+ piu' articolato e commentato::</dt>
+
+ <dd>/usr/share/postfix/main.cf.dist .</dd>
+ </dl>
+
+ <div class="section" id="test-del-server-smtp">
+ <h2><a class="toc-backref" href=
+ "#id74">8.1 Test del server smtp</a></h2>
+
+ <p>Per testare il corretto funzionamento del server di
+ posta si puo' procedere in vari modi.</p>
+
+ <ul class="simple">
+ <li>Spedire una mail a una casella locale / remota e
+ controllare i log (syslog)</li>
+
+ <li>Collegarsi via <em>telnet</em> al server di posta:
+ <a class="reference external" href=
+ "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
+
+ <li>usare una utility come SWAKS</li>
+ </ul>
+
+ <div class="section" id="swaks">
+ <h3><a class="toc-backref" href=
+ "#id75">8.1.1 Swaks</a></h3>
+
+ <dl class="docutils">
+ <dt>Per gli utenti meno esperti e' consigliabile
+ utilizzare <em>SWAKS</em>: si installi l'omonimo
+ pacchetto e si esegua un test con::</dt>
+
+ <dd>swaks --to <a class="reference external" href=
+ "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
+ --from <a class="reference external" href=
+ "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
+ </dl>
+
+ <p>Ecco un esempio di una sessione corretta:</p>
+ <pre class="literal-block">
+swaks --to andrea@piffa.net from andrea@mydomain.com
+=== Trying smtp.piffa.net:25...
+=== Connected to smtp.piffa.net.
+<- 220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
+ -> EHLO alice.mydomain.com
+<- 250-zoo.piffa.net
+<- 250-PIPELINING
+<- 250-SIZE 10240000
+<- 250-VRFY
+<- 250-ETRN
+<- 250-STARTTLS
+<- 250-ENHANCEDSTATUSCODES
+<- 250-8BITMIME
+<- 250 DSN
+ -> MAIL FROM:<root@alice.mydomain.com>
+<- 250 2.1.0 Ok
+ -> RCPT TO:<andrea@piffa.net>
+<- 250 2.1.5 Ok
+ -> DATA
+<- 354 End data with <CR><LF>.<CR><LF>
+ -> Date: Thu, 28 May 2009 13:11:19 +0200
+ -> To: andrea@piffa.net
+ -> From: root@alice.mydomain.com
+ -> Subject: test Thu, 28 May 2009 13:11:19 +0200
+ -> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
+ ->
+ -> This is a test mailing
+ ->
+ -> .
+<- 250 2.0.0 Ok: queued as 41FB261AFC
+ -> QUIT
+<- 221 2.0.0 Bye
+=== Connection closed with remote host.
+</pre>
+ </div>
+ </div>
+
+ <div class="section" id="imap-e-pop">
+ <h2><a class="toc-backref" href=
+ "#id76">8.2 Imap e pop</a></h2>
+
+ <p>Postfix e' un server SMTP, di conseguenza se volete che
+ i vostri utenti possano <em>scaricare</em> in locale la
+ posta generalmente volete mettere a loro disposizione un
+ server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
+
+ <dl class="docutils">
+ <dt>Pacchetti da installare</dt>
+
+ <dd>courier-imap courier-pop</dd>
+ </dl>
+
+ <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
+ funziona con le Mailbox in <tt class=
+ "docutils literal"><span class="pre">/var/mail/</span></tt>
+ .</p>
+ </div>
+
+ <div class="section" id="client-a-riga-di-comando">
+ <h2><a class="toc-backref" href=
+ "#id77">8.3 Client a riga di
+ comando</a></h2>
+
+ <p>Per testare il corretto funzionamento del server di
+ posta e' utile avere a disposizione delle utility per
+ inviare e leggere la posta: ovviamente da riga di
+ comando.</p>
+
+ <div class="section" id="mailx">
+ <h3><a class="toc-backref" href=
+ "#id78">8.3.1 mailx</a></h3>
+
+ <dl class="docutils">
+ <dt>Uno dei client piu' semplici, sopratutto per
+ inviare un messaggioi. e' sufficiente usare una formula
+ come::</dt>
+
+ <dd>mail <a class="reference external" href=
+ "mailto:utente@dominio.com">utente@dominio.com</a></dd>
+ </dl>
+
+ <p>Se il comando <tt class=
+ "docutils literal"><span class="pre">mail</span></tt> non
+ fosse disponibile si installi il pacchetto <tt class=
+ "docutils literal"><span class=
+ "pre">mailx</span></tt>.</p>
+
+ <p>Al primo prompt si digitera' l'oggetto, il testo del
+ messaggio (per terminare l'inserimento lasciare una riga
+ vuota, digitare un <tt class=
+ "docutils literal"><span class="pre">punto</span>
+ <span class="pre">+</span> <span class=
+ "pre">Invio</span></tt> su una riga vuota), la Carbon
+ Copy (se necessaria).</p>
+
+ <p>es:</p>
+ <pre class="literal-block">
+mail andrea@localhost
+Subject: Oggetto della mail
+Testo del messagio,
+per terminare il messaggio
+lasciare una riga vuota
+e un punto (poi Invio).
+
+.
+Cc:
+</pre>
+
+ <p>Per altrre opzioni si veda la pagina man.</p>
+ </div>
+
+ <div class="section" id="mutt">
+ <h3><a class="toc-backref" href=
+ "#id79">8.3.2 Mutt</a></h3>
+
+ <p>Mutt e' uno dei gestori di posta preferiti da chi
+ preferisce utilizzare l'interfaccia testuale per la
+ gestione della posta.</p>
+
+ <p>Mutt ha un file di configurazione <tt class=
+ "docutils literal"><span class="pre">.muttrc</span></tt>
+ nella <em>home</em> dell'utente, alcuni settaggi possono
+ essere utili:</p>
+
+ <dl class="docutils">
+ <dt>set folder="~/Maildir"</dt>
+
+ <dd>Per utilizzare <tt class=
+ "docutils literal"><span class=
+ "pre">/home/nome_utente/Maildir</span> <span class=
+ "pre">come</span> <span class=
+ "pre">mailbox</span></tt>, invece del default
+ <tt class="docutils literal"><span class=
+ "pre">/var/mail/nome_utente</span></tt>.</dd>
+
+ <dt>set editor="vim"</dt>
+
+ <dd>Utilizzare <tt class=
+ "docutils literal"><span class="pre">vim</span></tt>
+ come editor per comporre i messaggi.</dd>
+ </dl>
+
+ <p>Spesso e' utile poter <em>levvere al volo</em> la
+ Mailbox / Maildir di un utente sul server di posta, per
+ controllare se i messaggi vengono recapitati
+ correttamente:</p>
+ <pre class="literal-block">
+mutt -f /var/mail/utente
+mutt -f /home/utente/Maildir
+</pre>
+
+ <p>In modo analogo si puo' consultare al volo la propia
+ mailbox su un server remoto tramite IMAP/POP:</p>
+ <pre class="literal-block">
+mutt -f imap://nome_utente@piffa.net
+</pre>
+ </div>
+
+ <div class="section" id="web-client">
+ <h3><a class="toc-backref" href=
+ "#id80">8.3.3 Web client</a></h3>
+
+ <p>Per mettere a disposizione degli utenti un client web
+ per gestire la propria posta si installi il pacchetto:
+ <tt class="docutils literal"><span class=
+ "pre">squirrelmail</span></tt> . Ci sono tanti altri
+ client web disponibili: questo e' particolarmente
+ semplice. Naturalmente dovrete aver installato:
+ <tt class="docutils literal"><span class=
+ "pre">php5</span> <span class="pre">apache2</span></tt>
+ .</p>
+
+ <p>L'interfaccia dovrebbe essere disponibile all'url:
+ <tt class="docutils literal"><span class=
+ "pre">http://localhost/squirrelmail</span></tt> . Se
+ cosi' non fosse assicuratevi che Apache abbia incluso il
+ file di configurazione di squirrelmail:</p>
+ <pre class="literal-block">
+cd /etc/apache2/conf.d/
+ln -s /etc/squirrelmail/apache.conf ./
+</pre>
+ </div>
+ </div>
+
+ <div class="section" id="graylisting">
+ <h2><a class="toc-backref" href=
+ "#id81">8.4 Graylisting</a></h2>
+
+ <p>Il <em>graylisting</em> e' un sistema relativamente poco
+ invasivo, con un limitato consumo di risorse per limitare
+ lo <em>SPAM</em> in arrivo sul propio server di posta. Come
+ suggerisce il nome e' una via di mezzo tra una <em>white
+ list</em> (una lista di mittenti privilegiata, sempre
+ benvenuti) e una <em>black list</em> (mittenti
+ <em>bannati</em>, banditi dal poter inviare nuovi
+ messaggi).</p>
+
+ <p>Il funzionamento e' relativamente semplice: ogni
+ mittente sconosciuto viene immediatamente rifiutato con un
+ errore <em>non grave</em> come un <em>server non
+ disponibile, provare piu' tardi</em>. Questo inconveniente
+ non dovrebbe mettere in difficolta' un server di posta /
+ mittente legittimo, che dopo un periodo di attesa tentera'
+ nuovamente di inviare il messaggio ottenendo finalmente il
+ risultato atteso. Diversamente un <em>bot</em> per l'invio
+ di SPAM o un applicazione improvvisata (tipicamente di
+ derivazione virale) che stesse inviando il messaggio
+ <em>probabilmente</em> non insisterebbe, rinunciano ad
+ inviare il messaggio preferendo destinazioni meno
+ problematiche.</p>
+
+ <div class="section" id="abilitazione-in-postfix">
+ <h3><a class="toc-backref" href=
+ "#id82">8.4.1 Abilitazione in
+ Postfix</a></h3>
+
+ <p>Installare il pacchetto: <tt class=
+ "docutils literal"><span class="pre">postgrey</span></tt>
+ e aggiungere il file di configurazione di Postfix
+ <tt class="docutils literal"><span class=
+ "pre">/etc/postfix/main.cf</span></tt>:</p>
+ <pre class="literal-block">
+smtpd_recipient_restrictions =
+ permit_mynetworks,
+ reject_unauth_destination,
+ check_policy_service inet:127.0.0.1:60000
+</pre>
+ </div>
+
+ <div class="section" id="test">
+ <h3><a class="toc-backref" href=
+ "#id83">8.4.2 Test</a></h3>
+
+ <p>Inviando un messaggio il client dovrebbe ricevere un
+ iniziale messaggio di rifiuto del messaggio:</p>
+ <pre class="literal-block">
+swaks --to andrea@piffa.net from andrea@mydonain.com
+=== Trying smtp.piffa.net:25...
+=== Connected to smtp.piffa.net
+...
+<- 250 2.1.0 Ok
+ -> RCPT TO:<andrea@piffa.net>
+<** 450 4.2.0 <andrea@piffa.net>: Recipient address rejected:
+Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
+ -> QUIT
+<- 221 2.0.0 Bye
+=== Connection closed with remote host.
+</pre>
+
+ <p>A lato server si dovrebbe rilevare su <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
+ <pre class="literal-block">
+connect from alice.mydomain.com[65.98.21.97]
+May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
+ client_name=alice.mydomain.com,
+ client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
+May 28 14:53:34 r24266 postfix/smtpd[22538]:
+ NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
+ 450 4.2.0 <andrea@piffa.net>: Recipient address rejected: Greylisted,
+ see http://postgrey.schweikert.ch/help/piffa.net.html;
+ from=<root@alice.mydomain.com> to=<andrea@piffa.net>
+ proto=ESMTP helo=<alice.mydomain.com>
+May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
+</pre>
+ </div>
+
+ <div class="section" id="statistiche">
+ <h3><a class="toc-backref" href=
+ "#id84">8.4.3 Statistiche</a></h3>
+
+ <p>E' sempre utile poter tracciare qualche statistica
+ sulle percentuali di messaggi ricevuti, da chi, messaggi
+ rifiutati (e per quale motivo). Statistiche che attingono
+ dai soliti log del server di posta <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/syslog</span></tt> di default oltre che i
+ dedicati <tt class="docutils literal"><span class=
+ "pre">/var/log/mail</span></tt> .</p>
+
+ <p>Una utility semplice per analizzare l'attivita' del
+ propio server smtp potrebbe essere <tt class=
+ "docutils literal"><span class=
+ "pre">pflogsumm</span></tt> , installato il pacchetto la
+ si puo' invocare con:</p>
+ <pre class="literal-block">
+pflogsumm.pl /var/log/mail.log
+</pre>
+
+ <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/mail.log.0</span></tt></p>
+ </div>
+ </div>
+ </div>
+